On Wed, 9 Nov 2022, delisun wrote: > Clearing the RX FIFO will cause data loss. > Copy the pl011_enabl_interrupts implementation, and remove the clear > interrupt and FIFO part of the code. > You should add Fixes tag. -- i. > Signed-off-by: delisun <delisun@xxxxxxxxxxxx> > --- > drivers/tty/serial/amba-pl011.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c > index 5cdced39eafd..08034e5dcec0 100644 > --- a/drivers/tty/serial/amba-pl011.c > +++ b/drivers/tty/serial/amba-pl011.c > @@ -1828,8 +1828,17 @@ static void pl011_enable_interrupts(struct uart_amba_port *uap) > static void pl011_unthrottle_rx(struct uart_port *port) > { > struct uart_amba_port *uap = container_of(port, struct uart_amba_port, port); > + unsigned long flags; > > - pl011_enable_interrupts(uap); > + spin_lock_irqsave(&uap->port.lock, flags); > + > + uap->im = UART011_RTIM; > + if (!pl011_dma_rx_running(uap)) > + uap->im |= UART011_RXIM; > + > + pl011_write(uap->im, uap, REG_IMSC); > + > + spin_unlock_irqrestore(&uap->port.lock, flags);