tty: serial: owl-uart, send x_char even if stopped
authorJiri Slaby <jslaby@suse.cz>
Mon, 11 Apr 2022 10:45:05 +0000 (12:45 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 14 Apr 2022 16:27:18 +0000 (18:27 +0200)
Flow control characters should be sent even if the TX is stopped. So fix
owl-uart to behave the same as other drivers.

This unification also allows the use of the TX helper in the future.

Cc: "Andreas Färber" <afaerber@suse.de>
Cc: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20220411104506.8990-3-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/owl-uart.c

index 5250bd7d390a4ad7d64f41a59d96201b5443d51a..5ff7c89aeb065730f0afa481291d66a2076481c7 100644 (file)
@@ -184,9 +184,6 @@ static void owl_uart_send_chars(struct uart_port *port)
        struct circ_buf *xmit = &port->state->xmit;
        unsigned int ch;
 
-       if (uart_tx_stopped(port))
-               return;
-
        if (port->x_char) {
                while (!(owl_uart_read(port, OWL_UART_STAT) & OWL_UART_STAT_TFFU))
                        cpu_relax();
@@ -195,6 +192,9 @@ static void owl_uart_send_chars(struct uart_port *port)
                port->x_char = 0;
        }
 
+       if (uart_tx_stopped(port))
+               return;
+
        while (!(owl_uart_read(port, OWL_UART_STAT) & OWL_UART_STAT_TFFU)) {
                if (uart_circ_empty(xmit))
                        break;