mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 02:39:48 +00:00
serial/nwpserial: Fix wrong register read address and add interrupt acknowledge.
The receive interrupt routine checks the wrong register if the receive fifo is empty. Further an explicit interrupt acknowledge write is introduced. In some circumstances another interrupt was issued. Signed-off-by: Benjamin Krill <ben@codiert.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
37cd8ed90f
commit
951c4df5b7
1 changed files with 3 additions and 1 deletions
|
@ -145,11 +145,13 @@ static irqreturn_t nwpserial_interrupt(int irq, void *dev_id)
|
|||
ch = dcr_read(up->dcr_host, UART_RX);
|
||||
if (up->port.ignore_status_mask != NWPSERIAL_STATUS_RXVALID)
|
||||
tty_insert_flip_char(tty, ch, TTY_NORMAL);
|
||||
} while (dcr_read(up->dcr_host, UART_RX) & UART_LSR_DR);
|
||||
} while (dcr_read(up->dcr_host, UART_LSR) & UART_LSR_DR);
|
||||
|
||||
tty_flip_buffer_push(tty);
|
||||
ret = IRQ_HANDLED;
|
||||
|
||||
/* clear interrupt */
|
||||
dcr_write(up->dcr_host, UART_IIR, 1);
|
||||
out:
|
||||
spin_unlock(&up->port.lock);
|
||||
return ret;
|
||||
|
|
Loading…
Reference in a new issue