summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormb <mb@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-03-07 16:57:15 +0000
committermb <mb@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-03-07 16:57:15 +0000
commitfdc48372ba77bf04b78aeabec2bc1abbed6387c9 (patch)
tree53a6e1cee8860087036d76d514ae87810daee150
parentb7660536c6ed47d9c16645534599a3d63295ca82 (diff)
n810: Add workaround for bluetooth IRQ issue
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25939 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--target/linux/omap24xx/patches-2.6.38/420-hci-h4p-interrupt-workaround.patch58
-rw-r--r--target/linux/omap24xx/patches-2.6.38/830-omap2-serial-fixes.patch10
2 files changed, 63 insertions, 5 deletions
diff --git a/target/linux/omap24xx/patches-2.6.38/420-hci-h4p-interrupt-workaround.patch b/target/linux/omap24xx/patches-2.6.38/420-hci-h4p-interrupt-workaround.patch
new file mode 100644
index 000000000..91b23405b
--- /dev/null
+++ b/target/linux/omap24xx/patches-2.6.38/420-hci-h4p-interrupt-workaround.patch
@@ -0,0 +1,58 @@
+Index: linux-2.6.38-rc7/arch/arm/mach-omap2/omap_hwmod_2420_data.c
+===================================================================
+--- linux-2.6.38-rc7.orig/arch/arm/mach-omap2/omap_hwmod_2420_data.c 2011-03-07 16:07:00.174343135 +0100
++++ linux-2.6.38-rc7/arch/arm/mach-omap2/omap_hwmod_2420_data.c 2011-03-07 16:09:15.601997493 +0100
+@@ -362,7 +362,7 @@ static struct omap_hwmod_class uart_clas
+ /* UART1 */
+
+ static struct omap_hwmod_irq_info uart1_mpu_irqs[] = {
+- { .irq = INT_24XX_UART1_IRQ, },
++ { .irq = 0, },
+ };
+
+ static struct omap_hwmod_dma_info uart1_sdma_reqs[] = {
+Index: linux-2.6.38-rc7/arch/arm/mach-omap2/serial.c
+===================================================================
+--- linux-2.6.38-rc7.orig/arch/arm/mach-omap2/serial.c 2011-03-07 16:06:21.934958270 +0100
++++ linux-2.6.38-rc7/arch/arm/mach-omap2/serial.c 2011-03-07 16:08:59.649922915 +0100
+@@ -546,10 +546,12 @@ static void omap_uart_idle_init(struct o
+ uart->padconf = 0;
+ }
+
+- uart->irqflags |= IRQF_SHARED;
+- ret = request_threaded_irq(uart->irq, NULL, omap_uart_interrupt,
+- IRQF_SHARED, "serial idle", (void *)uart);
+- WARN_ON(ret);
++ if (uart->irq) {
++ uart->irqflags |= IRQF_SHARED;
++ ret = request_threaded_irq(uart->irq, NULL, omap_uart_interrupt,
++ IRQF_SHARED, "serial idle", (void *)uart);
++ WARN_ON(ret);
++ }
+ }
+
+ void omap_uart_enable_irqs(int enable)
+@@ -560,14 +562,17 @@ void omap_uart_enable_irqs(int enable)
+ list_for_each_entry(uart, &uart_list, node) {
+ if (enable) {
+ pm_runtime_put_sync(&uart->pdev->dev);
+- ret = request_threaded_irq(uart->irq, NULL,
+- omap_uart_interrupt,
+- IRQF_SHARED,
+- "serial idle",
+- (void *)uart);
++ if (uart->irq) {
++ ret = request_threaded_irq(uart->irq, NULL,
++ omap_uart_interrupt,
++ IRQF_SHARED,
++ "serial idle",
++ (void *)uart);
++ }
+ } else {
+ pm_runtime_get_noresume(&uart->pdev->dev);
+- free_irq(uart->irq, (void *)uart);
++ if (uart->irq)
++ free_irq(uart->irq, (void *)uart);
+ }
+ }
+ }
diff --git a/target/linux/omap24xx/patches-2.6.38/830-omap2-serial-fixes.patch b/target/linux/omap24xx/patches-2.6.38/830-omap2-serial-fixes.patch
index 2a29a8e47..e503b0e59 100644
--- a/target/linux/omap24xx/patches-2.6.38/830-omap2-serial-fixes.patch
+++ b/target/linux/omap24xx/patches-2.6.38/830-omap2-serial-fixes.patch
@@ -1,8 +1,8 @@
-Index: linux-2.6.38-rc6/arch/arm/mach-omap2/serial.c
+Index: linux-2.6.38-rc7/arch/arm/mach-omap2/serial.c
===================================================================
---- linux-2.6.38-rc6.orig/arch/arm/mach-omap2/serial.c 2011-02-22 02:25:52.000000000 +0100
-+++ linux-2.6.38-rc6/arch/arm/mach-omap2/serial.c 2011-02-26 22:17:38.356027926 +0100
-@@ -655,6 +655,8 @@
+--- linux-2.6.38-rc7.orig/arch/arm/mach-omap2/serial.c 2011-03-07 17:24:16.786259530 +0100
++++ linux-2.6.38-rc7/arch/arm/mach-omap2/serial.c 2011-03-07 17:24:18.951998600 +0100
+@@ -660,6 +660,8 @@ static void serial_out_override(struct u
}
#endif
@@ -11,7 +11,7 @@ Index: linux-2.6.38-rc6/arch/arm/mach-omap2/serial.c
void __init omap_serial_early_init(void)
{
int i = 0;
-@@ -670,9 +672,9 @@
+@@ -675,9 +677,9 @@ void __init omap_serial_early_init(void)
if (!oh)
break;