]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
serial: stm32: do not deassert RS485 RTS GPIO prematurely
authorCheick Traore <cheick.traore@foss.st.com>
Thu, 20 Mar 2025 15:25:40 +0000 (16:25 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Apr 2025 08:11:12 +0000 (10:11 +0200)
commit 2790ce23951f0c497810c44ad60a126a59c8d84c upstream.

If stm32_usart_start_tx is called with an empty xmit buffer, RTS GPIO
could be deasserted prematurely, as bytes in TX FIFO are still
transmitting.
So this patch remove rts disable when xmit buffer is empty.

Fixes: d7c76716169d ("serial: stm32: Use TC interrupt to deassert GPIO RTS in RS485 mode")
Cc: stable <stable@kernel.org>
Signed-off-by: Cheick Traore <cheick.traore@foss.st.com>
Link: https://lore.kernel.org/r/20250320152540.709091-1-cheick.traore@foss.st.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/stm32-usart.c

index 1ec5d8c3aef8ddbca615a149c2fe81c90c83a22b..0854ad8c90cd240f47c81380a1178a0367fdaf58 100644 (file)
@@ -965,10 +965,8 @@ static void stm32_usart_start_tx(struct uart_port *port)
 {
        struct tty_port *tport = &port->state->port;
 
-       if (kfifo_is_empty(&tport->xmit_fifo) && !port->x_char) {
-               stm32_usart_rs485_rts_disable(port);
+       if (kfifo_is_empty(&tport->xmit_fifo) && !port->x_char)
                return;
-       }
 
        stm32_usart_rs485_rts_enable(port);