Re: [PATCH v4 1/3] serial: imx: set_termios(): do not enable autoRTS if RTS is unset
From: Uwe Kleine-König <hidden>
Date: 2019-07-19 09:11:56
Also in:
linux-serial
On Fri, Jul 19, 2019 at 11:47:52AM +0300, Sergey Organov wrote:
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.
This is not understandable unless you read the reference manual. In terms understandable without manual, this patch does: Don't let the receiver hardware control the RTS output if it was requested to be inactive.
quoted hunk ↗ jump to hunk
Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de> Tested-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Sergey Organov <redacted> --- drivers/tty/serial/imx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 57d6e6b..95d7984 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c@@ -405,7 +405,8 @@ 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; + if (*ucr2 & UCR2_CTS) + *ucr2 |= UCR2_CTSC;
I think this patch is wrong or the commit log is insufficient. imx_uart_rts_auto() has only a single caller and there ucr2 & UCR2_CTS is never true. And CTSC isn't restored anywhere, is it? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel