Sorry, I can't test it right now :(
Potential fix below:
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 2dbd378..4e56fd9 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -481,7 +481,7 @@ int __init omap3_pm_init(void)
/* IO interrupt is shared with mux code */
ret = request_irq(omap_prcm_event_to_irq("io"),
- _prcm_int_handle_io, IRQF_SHARED | IRQF_NO_SUSPEND, "pm_io",
+ _prcm_int_handle_io, IRQF_SHARED, "pm_io",
omap3_pm_init);
enable_irq(omap_prcm_event_to_irq("io"));
@@ -489,6 +489,7 @@ int __init omap3_pm_init(void)
pr_err("pm: Failed to request pm_io irq\n");
goto err2;
}
+ enable_irq_wake(omap_prcm_event_to_irq("io"));
ret = pwrdm_for_each(pwrdms_setup, NULL);
if (ret) {