Hi.
I have a custom board with an am3352 and am having troubles with resume.
The A8 executes the wfi instruction and that causes the expected interrupt in the M3 (extint34_handle runs). Also, following a wakeup event (UART0 or GPIO), the M3 gets an interrupt and attempts to resume the A8. The A8 wakeup isn't happening though.
From other posts, I see that the failure to disable a power or clock domain during suspend can cause resume to fail. Since the M3 has no console, I am not able to dump the PM and CM registers. However, I have added checks to extint34_handler() to verify that expected idle states are entered and clocks disabled. I did find and fix a couple that needed to be disabled (GPIO and Timer1).
Currently, all but the following are disabled/inactive:
- CLKACTIVITY_L4_WKUP_GCLK active in CM_WKUP_CLKSTCTRL register
- L4WKUP not disabled (CM_WKUP_L4WKUP_CLKCTRL)
- DEBUGSS not disabled (CM_WKUP_DEBUGSS_CLKCTRL)
- L3_AON not disabled (CM_L3_AON_CLKSTCTRL)
- The digitally controlled oscillator (CM_CLKDCOLDO_DPLL_PER) CLKOUT1 (CM_DIV_M4_DPLL_CORE) CLKOUT2 (CM_DIV_M5_DPLL_CORE)
Disabling these does not seem possible (hangs). Certainly it is reasonable that the L3 and L4 clocks, for example, are needed.
I have also verified that the first IPC register contains the expected address for the ROM code to jump to the post-DS0 code in sleep33xx.S (40300740). Dumping the data at that address matches a disassembly of am33xx_resume_from_deep_sleep.
What else should I be looking for that would case the A8 to not start when the M3 turns on the MPU domain via CM_MPU_CLKSTCTR?
Thanks,
Steve