diff options
Diffstat (limited to 'target/linux/brcm47xx/patches-3.10/101-bcma-gpio-fix-irq-handling.patch')
-rw-r--r-- | target/linux/brcm47xx/patches-3.10/101-bcma-gpio-fix-irq-handling.patch | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/target/linux/brcm47xx/patches-3.10/101-bcma-gpio-fix-irq-handling.patch b/target/linux/brcm47xx/patches-3.10/101-bcma-gpio-fix-irq-handling.patch new file mode 100644 index 0000000000..388eefa1f8 --- /dev/null +++ b/target/linux/brcm47xx/patches-3.10/101-bcma-gpio-fix-irq-handling.patch @@ -0,0 +1,20 @@ +--- a/drivers/bcma/driver_gpio.c ++++ b/drivers/bcma/driver_gpio.c +@@ -91,7 +91,9 @@ static void bcma_gpio_irq_unmask(struct + { + struct bcma_drv_cc *cc = irq_data_get_irq_chip_data(d); + int gpio = irqd_to_hwirq(d); ++ u32 val = bcma_chipco_gpio_in(cc, BIT(gpio)); + ++ bcma_chipco_gpio_polarity(cc, BIT(gpio), val); + bcma_chipco_gpio_intmask(cc, BIT(gpio), BIT(gpio)); + } + +@@ -156,6 +158,7 @@ static int bcma_gpio_irq_domain_init(str + if (err) + goto err_req_irq; + ++ bcma_chipco_gpio_intmask(cc, ~0, 0); + bcma_cc_set32(cc, BCMA_CC_IRQMASK, BCMA_CC_IRQ_GPIO); + + return 0; |