]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARM: meson: serial: ensure console port uart enabled
authorBen Dooks <ben.dooks@codethink.co.uk>
Wed, 18 Nov 2015 14:41:14 +0000 (14:41 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 14 Dec 2015 03:59:48 +0000 (19:59 -0800)
Ensure the UART's transmitter is enabled when meson_console_putchar is
called. If not, then the console output is corrupt (the hardware seems
to try and send /something/ even if the TX is disabled).

This fixes corrupt console output on events such as trying to reboot the
system since the console tx may be called after drivers shutdown method has
been called.

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Reported-by: Edward Cragg <edward.cragg@codethink.co.uk>
Tested-by: Carlo Caione <carlo@endlessm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/meson_uart.c

index 54d1b9591b8da16a73a637025f91c8c513a8dba7..c7bad2b5aa4940323c1df61ed170928b454c7858 100644 (file)
@@ -472,6 +472,7 @@ static void meson_serial_console_write(struct console *co, const char *s,
        struct uart_port *port;
        unsigned long flags;
        int locked;
+       u32 val;
 
        port = meson_ports[co->index];
        if (!port)
@@ -487,6 +488,9 @@ static void meson_serial_console_write(struct console *co, const char *s,
                locked = 1;
        }
 
+       val = readl(port->membase + AML_UART_CONTROL);
+       writel(val | AML_UART_TX_EN, port->membase + AML_UART_CONTROL);
+
        uart_console_write(port, s, count, meson_console_putchar);
 
        if (locked)