diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index 9df9bc8f9dfdcc0d3bc3b8297a37bf045c5a00e5..76030151250974e4738bb1aaab1668d51f040ff3 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -1438,6 +1438,10 @@ static bool pl011_tx_chars(struct uart_amba_port *uap, bool from_irq) if (likely(from_irq) && count-- == 0) break; + if (likely(from_irq) && count == 0 && + pl011_read(uap, REG_FR) & UART01x_FR_TXFF) + break; + if (!pl011_tx_char(uap, xmit->buf[xmit->tail], from_irq)) break;