]> xenbits.xensource.com Git - people/aperard/linux.git/commitdiff
tty: serial: samsung: fix tx_empty() to return TIOCSER_TEMT
authorTudor Ambarus <tudor.ambarus@linaro.org>
Fri, 19 Jan 2024 10:45:08 +0000 (10:45 +0000)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:20:57 +0000 (18:20 -0400)
[ Upstream commit 314c2b399288f0058a8c5b6683292cbde5f1531b ]

The core expects for tx_empty() either TIOCSER_TEMT when the tx is
empty or 0 otherwise. s3c24xx_serial_txempty_nofifo() might return
0x4, and at least uart_get_lsr_info() tries to clear exactly
TIOCSER_TEMT (BIT(1)). Fix tx_empty() to return TIOCSER_TEMT.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Link: https://lore.kernel.org/r/20240119104526.1221243-2-tudor.ambarus@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/tty/serial/samsung_tty.c

index aa2c51b84116fa313a23e1f480d4ae82081de860..589daed19e625aff6c42c8c4f6f5605fde5bc73e 100644 (file)
@@ -996,11 +996,10 @@ static unsigned int s3c24xx_serial_tx_empty(struct uart_port *port)
                if ((ufstat & info->tx_fifomask) != 0 ||
                    (ufstat & info->tx_fifofull))
                        return 0;
-
-               return 1;
+               return TIOCSER_TEMT;
        }
 
-       return s3c24xx_serial_txempty_nofifo(port);
+       return s3c24xx_serial_txempty_nofifo(port) ? TIOCSER_TEMT : 0;
 }
 
 /* no modem control lines */