diff options
| -rw-r--r-- | drivers/tty/serial/mxs-auart.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c index 4f5f161896a1..3de0fb2712f5 100644 --- a/drivers/tty/serial/mxs-auart.c +++ b/drivers/tty/serial/mxs-auart.c | |||
| @@ -678,11 +678,18 @@ static void mxs_auart_settermios(struct uart_port *u, | |||
| 678 | 678 | ||
| 679 | static irqreturn_t mxs_auart_irq_handle(int irq, void *context) | 679 | static irqreturn_t mxs_auart_irq_handle(int irq, void *context) |
| 680 | { | 680 | { |
| 681 | u32 istatus, istat; | 681 | u32 istat; |
| 682 | struct mxs_auart_port *s = context; | 682 | struct mxs_auart_port *s = context; |
| 683 | u32 stat = readl(s->port.membase + AUART_STAT); | 683 | u32 stat = readl(s->port.membase + AUART_STAT); |
| 684 | 684 | ||
| 685 | istatus = istat = readl(s->port.membase + AUART_INTR); | 685 | istat = readl(s->port.membase + AUART_INTR); |
| 686 | |||
| 687 | /* ack irq */ | ||
| 688 | writel(istat & (AUART_INTR_RTIS | ||
| 689 | | AUART_INTR_TXIS | ||
| 690 | | AUART_INTR_RXIS | ||
| 691 | | AUART_INTR_CTSMIS), | ||
| 692 | s->port.membase + AUART_INTR_CLR); | ||
| 686 | 693 | ||
| 687 | if (istat & AUART_INTR_CTSMIS) { | 694 | if (istat & AUART_INTR_CTSMIS) { |
| 688 | uart_handle_cts_change(&s->port, stat & AUART_STAT_CTS); | 695 | uart_handle_cts_change(&s->port, stat & AUART_STAT_CTS); |
| @@ -702,12 +709,6 @@ static irqreturn_t mxs_auart_irq_handle(int irq, void *context) | |||
| 702 | istat &= ~AUART_INTR_TXIS; | 709 | istat &= ~AUART_INTR_TXIS; |
| 703 | } | 710 | } |
| 704 | 711 | ||
| 705 | writel(istatus & (AUART_INTR_RTIS | ||
| 706 | | AUART_INTR_TXIS | ||
| 707 | | AUART_INTR_RXIS | ||
| 708 | | AUART_INTR_CTSMIS), | ||
| 709 | s->port.membase + AUART_INTR_CLR); | ||
| 710 | |||
| 711 | return IRQ_HANDLED; | 712 | return IRQ_HANDLED; |
| 712 | } | 713 | } |
| 713 | 714 | ||
