* Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx> [090202 09:53]: > Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx> writes: > > > Now that the generic IRQ and GPIO frameworks are used for enabling and > > disabling GPIO IRQ wakeup sources, there is no longer a need to call > > [enable|disable]_irq_wake() in the low-level code. Doing so results > > in recursive calls to [enable|disable]_irq_wake(). > > > > This was discovered in the suspend/resume path on OMAP3/Beagle using > > the gpio-keys driver which disables/re-enables GPIO IRQ wakeups in the > > suspend/resume path. > > > > Signed-off-by: Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx> > > Tony, > > Not sure if it's too late, but this could go into omap-fixes too. I'll add it after the previous omap-fixes are merged to the mainline. Tony > > Kevin > > > > --- > > arch/arm/plat-omap/gpio.c | 14 ++++---------- > > 1 files changed, 4 insertions(+), 10 deletions(-) > > > > diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c > > index f856a90..798a8cd 100644 > > --- a/arch/arm/plat-omap/gpio.c > > +++ b/arch/arm/plat-omap/gpio.c > > @@ -837,13 +837,10 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) > > case METHOD_MPUIO: > > case METHOD_GPIO_1610: > > spin_lock_irqsave(&bank->lock, flags); > > - if (enable) { > > + if (enable) > > bank->suspend_wakeup |= (1 << gpio); > > - enable_irq_wake(bank->irq); > > - } else { > > - disable_irq_wake(bank->irq); > > + else > > bank->suspend_wakeup &= ~(1 << gpio); > > - } > > spin_unlock_irqrestore(&bank->lock, flags); > > return 0; > > #endif > > @@ -856,13 +853,10 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) > > return -EINVAL; > > } > > spin_lock_irqsave(&bank->lock, flags); > > - if (enable) { > > + if (enable) > > bank->suspend_wakeup |= (1 << gpio); > > - enable_irq_wake(bank->irq); > > - } else { > > - disable_irq_wake(bank->irq); > > + else > > bank->suspend_wakeup &= ~(1 << gpio); > > - } > > spin_unlock_irqrestore(&bank->lock, flags); > > return 0; > > #endif > > -- > > 1.6.1 > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html