We have a custom board with an AM37x, we're running Linux 3.10 from the Android open source project, OMAP branch.
My problem is in getting the device to idle / sleep at the deepest stage. It goes through stages 1-6, but refuses to enter state7. I've done all the usual fixes: set enable_off_mode to 1, disabled UART as a wake-up source and removed drivers. Still, the core and PER power-domains won't sleep.
I use "echo mem > /sys/power/state" for testing. Upon wake, I get warnings that PER and core didn't enter the targeted power-state.
As I understand it, PER and core are co-dependent for sleeping. I suspect that either holds a clock that isn't disabled.
So, I have several questions - first, am I missing something obvious? Is a clock the likely culprit? If so, what is the best way to find which clock is the problem? There are lots of clocks in use. Are there other things that would keep one of these domains awake?
I have the Clock Tree Tool for my chip (although that's for ES1.0, we're ES1.2) - is there an easy way to create a register dump that I can load into the clock tree tool?
Any advice appreciated.