Reception and transmission should not be enabled or disabled while in
INITM mode.
Although the manual does not explicitly forbid modifying RXEN/TXEN
during INITM, this mode is intended for other types of settings.

Fixes: 09864c1cdf5c ("tty: serial: Add linflexuart driver for S32V234")
Signed-off-by: Larisa Grigore <[email protected]>
---
 drivers/tty/serial/fsl_linflexuart.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/serial/fsl_linflexuart.c 
b/drivers/tty/serial/fsl_linflexuart.c
index a48240b0a5f2..768b3c67a614 100644
--- a/drivers/tty/serial/fsl_linflexuart.c
+++ b/drivers/tty/serial/fsl_linflexuart.c
@@ -350,8 +350,7 @@ static void linflex_setup_watermark(struct uart_port *sport)
        /* set UART bit to allow writing other bits */
        writel(LINFLEXD_UARTCR_UART, sport->membase + UARTCR);
 
-       cr = (LINFLEXD_UARTCR_RXEN | LINFLEXD_UARTCR_TXEN |
-             LINFLEXD_UARTCR_WL0 | LINFLEXD_UARTCR_UART);
+       cr = (LINFLEXD_UARTCR_WL0 | LINFLEXD_UARTCR_UART);
 
        writel(cr, sport->membase + UARTCR);
 
@@ -359,6 +358,9 @@ static void linflex_setup_watermark(struct uart_port *sport)
 
        writel(cr1, sport->membase + LINCR1);
 
+       cr |= (LINFLEXD_UARTCR_RXEN | LINFLEXD_UARTCR_TXEN);
+       writel(cr, sport->membase + UARTCR);
+
        ier = readl(sport->membase + LINIER);
        ier |= LINFLEXD_LINIER_DRIE;
        ier |= LINFLEXD_LINIER_DTIE;
-- 
2.47.0

Reply via email to