UARTCTRL_LOOPS bit is set in lpuart32_set_mctrl() for loopback mode, but nowhere clear this bit, it should be cleared when closing the uart port to avoid the loopback mode been enabled by default when reopening the uart. Fixes: 8a0c810d94f0 ("serial: fsl_lpuart: add loopback support") Signed-off-by: Sherry Sun <sherry.sun@xxxxxxx> --- Changes in V2: 1. Split one patch into four smaller patches to improve the commit messages and add Fixes tag as suggested by Ilpo. --- drivers/tty/serial/fsl_lpuart.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index a8f8e535077a..dbf8cccea105 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -1772,7 +1772,8 @@ static void lpuart32_shutdown(struct uart_port *port) /* disable Rx/Tx and interrupts */ temp = lpuart32_read(port, UARTCTRL); temp &= ~(UARTCTRL_TE | UARTCTRL_RE | UARTCTRL_ILIE | - UARTCTRL_TIE | UARTCTRL_TCIE | UARTCTRL_RIE); + UARTCTRL_TIE | UARTCTRL_TCIE | UARTCTRL_RIE | + UARTCTRL_LOOPS); lpuart32_write(port, temp, UARTCTRL); spin_unlock_irqrestore(&port->lock, flags); -- 2.17.1