diff options
author | Atsushi Nemoto <atsushi.nemoto@sord.co.jp> | 2019-01-21 17:37:28 +0900 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-01-22 09:51:10 +0100 |
commit | 46dd6d779dccd4d1e73e61a4e22407cf3631c740 (patch) | |
tree | f44ccad7d3edac24ed111d9c1419aae81f6533b8 /drivers/tty | |
parent | b0b2735a2ba24111a2331b85169cc4cc8e06ae36 (diff) | |
download | linux-46dd6d779dccd4d1e73e61a4e22407cf3631c740.tar.bz2 |
serial: fsl_lpuart: consider TX FIFO too in lpuart32_tx_empty
The commit 3876a00fcb6b ("tty: serial: fsl_lpuart: consider TX FIFO
too in tx_empty") fixed lpuart_tx_empty only.
Fix lpuart32_tx_empty too.
Signed-off-by: Atsushi Nemoto <atsushi.nemoto@sord.co.jp>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty')
-rw-r--r-- | drivers/tty/serial/fsl_lpuart.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index 238998620349..5e13946edc3b 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -664,8 +664,18 @@ static unsigned int lpuart_tx_empty(struct uart_port *port) static unsigned int lpuart32_tx_empty(struct uart_port *port) { - return (lpuart32_read(port, UARTSTAT) & UARTSTAT_TC) ? - TIOCSER_TEMT : 0; + struct lpuart_port *sport = container_of(port, + struct lpuart_port, port); + unsigned long stat = lpuart32_read(port, UARTSTAT); + unsigned long sfifo = lpuart32_read(port, UARTFIFO); + + if (sport->dma_tx_in_progress) + return 0; + + if (stat & UARTSTAT_TC && sfifo & UARTFIFO_TXEMPT) + return TIOCSER_TEMT; + + return 0; } static bool lpuart_is_32(struct lpuart_port *sport) |