serial: imx: set_termios(): do not enable autoRTS if RTS is unset
Don't let receiver hardware automatically control RTS output if it was requested to be inactive. To ensure this, set_termios() shouldn't set UCR2_CTSC bit if UCR2_CTS (=TIOCM_RTS) is cleared. Added corresponding check in imx_uart_rts_auto() to fix this. Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de> Tested-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Sergey Organov <sorganov@gmail.com> Link: https://lore.kernel.org/r/1564167161-3972-2-git-send-email-sorganov@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
72d819612a
commit
a25aee902e
|
@ -405,7 +405,12 @@ static void imx_uart_rts_inactive(struct imx_port *sport, u32 *ucr2)
|
|||
/* called with port.lock taken and irqs caller dependent */
|
||||
static void imx_uart_rts_auto(struct imx_port *sport, u32 *ucr2)
|
||||
{
|
||||
*ucr2 |= UCR2_CTSC;
|
||||
/*
|
||||
* Only let receiver control RTS output if we were not requested to have
|
||||
* RTS inactive (which then should take precedence).
|
||||
*/
|
||||
if (*ucr2 & UCR2_CTS)
|
||||
*ucr2 |= UCR2_CTSC;
|
||||
}
|
||||
|
||||
/* called with port.lock taken and irqs off */
|
||||
|
|
Loading…
Reference in New Issue