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