summaryrefslogtreecommitdiff
path: root/target/linux/brcm47xx/patches-3.10/101-bcma-gpio-fix-irq-handling.patch
blob: 388eefa1f8b3782fc913cd6c313d638bafe171a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;