|
@@ -63,6 +63,7 @@
|
|
|
|
|
|
/* interrupt clear register */
|
|
|
#define SPRD_ICLR 0x0014
|
|
|
+#define SPRD_ICLR_TIMEOUT BIT(13)
|
|
|
|
|
|
/* line control register */
|
|
|
#define SPRD_LCR 0x0018
|
|
@@ -298,7 +299,8 @@ static irqreturn_t sprd_handle_irq(int irq, void *dev_id)
|
|
|
return IRQ_NONE;
|
|
|
}
|
|
|
|
|
|
- serial_out(port, SPRD_ICLR, ~0);
|
|
|
+ if (ims & SPRD_IMSR_TIMEOUT)
|
|
|
+ serial_out(port, SPRD_ICLR, SPRD_ICLR_TIMEOUT);
|
|
|
|
|
|
if (ims & (SPRD_IMSR_RX_FIFO_FULL |
|
|
|
SPRD_IMSR_BREAK_DETECT | SPRD_IMSR_TIMEOUT))
|