]> git.ipfire.org Git - thirdparty/linux.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>
Thu, 20 Mar 2025 15:30:44 +0000 (08:30 -0700)
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 4c97965ec43b30113a255661e6a64a6b476d7a9c..ad06b760cfca7edc6d1d99bf821802c50143d4f0 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);