From: Kevin Hilman Date: Thu, 17 May 2012 23:42:16 +0000 (-0700) Subject: gpio/omap: (re)fix wakeups on level-triggered GPIOs X-Git-Tag: v3.5-rc1~93^2~4^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b3c64bc30af67ed328a8d919e41160942b870451;p=profile%2Fivi%2Fkernel-adaptation-intel-automotive.git gpio/omap: (re)fix wakeups on level-triggered GPIOs commit 1b1287032 (gpio/omap: fix missing check in *_runtime_suspend()) broke wakeups on level-triggered GPIOs by adding the enabled non-wakeup GPIO check before the workaround that enables wakeups on level-triggered IRQs, effectively disabling that workaround. To fix, move the enabled non-wakeup GPIO check after the level-triggered IRQ workaround. Reported-by: Tony Lindgren Tested-by: Tony Lindgren Acked-by: Santosh Shilimkar Acked-by: Tarun Kanti DebBarma Tested-by: Tarun Kanti DebBarma Signed-off-by: Kevin Hilman --- diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index b570a6a..c4ed172 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c @@ -1157,9 +1157,6 @@ static int omap_gpio_runtime_suspend(struct device *dev) spin_lock_irqsave(&bank->lock, flags); - if (!bank->enabled_non_wakeup_gpios) - goto update_gpio_context_count; - /* * Only edges can generate a wakeup event to the PRCM. * @@ -1180,6 +1177,9 @@ static int omap_gpio_runtime_suspend(struct device *dev) __raw_writel(wake_hi | bank->context.risingdetect, bank->base + bank->regs->risingdetect); + if (!bank->enabled_non_wakeup_gpios) + goto update_gpio_context_count; + if (bank->power_mode != OFF_MODE) { bank->power_mode = 0; goto update_gpio_context_count;