Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b3c64bc3 authored by Kevin Hilman's avatar Kevin Hilman
Browse files

gpio/omap: (re)fix wakeups on level-triggered GPIOs



commit 1b128703 (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: default avatarTony Lindgren <tony@atomide.com>
Tested-by: default avatarTony Lindgren <tony@atomide.com>
Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: default avatarTarun Kanti DebBarma <tarun.kanti@ti.com>
Tested-by: default avatarTarun Kanti DebBarma <tarun.kanti@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
parent 22770de1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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;