From 78b28a7e838f45e00d1b38de4b23e149be272f3e Mon Sep 17 00:00:00 2001 From: Leonard Crestez <leonard.crestez@nxp.com> Date: Tue, 5 Mar 2019 19:24:11 +0200 Subject: [PATCH] MLK-21057 serial: imx: Restore proper init of shadow registers Upstream commit 3a0ab62f43de ("serial: imx: implement shadow registers for UCRx and UFCR") made the imx_uart_readl/writel functions use a "cache" to avoid reads/writers to hardware for some registers. Those values need to be initialized once at probe time using real reads from hardware; using imx_uart_readl for this is obviously non-functional Fixes: 372312842fe7 ("tty: serial: imx: use imx_uart_writel() and imx_uart_readl()") This is required for imx8mq to boot and likely fixes other things. Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Acked-by: Andy Duan <fugang.duan@nxp.com> --- drivers/tty/serial/imx.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 89479e905832f..2e58f19d52d4f 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -2340,11 +2340,11 @@ static int imx_uart_probe(struct platform_device *pdev) } /* initialize shadow register values */ - sport->ucr1 = imx_uart_readl(sport, UCR1); - sport->ucr2 = imx_uart_readl(sport, UCR2); - sport->ucr3 = imx_uart_readl(sport, UCR3); - sport->ucr4 = imx_uart_readl(sport, UCR4); - sport->ufcr = imx_uart_readl(sport, UFCR); + sport->ucr1 = readl(sport->port.membase + UCR1); + sport->ucr2 = readl(sport->port.membase + UCR2); + sport->ucr3 = readl(sport->port.membase + UCR3); + sport->ucr4 = readl(sport->port.membase + UCR4); + sport->ufcr = readl(sport->port.membase + UFCR); uart_get_rs485_mode(&pdev->dev, &sport->port.rs485); -- GitLab