diff options
Diffstat (limited to 'drivers/tty/serial/sprd_serial.c')
| -rw-r--r-- | drivers/tty/serial/sprd_serial.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c index 90996ad97b37..e902494ebbd5 100644 --- a/drivers/tty/serial/sprd_serial.c +++ b/drivers/tty/serial/sprd_serial.c @@ -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)) @@ -729,8 +731,8 @@ static int sprd_probe(struct platform_device *pdev)  	irq = platform_get_irq(pdev, 0);  	if (irq < 0) { -		dev_err(&pdev->dev, "not provide irq resource\n"); -		return -ENODEV; +		dev_err(&pdev->dev, "not provide irq resource: %d\n", irq); +		return irq;  	}  	up->irq = irq;  | 
