Root/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 
55

Archive Download this file



interactive