kernel: update linux 3.1 to 3.1.10
[openwrt.git] / target / linux / omap24xx / patches-3.1 / 420-hci-h4p-interrupt-workaround.patch
1 --- a/arch/arm/mach-omap2/serial.c
2 +++ b/arch/arm/mach-omap2/serial.c
3 @@ -546,10 +546,12 @@ static void omap_uart_idle_init(struct o
4                 uart->padconf = 0;
5         }
6  
7 -       uart->irqflags |= IRQF_SHARED;
8 -       ret = request_threaded_irq(uart->irq, NULL, omap_uart_interrupt,
9 -                                  IRQF_SHARED, "serial idle", (void *)uart);
10 -       WARN_ON(ret);
11 +       if (uart->irq) {
12 +               uart->irqflags |= IRQF_SHARED;
13 +               ret = request_threaded_irq(uart->irq, NULL, omap_uart_interrupt,
14 +                                          IRQF_SHARED, "serial idle", (void *)uart);
15 +               WARN_ON(ret);
16 +       }
17  }
18  
19  void omap_uart_enable_irqs(int enable)
20 @@ -560,14 +562,17 @@ void omap_uart_enable_irqs(int enable)
21         list_for_each_entry(uart, &uart_list, node) {
22                 if (enable) {
23                         pm_runtime_put_sync(&uart->pdev->dev);
24 -                       ret = request_threaded_irq(uart->irq, NULL,
25 -                                                  omap_uart_interrupt,
26 -                                                  IRQF_SHARED,
27 -                                                  "serial idle",
28 -                                                  (void *)uart);
29 +                       if (uart->irq) {
30 +                               ret = request_threaded_irq(uart->irq, NULL,
31 +                                                          omap_uart_interrupt,
32 +                                                          IRQF_SHARED,
33 +                                                          "serial idle",
34 +                                                          (void *)uart);
35 +                       }
36                 } else {
37                         pm_runtime_get_noresume(&uart->pdev->dev);
38 -                       free_irq(uart->irq, (void *)uart);
39 +                       if (uart->irq)
40 +                               free_irq(uart->irq, (void *)uart);
41                 }
42         }
43  }
44 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c
45 +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c
46 @@ -253,7 +253,7 @@ struct omap_hwmod_irq_info omap2_timer11
47  };
48  
49  struct omap_hwmod_irq_info omap2_uart1_mpu_irqs[] = {
50 -       { .irq = INT_24XX_UART1_IRQ, },
51 +       { .irq = 0, },
52         { .irq = -1 }
53  };
54