]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
serial: fsl_lpuart: clear parity enable bit when disable parity
authorAndy Duan <fugang.duan@nxp.com>
Tue, 16 Oct 2018 07:32:22 +0000 (07:32 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Feb 2019 18:44:51 +0000 (19:44 +0100)
[ Upstream commit 397bd9211fe014b347ca8f95a8f4e1017bac1aeb ]

Current driver only enable parity enable bit and never clear it
when user set the termios. The fix clear the parity enable bit when
PARENB flag is not set in termios->c_cflag.

Cc: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Andy Duan <fugang.duan@nxp.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/tty/serial/fsl_lpuart.c

index e2ec04904f54d20d1670aac3f6ea254640115b9c..5c471c3481bdf300d49e02ce7af9bc22cf39356f 100644 (file)
@@ -1344,6 +1344,8 @@ lpuart_set_termios(struct uart_port *port, struct ktermios *termios,
                        else
                                cr1 &= ~UARTCR1_PT;
                }
+       } else {
+               cr1 &= ~UARTCR1_PE;
        }
 
        /* ask the core to calculate the divisor */
@@ -1487,6 +1489,8 @@ lpuart32_set_termios(struct uart_port *port, struct ktermios *termios,
                        else
                                ctrl &= ~UARTCTRL_PT;
                }
+       } else {
+               ctrl &= ~UARTCTRL_PE;
        }
 
        /* ask the core to calculate the divisor */