MLK-14547 tty: serial: fsl_lpuart: con->write should call .uart_console_write()
authorAndy Duan <fugang.duan@nxp.com>
Wed, 29 Mar 2017 07:08:00 +0000 (15:08 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 20:21:44 +0000 (15:21 -0500)
earlycon con->write() should call .uart_console_write() to process
'\n' character.

Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
drivers/tty/serial/fsl_lpuart.c

index 2eabc9a..e886c35 100644 (file)
@@ -1673,28 +1673,6 @@ static void lpuart32_console_putchar(struct uart_port *port, int ch)
        lpuart32_write(ch, port->membase + UARTDATA);
 }
 
-static void
-lpuart32_early_write(struct console *con, const char *s, unsigned int n)
-{
-       struct earlycon_device *dev = con->data;
-
-       while (n--)
-               lpuart32_console_putchar(&dev->port, (int)*(s++));
-}
-
-static int __init
-lpuart32_early_console_setup(struct earlycon_device *device, const char *opt)
-{
-       if (!device->port.membase)
-               return -ENODEV;
-
-       device->con->write = lpuart32_early_write;
-       return 0;
-}
-EARLYCON_DECLARE(lpuart32, lpuart32_early_console_setup);
-OF_EARLYCON_DECLARE(lpuart32, "fsl,lpuart",
-                   lpuart32_early_console_setup);
-
 static void
 lpuart_console_write(struct console *co, const char *s, unsigned int count)
 {
@@ -1907,6 +1885,52 @@ static struct console lpuart32_console = {
        .data           = &lpuart_reg,
 };
 
+static void
+lpuart_early_write(struct console *con, const char *s, unsigned int n)
+{
+       struct earlycon_device *dev = con->data;
+
+       uart_console_write(&dev->port, s, n, lpuart_console_putchar);
+}
+
+static void
+lpuart32_early_write(struct console *con, const char *s, unsigned int n)
+{
+       struct earlycon_device *dev = con->data;
+
+       uart_console_write(&dev->port, s, n, lpuart32_console_putchar);
+}
+
+static int __init
+lpuart_early_console_setup(struct earlycon_device *device,
+                                         const char *opt)
+{
+       if (!device->port.membase)
+               return -ENODEV;
+
+       device->con->write = lpuart_early_write;
+       return 0;
+}
+
+static int __init
+lpuart32_early_console_setup(struct earlycon_device *device, const char *opt)
+{
+       if (!device->port.membase)
+               return -ENODEV;
+
+       device->con->write = lpuart32_early_write;
+       return 0;
+}
+
+OF_EARLYCON_DECLARE(lpuart, "fsl,vf610-lpuart",
+               lpuart_early_console_setup);
+OF_EARLYCON_DECLARE(lpuart32, "fsl,ls1021a-lpuart",
+               lpuart32_early_console_setup);
+OF_EARLYCON_DECLARE(lpuart32, "fsl,lpuart",
+               lpuart32_early_console_setup);
+EARLYCON_DECLARE(lpuart, lpuart_early_console_setup);
+EARLYCON_DECLARE(lpuart32, lpuart32_early_console_setup);
+
 #define LPUART_CONSOLE (&lpuart_console)
 #define LPUART32_CONSOLE       (&lpuart32_console)
 #else