[pxa] refresh kernel patches
[15.05/openwrt.git] / target / linux / pxa / patches-2.6.21 / 023-bugfix-serial-interrupt.patch
1 Index: linux-2.6.21.7/drivers/serial/pxa.c
2 ===================================================================
3 --- linux-2.6.21.7.orig/drivers/serial/pxa.c
4 +++ linux-2.6.21.7/drivers/serial/pxa.c
5 @@ -235,15 +235,19 @@ static inline irqreturn_t serial_pxa_irq
6         struct uart_pxa_port *up = dev_id;
7         unsigned int iir, lsr;
8  
9 +       serial_out(up, UART_MCR, serial_in(up, UART_MCR) & ~UART_MCR_RTS); // Clear RTS
10         iir = serial_in(up, UART_IIR);
11         if (iir & UART_IIR_NO_INT)
12 -               return IRQ_NONE;
13 +       {
14 +               //printk(KERN_WARNING "serial_pxa_irq: odd -- interrupt triggered, but no interrupt in IIR: %08x\n",iir);
15 +       }
16         lsr = serial_in(up, UART_LSR);
17         if (lsr & UART_LSR_DR)
18                 receive_chars(up, &lsr);
19         check_modem_status(up);
20         if (lsr & UART_LSR_THRE)
21                 transmit_chars(up);
22 +       serial_out(up, UART_MCR, serial_in(up, UART_MCR) | UART_MCR_RTS); // Assert RTS
23         return IRQ_HANDLED;
24  }
25