I have a custom board that uses the AM3359 with the exact same PMIC and DDR as the BeagleBone Black. I'm running the Android release TI-Android-JB-4.2.2-DevKit-4.1.1. My board appears to suspend correctly, but never wakes up. I've added the no_console_suspend kernel parameter to get more messages to print out before suspending:
[ 6996.989227] request_suspend_state: sleep (0->3) at 6996894040037 (2013-12-02 15:56:24.947251016 UTC) [ 7000.915008] PM: Syncing filesystems ... done. [ 7000.994140] Freezing user space processes ... (elapsed 0.01 seconds) done. [ 7001.018310] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done. [ 7006.037200] LCD Controller timed out [ 7006.075012] PM: suspend of devices complete after 5035.949 msecs
The button to wake up is connected to gpio0_31 so it should be able to wake up the processor. I have configured it as a gpio-keys button:
{ .code = KEY_POWER, .gpio = GPIO_TO_PIN(0, 31), .active_low = true, .desc = "wakeup", .type = EV_KEY, .wakeup = 1, },
And the /sys/kernel/debug/omap_mux/board/core file confirms the mux is correct:
/* gpio0_31 */
OMAP3_MUX(GPMC_WPN, OMAP_MUX_MODE7 | AM33XX_PIN_INPUT),
I'm having a similar problem to the thread here: http://e2e.ti.com/support/embedded/android/f/509/t/292766.aspx. However, the fix specified there does not work for me because the LCDC loses sync by writing those registers. It's also not really a fix but a workaround.
Has there been any further investigation into what is really causing this issue?
Has there been an actual fix in the sleep33xx.S file to make sure these registers get written at the proper time?
Is there another workaround that can fix the issue without disrupting the LCDC?