c4b3e57ccd2203f86f8b3fb125ea01fa8808d5de
[openwrt.git] / target / linux / ramips / patches-3.14 / 999-gpi_irq.patch
1 --- a/drivers/gpio/gpio-ralink.c
2 +++ b/drivers/gpio/gpio-ralink.c
3 @@ -148,14 +148,15 @@ static void ralink_gpio_irq_unmask(struc
4  {
5         struct ralink_gpio_chip *rg;
6         unsigned long flags;
7 -       u32 val;
8 +       u32 rise, fall;
9  
10         rg = (struct ralink_gpio_chip *) d->domain->host_data;
11 -       val = rt_gpio_r32(rg, GPIO_REG_RENA);
12 +       rise = rt_gpio_r32(rg, GPIO_REG_RENA);
13 +       fall = rt_gpio_r32(rg, GPIO_REG_FENA);
14  
15         spin_lock_irqsave(&rg->lock, flags);
16 -       rt_gpio_w32(rg, GPIO_REG_RENA, val | (BIT(d->hwirq) & rg->rising));
17 -       rt_gpio_w32(rg, GPIO_REG_FENA, val | (BIT(d->hwirq) & rg->falling));
18 +       rt_gpio_w32(rg, GPIO_REG_RENA, rise | (BIT(d->hwirq) & rg->rising));
19 +       rt_gpio_w32(rg, GPIO_REG_FENA, fall | (BIT(d->hwirq) & rg->falling));
20         spin_unlock_irqrestore(&rg->lock, flags);
21  }
22  
23 @@ -163,14 +164,15 @@ static void ralink_gpio_irq_mask(struct 
24  {
25         struct ralink_gpio_chip *rg;
26         unsigned long flags;
27 -       u32 val;
28 +       u32 rise, fall;
29  
30         rg = (struct ralink_gpio_chip *) d->domain->host_data;
31 -       val = rt_gpio_r32(rg, GPIO_REG_RENA);
32 +       rise = rt_gpio_r32(rg, GPIO_REG_RENA);
33 +       fall = rt_gpio_r32(rg, GPIO_REG_FENA);
34  
35         spin_lock_irqsave(&rg->lock, flags);
36 -       rt_gpio_w32(rg, GPIO_REG_FENA, val & ~BIT(d->hwirq));
37 -       rt_gpio_w32(rg, GPIO_REG_RENA, val & ~BIT(d->hwirq));
38 +       rt_gpio_w32(rg, GPIO_REG_FENA, fall & ~BIT(d->hwirq));
39 +       rt_gpio_w32(rg, GPIO_REG_RENA, rise & ~BIT(d->hwirq));
40         spin_unlock_irqrestore(&rg->lock, flags);
41  }
42