/*
 * Copyright (C) 2012-2014 Panasonic Corporation
 * Copyright (C) 2015-2016 Socionext Inc.
 *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#ifndef MICRO_SUPPORT_CARD_H
#define MICRO_SUPPORT_CARD_H

#if defined(CONFIG_MICRO_SUPPORT_CARD)
void support_card_reset(void);
void support_card_init(void);
void support_card_late_init(void);
void led_puts(const char *s);
#else
static inline void support_card_reset(void)
{
}

static inline void support_card_init(void)
{
}

static inline void support_card_late_init(void)
{
}

static inline void led_puts(const char *s)
{
}
#endif

#endif /* MICRO_SUPPORT_CARD_H */
