ARM: uniphier: refactor LED function

The macro, led_write(), is now only used in C sources.  There is no
more reason to keep the tricky assembly macro.  Replace it with a
new C function led_puts().

Also, rename board.h to micro-support-card.h.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
diff --git a/arch/arm/mach-uniphier/support_card.c b/arch/arm/mach-uniphier/support_card.c
index ef4576d..f833306 100644
--- a/arch/arm/mach-uniphier/support_card.c
+++ b/arch/arm/mach-uniphier/support_card.c
@@ -5,8 +5,9 @@
  */
 
 #include <common.h>
+#include <linux/ctype.h>
 #include <linux/io.h>
-#include <mach/board.h>
+#include <mach/micro-support-card.h>
 
 #define MICRO_SUPPORT_CARD_RESET	\
 				((CONFIG_SUPPORT_CARD_BASE) + 0x000D0034)
@@ -155,3 +156,73 @@
 {
 	detect_num_flash_banks();
 }
+
+static const u8 ledval_num[] = {
+	0x7e, /* 0 */
+	0x0c, /* 1 */
+	0xb6, /* 2 */
+	0x9e, /* 3 */
+	0xcc, /* 4 */
+	0xda, /* 5 */
+	0xfa, /* 6 */
+	0x4e, /* 7 */
+	0xfe, /* 8 */
+	0xde, /* 9 */
+};
+
+static const u8 ledval_alpha[] = {
+	0xee, /* A */
+	0xf8, /* B */
+	0x72, /* C */
+	0xbc, /* D */
+	0xf2, /* E */
+	0xe2, /* F */
+	0x7a, /* G */
+	0xe8, /* H */
+	0x08, /* I */
+	0x3c, /* J */
+	0xea, /* K */
+	0x70, /* L */
+	0x6e, /* M */
+	0xa8, /* N */
+	0xb8, /* O */
+	0xe6, /* P */
+	0xce, /* Q */
+	0xa0, /* R */
+	0xc8, /* S */
+	0x8c, /* T */
+	0x7c, /* U */
+	0x54, /* V */
+	0xfc, /* W */
+	0xec, /* X */
+	0xdc, /* Y */
+	0xa4, /* Z */
+};
+
+static u8 char2ledval(char c)
+{
+	if (isdigit(c))
+		return ledval_num[c - '0'];
+	else if (isalpha(c))
+		return ledval_alpha[toupper(c) - 'A'];
+
+	return 0;
+}
+
+void led_puts(const char *s)
+{
+	int i;
+	u32 val = 0;
+
+	if (!s)
+		return;
+
+	for (i = 0; i < 4; i++) {
+		val <<= 8;
+		val |= char2ledval(*s);
+		if (*s != '\0')
+			s++;
+	}
+
+	writel(~val, CONFIG_SUPPORT_CARD_LED_BASE);
+}