serial: sc16is7xx: Don't spin if no data received
authorPhil Elwell <phil@raspberrypi.com>
Fri, 2 Feb 2024 15:41:29 +0000 (15:41 +0000)
committerDom Cobley <popcornmix@gmail.com>
Mon, 19 Feb 2024 11:32:49 +0000 (11:32 +0000)
There are multiple causes of interrupts, errors being one, and only the
receipt of data warrants continued polling.

See: https://github.com/raspberrypi/linux/issues/2676

Signed-off-by: Phil Elwell <phil@raspberrypi.com>
drivers/tty/serial/sc16is7xx.c

index f75b8bc..7690c85 100644 (file)
@@ -760,6 +760,8 @@ static bool sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno)
 
                if (rxlen)
                        sc16is7xx_handle_rx(port, rxlen, iir);
+               else
+                       rc = false;
                break;
                /* CTSRTS interrupt comes only when CTS goes inactive */
        case SC16IS7XX_IIR_CTSRTS_SRC: