serial: uartps: Add TACTIVE check in cdns_uart_tx_empty function
authorRaviteja Narayanam <raviteja.narayanam@xilinx.com>
Thu, 19 Mar 2020 09:44:51 +0000 (15:14 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Mar 2020 11:23:04 +0000 (12:23 +0100)
Make sure that all bytes are transmitted out of Uart by monitoring
CDNS_UART_SR_TACTIVE bit as well.

Signed-off-by: Raviteja Narayanam <raviteja.narayanam@xilinx.com>
Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Acked-by: Maarten Brock <m.brock@vanmierlo.com>
Link: https://lore.kernel.org/r/e2514818af5973be291cc117d07739f068b71639.1584610774.git.shubhrajyoti.datta@xilinx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/xilinx_uartps.c

index f3658fc490297f1dfa5869f9fa655425b6beade9..6b26f767768ebb82c83e04cc436d944e029b8b68 100644 (file)
@@ -650,8 +650,8 @@ static unsigned int cdns_uart_tx_empty(struct uart_port *port)
        unsigned int status;
 
        status = readl(port->membase + CDNS_UART_SR) &
-                               CDNS_UART_SR_TXEMPTY;
-       return status ? TIOCSER_TEMT : 0;
+                      (CDNS_UART_SR_TXEMPTY | CDNS_UART_SR_TACTIVE);
+       return (status == CDNS_UART_SR_TXEMPTY) ? TIOCSER_TEMT : 0;
 }
 
 /**