[PATCH] serial: xuartps: Fix the early_console junk character issue

From: Michal Simek
Date: Wed Apr 04 2018 - 06:20:59 EST


From: Nava kishore Manne <nava.manne@xxxxxxxxxx>

In the early_console_setup is trying to access the unregister clock value,
so we are receiving some garbage clk value because of this wrong clk value
the early_console_setup is fail to set the required console baud rate.

This path fix this issue.

Signed-off-by: Nava kishore Manne <navam@xxxxxxxxxx>
Signed-off-by: Michal Simek <michal.simek@xxxxxxxxxx>
---

drivers/tty/serial/xilinx_uartps.c | 27 +--------------------------
1 file changed, 1 insertion(+), 26 deletions(-)

diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c
index 19d370779767..4176c3a0b4e8 100644
--- a/drivers/tty/serial/xilinx_uartps.c
+++ b/drivers/tty/serial/xilinx_uartps.c
@@ -1130,34 +1130,9 @@ static void cdns_early_write(struct console *con, const char *s,
static int __init cdns_early_console_setup(struct earlycon_device *device,
const char *opt)
{
- struct uart_port *port = &device->port;
-
- if (!port->membase)
+ if (!device->port.membase)
return -ENODEV;

- /* initialise control register */
- writel(CDNS_UART_CR_TX_EN|CDNS_UART_CR_TXRST|CDNS_UART_CR_RXRST,
- port->membase + CDNS_UART_CR);
-
- /* only set baud if specified on command line - otherwise
- * assume it has been initialized by a boot loader.
- */
- if (device->baud) {
- u32 cd = 0, bdiv = 0;
- u32 mr;
- int div8;
-
- cdns_uart_calc_baud_divs(port->uartclk, device->baud,
- &bdiv, &cd, &div8);
- mr = CDNS_UART_MR_PARITY_NONE;
- if (div8)
- mr |= CDNS_UART_MR_CLKSEL;
-
- writel(mr, port->membase + CDNS_UART_MR);
- writel(cd, port->membase + CDNS_UART_BAUDGEN);
- writel(bdiv, port->membase + CDNS_UART_BAUDDIV);
- }
-
device->con->write = cdns_early_write;

return 0;
--
1.9.1