tizen 2.3.1 release
[platform/kernel/u-boot.git] / drivers / serial / arm_dcc.c
index 5dfb02f..7b5ecb5 100644 (file)
@@ -27,7 +27,7 @@
  */
 
 #include <common.h>
-#include <serial.h>
+#include <stdio_dev.h>
 
 #if defined(CONFIG_CPU_V6)
 /*
 
 #define TIMEOUT_COUNT 0x4000000
 
-static int arm_dcc_init(void)
+#ifndef CONFIG_ARM_DCC_MULTI
+#define arm_dcc_init serial_init
+void serial_setbrg(void) {}
+#define arm_dcc_getc serial_getc
+#define arm_dcc_putc serial_putc
+#define arm_dcc_puts serial_puts
+#define arm_dcc_tstc serial_tstc
+#endif
+
+int arm_dcc_init(void)
 {
        return 0;
 }
 
-static int arm_dcc_getc(void)
+int arm_dcc_getc(void)
 {
        int ch;
        register unsigned int reg;
@@ -107,7 +116,7 @@ static int arm_dcc_getc(void)
        return ch;
 }
 
-static void arm_dcc_putc(char ch)
+void arm_dcc_putc(char ch)
 {
        register unsigned int reg;
        unsigned int timeout_count = TIMEOUT_COUNT;
@@ -123,7 +132,13 @@ static void arm_dcc_putc(char ch)
                write_dcc(ch);
 }
 
-static int arm_dcc_tstc(void)
+void arm_dcc_puts(const char *s)
+{
+       while (*s)
+               arm_dcc_putc(*s++);
+}
+
+int arm_dcc_tstc(void)
 {
        register unsigned int reg;
 
@@ -132,27 +147,24 @@ static int arm_dcc_tstc(void)
        return reg;
 }
 
-static void arm_dcc_setbrg(void)
-{
-}
+#ifdef CONFIG_ARM_DCC_MULTI
+static struct stdio_dev arm_dcc_dev;
 
-static struct serial_device arm_dcc_drv = {
-       .name   = "arm_dcc",
-       .start  = arm_dcc_init,
-       .stop   = NULL,
-       .setbrg = arm_dcc_setbrg,
-       .putc   = arm_dcc_putc,
-       .puts   = default_serial_puts,
-       .getc   = arm_dcc_getc,
-       .tstc   = arm_dcc_tstc,
-};
-
-void arm_dcc_initialize(void)
+int drv_arm_dcc_init(void)
 {
-       serial_register(&arm_dcc_drv);
-}
+       int rc;
 
-__weak struct serial_device *default_serial_console(void)
-{
-       return &arm_dcc_drv;
+       /* Device initialization */
+       memset(&arm_dcc_dev, 0, sizeof(arm_dcc_dev));
+
+       strcpy(arm_dcc_dev.name, "dcc");
+       arm_dcc_dev.ext = 0;    /* No extensions */
+       arm_dcc_dev.flags = DEV_FLAGS_INPUT | DEV_FLAGS_OUTPUT;
+       arm_dcc_dev.tstc = arm_dcc_tstc;        /* 'tstc' function */
+       arm_dcc_dev.getc = arm_dcc_getc;        /* 'getc' function */
+       arm_dcc_dev.putc = arm_dcc_putc;        /* 'putc' function */
+       arm_dcc_dev.puts = arm_dcc_puts;        /* 'puts' function */
+
+       return stdio_register(&arm_dcc_dev);
 }
+#endif