diff options
author | Shawn Guo <shawn.guo@linaro.org> | 2016-09-17 08:14:38 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-09-22 11:45:08 +0200 |
commit | e06690bff6ab642e0ab1b22e5bec532f6faf2f5d (patch) | |
tree | 3a974d3b7b1ca2b5009d9b4c8f36713a01c9fa45 /drivers/tty/serial/amba-pl011.c | |
parent | serial: mxs-auart: Fix missing clk_disable_unprepare() on error in mxs_get_cl... (diff) | |
download | linux-e06690bff6ab642e0ab1b22e5bec532f6faf2f5d.tar.xz linux-e06690bff6ab642e0ab1b22e5bec532f6faf2f5d.zip |
tty: amba-pl011: uart_amba_port is not available with earlycon function
Commit 0e125a5facf8 ("tty: amba-pl011: define flag register bits for ZTE
device") changes earlycon function pl011_putc() to use a pointer to
uart_amba_port. This causes a regression when earlycon is enabled,
because uart_amba_port is not available yet at earlycon time. Let's
revert the change on pl011_putc() to fix the regression.
The earlycon support for ZTE device can probably be added later by
declaring a new earlycon setup function with a vendor specific
compatible.
Reported-by: Sudeep Holla <sudeep.holla@arm.com>
Fixes: 0e125a5facf8 ("tty: amba-pl011: define flag register bits for ZTE device")
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/amba-pl011.c')
-rw-r--r-- | drivers/tty/serial/amba-pl011.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index 0b78b04e895e..2d9ffab16ffe 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -2330,16 +2330,13 @@ static struct console amba_console = { static void pl011_putc(struct uart_port *port, int c) { - struct uart_amba_port *uap = - container_of(port, struct uart_amba_port, port); - while (readl(port->membase + UART01x_FR) & UART01x_FR_TXFF) cpu_relax(); if (port->iotype == UPIO_MEM32) writel(c, port->membase + UART01x_DR); else writeb(c, port->membase + UART01x_DR); - while (readl(port->membase + UART01x_FR) & uap->vendor->fr_busy) + while (readl(port->membase + UART01x_FR) & UART01x_FR_BUSY) cpu_relax(); } |