This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335x not entering DeepSleep0

Hi everyone,

I'm working on a custom board based on AM335 (rev 1) and I'm into some trouble with low power modes from Android.

In fact the board tries to enter DS0 but fails and falls back to DS1 (the USB is able to wakeup the board)

The error message 

 <3>[ 88.981597] Could not enter low power state
 <3>[ 88.981597] Please check for active clocks in PER domain

is quite useless mostly because the CortexM3 doesn't specify the sub-domain that failed to go in retention state

I tried bisecting the diff from the original codebase with no luck (the sleep work well with BeagleBone - JellyBean from git) .

Modifying the a8_lp_cmd3_handler function in pm_handlers.c seemed a good starting point but again I had no luck solving the problem.

Is there any convenient way to get more information from M3? 

Thank you very much

Martino

  • Hi Martino,

    Have you given a try with just plain PSP linux kernel without android on your board?

    You were able to get DS0 work on BeagleBone with the same code base?

    Regards

    Sandhya

  • Hi Sandhya,

    at the end the problem was the presence of PRUSS userspace driver in .config.

    Removing it the board enters DeepSleep0 but it's not able to wake up completely.

    In fact emmc loses setting and gets reconfigured in spi mode, and even bypassing this problem the userspace context is not restored.

    Last but not least, the modified code works on beaglebone. Can this problem be related to the fact that our board uses LPDDR? We had to extensively patch sleep33xx.S to get standby/resume from DeepSleep1 working.

    Thank you very much

    Martino