Setup: DM3730 EVM with BSP_WINCE_ARM_A8_01_02_00
There seems to be an inconsistency as to which power state the system returns into upon resuming. When suspending using the power key, devices all go into D4 state. When resuming also using the power, the system resumes to D2. SOMETIMES, but not always, the system then automatically proceeds into D0. Other times, it stays in D2 and never goes into D0. You can see this on the EVM where after a resume, sometimes the display comes on immediately. Other times, we need to tap the display to wake up into D0 from D2.
I confirmed this bahavior by adding debug into the SetPowerState functions of some drivers. One driver that shows this behavior is the display manager, dssai.cpp. By printing “dwPowerLevel” every time OMAPDisplayController::SetPowerLevel() is called, we see what level the system is requesting.
Here are examples on how I am able to replicate the issue.
Boot EVM: no external I/O connected except SD card.
Boot till display shows touchscreen cal. No need to calibrate touchscreen; it isn’t part of this test.
Let system sit idle. It goes to D1 then later D2.
Power key to suspend.
Power key to resume.
System resumes to D2 then automatically to D0 state. Backlight is ON.
Then Plug in USB OTG, wait for connect via Windows Device Manager
Power key to suspend.
Power key to resume.
System resumes to D2. Does NOT automatically go to D0.
Tap on Touchscreen, THEN system goes to D0.
Power-cycle system.
Boot EVM same as before, USB OTG NOT connected.
Once system is booted, BEFORE it goes to D1, power key to suspend.
Power key to resume.
System resumes to D2. Does NOT automatically go to D0.
It would be one thing if the system was suspended when it was in D2, then we resume to D2, and if system was in D0, then we would resume to D0. However, it is the opposite that is sometimes happening, and it isn't consistent. And regardless of if system is in D0 or D2, when OTG is connected, it is not always returning to D0.
This inconsistency is at the root of the problems that we are having with the suspend/resume of the USB OTG with the TPS65950 transceiver and driver, because if we only go into D2 and not D0, the OTG portion of the TPS doesn’t resume correctly and we cannot reconnect to OTG. Instead, the client connection with the PC eventually times out.
Any help you can provide on resolving this issue on the EVM would be greatly appreciated. We can then port over that resolution to our platform.