Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 163119
b: refs/heads/master
c: 82dbb9d
h: refs/heads/master
i:
  163117: 46ea64f
  163115: c8ae760
  163111: f6de969
  163103: da31e8d
v: v3
  • Loading branch information
Eero Nurkkala authored and Tony Lindgren committed Aug 28, 2009
1 parent e5b5a6c commit 5ffd8ac
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 79e44c952cec025295b3f0fd0ff2a875689b98c4
refs/heads/master: 82dbb9d39f58e3d12b5903764901df5fec759daf
27 changes: 23 additions & 4 deletions trunk/arch/arm/plat-omap/gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -1895,7 +1895,7 @@ void omap2_gpio_resume_after_retention(void)
return;
for (i = 0; i < gpio_bank_count; i++) {
struct gpio_bank *bank = &gpio_bank[i];
u32 l;
u32 l, gen, gen0, gen1;

if (!(bank->enabled_non_wakeup_gpios))
continue;
Expand All @@ -1916,14 +1916,33 @@ void omap2_gpio_resume_after_retention(void)
#endif
l ^= bank->saved_datain;
l &= bank->non_wakeup_gpios;
if (l) {

/*
* 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 &= bank->saved_datain;

gen1 = l & bank->saved_risingdetect;
gen1 &= ~(bank->saved_datain);

/* FIXME: Consider GPIO IRQs with level detections properly! */
gen = l & (~(bank->saved_fallingdetect) &
~(bank->saved_risingdetect));
/* Consider all GPIO IRQs needed to be updated */
gen |= gen0 | gen1;

if (gen) {
u32 old0, old1;
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) || \
defined(CONFIG_ARCH_OMAP4)
old0 = __raw_readl(bank->base + OMAP24XX_GPIO_LEVELDETECT0);
old1 = __raw_readl(bank->base + OMAP24XX_GPIO_LEVELDETECT1);
__raw_writel(old0 | l, bank->base + OMAP24XX_GPIO_LEVELDETECT0);
__raw_writel(old1 | l, bank->base + OMAP24XX_GPIO_LEVELDETECT1);
__raw_writel(old0 | gen, bank->base +
OMAP24XX_GPIO_LEVELDETECT0);
__raw_writel(old1 | gen, bank->base +
OMAP24XX_GPIO_LEVELDETECT1);
__raw_writel(old0, bank->base + OMAP24XX_GPIO_LEVELDETECT0);
__raw_writel(old1, bank->base + OMAP24XX_GPIO_LEVELDETECT1);
#endif
Expand Down

0 comments on commit 5ffd8ac

Please sign in to comment.