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