* Tony Lindgren <tony@xxxxxxxxxxx> [190508 11:20]: > --- a/drivers/gpio/gpio-omap.c > +++ b/drivers/gpio/gpio-omap.c > @@ -1279,7 +1279,14 @@ static void omap_gpio_idle(struct gpio_bank *bank, bool may_lose_context) > void __iomem *base = bank->base; > u32 nowake; > > + /* > + * Save datain register to trigger edge interrupts on unidle for GPIOS > + * that are not wake-up capable. Ignore any enabled_non_wakeup_gpios > + * that may have just triggered as we're entering idle. Otherwise unidle > + * will not notice them. > + */ > bank->saved_datain = readl_relaxed(base + bank->regs->datain); > + bank->saved_datain |= bank->enabled_non_wakeup_gpios; Oops, sorry this is not complete yet. We need to enable or clear the possible pending interrupt in saved_datain based on the edge interrupt polarity. I'll fix and resend. Regards, Tony