The following figure shows the detailed interactions between different processors for a suspend resume use case.
Figure 1. APU Suspend/Resume Flow
In this example, a peripheral is set up as a wake up source. Each step in the flow is explained as follows:
Suspend Flow
- APU saves the CPU context in the DDRMC.
- Peripheral is configured to be used as a wake up source.
- APU through the TF-A or XilPM client (if APU bare-metal application is running) informs PMC of its intent to suspend. PLM enables WFI interrupt.
- Informs PLM of the Wake Up Source.
- APU interrupts PSM by going into WFI state. If APU runs a
bare-metal application, PSM can be interrupted by using
XPm_SuspendFinalize
API. - After receiving the interrupt, a handshake between PSM and PLM occurs through the IPI. PSM powers down by power implementing power gating, asserting reset to APU and clock gating APU.
Wake Up Flow
- The peripheral (configured by the APU to act as a wake up source) interrupts PSM.
- PSM handshakes with PLM to initiate APU power up.
- After the handshake, PSM powers up the APU. It disables power gating, deassert reset, and disables clock gating on the APU.
- APU resumes context stored in the DDRMC.