|
@@ -451,6 +451,7 @@ static void _enable_gpio_irqbank(struct gpio_bank *bank, int gpio_mask)
|
|
|
if (bank->regs->set_irqenable) {
|
|
|
reg += bank->regs->set_irqenable;
|
|
|
l = gpio_mask;
|
|
|
+ bank->context.irqenable1 |= gpio_mask;
|
|
|
} else {
|
|
|
reg += bank->regs->irqenable;
|
|
|
l = __raw_readl(reg);
|
|
@@ -458,10 +459,10 @@ static void _enable_gpio_irqbank(struct gpio_bank *bank, int gpio_mask)
|
|
|
l &= ~gpio_mask;
|
|
|
else
|
|
|
l |= gpio_mask;
|
|
|
+ bank->context.irqenable1 = l;
|
|
|
}
|
|
|
|
|
|
__raw_writel(l, reg);
|
|
|
- bank->context.irqenable1 = l;
|
|
|
}
|
|
|
|
|
|
static void _disable_gpio_irqbank(struct gpio_bank *bank, int gpio_mask)
|
|
@@ -472,6 +473,7 @@ static void _disable_gpio_irqbank(struct gpio_bank *bank, int gpio_mask)
|
|
|
if (bank->regs->clr_irqenable) {
|
|
|
reg += bank->regs->clr_irqenable;
|
|
|
l = gpio_mask;
|
|
|
+ bank->context.irqenable1 &= ~gpio_mask;
|
|
|
} else {
|
|
|
reg += bank->regs->irqenable;
|
|
|
l = __raw_readl(reg);
|
|
@@ -479,10 +481,10 @@ static void _disable_gpio_irqbank(struct gpio_bank *bank, int gpio_mask)
|
|
|
l |= gpio_mask;
|
|
|
else
|
|
|
l &= ~gpio_mask;
|
|
|
+ bank->context.irqenable1 = l;
|
|
|
}
|
|
|
|
|
|
__raw_writel(l, reg);
|
|
|
- bank->context.irqenable1 = l;
|
|
|
}
|
|
|
|
|
|
static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int enable)
|