|
@@ -63,8 +63,6 @@ struct gpio_bank {
|
|
|
u32 enabled_non_wakeup_gpios;
|
|
|
struct gpio_regs context;
|
|
|
u32 saved_datain;
|
|
|
- u32 saved_fallingdetect;
|
|
|
- u32 saved_risingdetect;
|
|
|
u32 level_mask;
|
|
|
u32 toggle_mask;
|
|
|
spinlock_t lock;
|
|
@@ -1244,11 +1242,9 @@ static int omap_gpio_runtime_suspend(struct device *dev)
|
|
|
*/
|
|
|
bank->saved_datain = __raw_readl(bank->base +
|
|
|
bank->regs->datain);
|
|
|
- l1 = __raw_readl(bank->base + bank->regs->fallingdetect);
|
|
|
- l2 = __raw_readl(bank->base + bank->regs->risingdetect);
|
|
|
+ l1 = bank->context.fallingdetect;
|
|
|
+ l2 = bank->context.risingdetect;
|
|
|
|
|
|
- bank->saved_fallingdetect = l1;
|
|
|
- bank->saved_risingdetect = l2;
|
|
|
l1 &= ~bank->enabled_non_wakeup_gpios;
|
|
|
l2 &= ~bank->enabled_non_wakeup_gpios;
|
|
|
|
|
@@ -1307,9 +1303,9 @@ static int omap_gpio_runtime_resume(struct device *dev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- __raw_writel(bank->saved_fallingdetect,
|
|
|
+ __raw_writel(bank->context.fallingdetect,
|
|
|
bank->base + bank->regs->fallingdetect);
|
|
|
- __raw_writel(bank->saved_risingdetect,
|
|
|
+ __raw_writel(bank->context.risingdetect,
|
|
|
bank->base + bank->regs->risingdetect);
|
|
|
l = __raw_readl(bank->base + bank->regs->datain);
|
|
|
|
|
@@ -1326,14 +1322,15 @@ static int omap_gpio_runtime_resume(struct device *dev)
|
|
|
* No need to generate IRQs for the rising edge for gpio IRQs
|
|
|
* configured with falling edge only; and vice versa.
|
|
|
*/
|
|
|
- gen0 = l & bank->saved_fallingdetect;
|
|
|
+ gen0 = l & bank->context.fallingdetect;
|
|
|
gen0 &= bank->saved_datain;
|
|
|
|
|
|
- gen1 = l & bank->saved_risingdetect;
|
|
|
+ gen1 = l & bank->context.risingdetect;
|
|
|
gen1 &= ~(bank->saved_datain);
|
|
|
|
|
|
/* FIXME: Consider GPIO IRQs with level detections properly! */
|
|
|
- gen = l & (~(bank->saved_fallingdetect) & ~(bank->saved_risingdetect));
|
|
|
+ gen = l & (~(bank->context.fallingdetect) &
|
|
|
+ ~(bank->context.risingdetect));
|
|
|
/* Consider all GPIO IRQs needed to be updated */
|
|
|
gen |= gen0 | gen1;
|
|
|
|