]> git.sur5r.net Git - u-boot/blobdiff - drivers/serial/serial_ks8695.c
serial: arm: Implement CONFIG_SERIAL_MULTI into ks8695 serial driver
[u-boot] / drivers / serial / serial_ks8695.c
index aacd1be630b1800303f1b4cae793bd0bb9b58ef8..b3af388942dcbc736b348339ad2c74ad5f677bbd 100644 (file)
@@ -20,6 +20,8 @@
 
 #include <common.h>
 #include <asm/arch/platform.h>
+#include <serial.h>
+#include <linux/compiler.h>
 
 #ifndef CONFIG_SERIAL1
 #error "Bad: you didn't configure serial ..."
@@ -54,7 +56,7 @@ struct ks8695uart {
 int serial_console = 1;
 
 
-void serial_setbrg(void)
+static void ks8695_serial_setbrg(void)
 {
        volatile struct ks8695uart *uartp = KS8695_UART_ADDR;
 
@@ -63,14 +65,14 @@ void serial_setbrg(void)
        uartp->LCR = KS8695_UART_LINEC_WLEN8;
 }
 
-int serial_init(void)
+static int ks8695_serial_init(void)
 {
        serial_console = 1;
        serial_setbrg();
        return 0;
 }
 
-void serial_raw_putc(const char c)
+static void ks8695_serial_raw_putc(const char c)
 {
        volatile struct ks8695uart *uartp = KS8695_UART_ADDR;
        int i;
@@ -83,16 +85,16 @@ void serial_raw_putc(const char c)
        uartp->TX = c;
 }
 
-void serial_putc(const char c)
+static void ks8695_serial_putc(const char c)
 {
        if (serial_console) {
-               serial_raw_putc(c);
+               ks8695_serial_raw_putc(c);
                if (c == '\n')
-                       serial_raw_putc('\r');
+                       ks8695_serial_raw_putc('\r');
        }
 }
 
-int serial_tstc(void)
+static int ks8695_serial_tstc(void)
 {
        volatile struct ks8695uart *uartp = KS8695_UART_ADDR;
        if (serial_console)
@@ -100,14 +102,14 @@ int serial_tstc(void)
        return 0;
 }
 
-void serial_puts(const char *s)
+static void ks8695_serial_puts(const char *s)
 {
        char c;
        while ((c = *s++) != 0)
                serial_putc(c);
 }
 
-int serial_getc(void)
+static int ks8695_serial_getc(void)
 {
        volatile struct ks8695uart *uartp = KS8695_UART_ADDR;
 
@@ -115,3 +117,56 @@ int serial_getc(void)
                ;
        return (uartp->RX);
 }
+
+#ifdef CONFIG_SERIAL_MULTI
+static struct serial_device ks8695_serial_drv = {
+       .name   = "ks8695_serial",
+       .start  = ks8695_serial_init,
+       .stop   = NULL,
+       .setbrg = ks8695_serial_setbrg,
+       .putc   = ks8695_serial_putc,
+       .puts   = ks8695_serial_puts,
+       .getc   = ks8695_serial_getc,
+       .tstc   = ks8695_serial_tstc,
+};
+
+void ks8695_serial_initialize(void)
+{
+       serial_register(&ks8695_serial_drv);
+}
+
+__weak struct serial_device *default_serial_console(void)
+{
+       return &ks8695_serial_drv;
+}
+#else
+int serial_init(void)
+{
+       return ks8695_serial_init();
+}
+
+void serial_setbrg(void)
+{
+       ks8695_serial_setbrg();
+}
+
+void serial_putc(const char c)
+{
+       ks8695_serial_putc(c);
+}
+
+void serial_puts(const char *s)
+{
+       ks8695_serial_puts(s);
+}
+
+int serial_getc(void)
+{
+       return ks8695_serial_getc();
+}
+
+int serial_tstc(void)
+{
+       return ks8695_serial_tstc();
+}
+#endif