tty: serial: sh-sci: Fix end of transmission on SCI
authorBiju Das <biju.das.jz@bp.renesas.com>
Wed, 12 Apr 2023 14:50:53 +0000 (15:50 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Apr 2023 11:47:33 +0000 (13:47 +0200)
We need to set TE to "0" (i.e., disable serial transmission) to
get the expected behavior of the end of serial transmission.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Link: https://lore.kernel.org/r/20230412145053.114847-6-biju.das.jz@bp.renesas.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/sh-sci.c

index 5c9ae69c0555d09e711225f6d3f5bbdd4be47b74..7c9457962a3df89658eba7da008d135cd84037dc 100644 (file)
@@ -847,6 +847,11 @@ static void sci_transmit_chars(struct uart_port *port)
                } else if (!uart_circ_empty(xmit) && !stopped) {
                        c = xmit->buf[xmit->tail];
                        xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
+               } else if (port->type == PORT_SCI && uart_circ_empty(xmit)) {
+                       ctrl = serial_port_in(port, SCSCR);
+                       ctrl &= ~SCSCR_TE;
+                       serial_port_out(port, SCSCR, ctrl);
+                       return;
                } else {
                        break;
                }