I'm still a bit stuck with trying to get button based resume to work on 6sl with 3.0.35. I had previously asked a related question here: imx-keypad wakeup from suspend on 6sl using linux 3.0.35
I have implemented the changes to make sure the imx-keypad row/col pins are kept as non-gpio pins when entering suspend. I can also see that after waking up from suspend, an interrupt was indeed generated and processed from the keypad pins. But it did not cause wakeup. I see during resume (using uart):
udc suspend begins
USB Gadget suspend ends
add wake up source irq 58
add wake up source irq 51
PM: suspend of devices complete after 9.865 msecs
PM: late suspend of devices complete after 0.500 msecs
PM: early resume of devices complete after 0.343 msecs
remove wake up source irq 51
remove wake up source irq 58
From /proc/interrupts after resume:
114: 2 GIC imx-keypad
I believe the root cause for the problem is the wake up source irq 114 (for keypad) was not added during the suspend so even though the interrupt was generated, it was ignored.
I can see that mx6_gic_irq_set_wake is what generates that message about "add wake up source". But I haven't figured out what registers that irq and why that's missing for imx-keypad. imx-keypad.c calls device_init_wakeup so it seems like registration should work.
I would appreciate any suggestions/ideas.