There are different API layers in the power management framework (PMF) implementation for Zynq UltraScale+ MPSoCs, which are, as follows:
- Xilpm
- This is a library layer used for standalone applications in the different processing units, such as the APU and RPU.
- ATF
- The Arm Trusted Firmware (ATF) contains its own implementation of the client-side PM framework. It is currently used by Linux operating systems.
- PMU firmware
- The power management unit firmware (PMUFW) runs on the power management unit (PMU) and implements of the power management API.
For more details, see this link in the Zynq UltraScale+ Device Technical Reference Manual (UG1085).
The following figure shows the interaction between the APU, the RPU, and the PMF APIs.
If the APU is running a complete software stack with an operating system, the Xilpm library is not used. Instead, the ATF running on EL3 implements the client-side power management API, and provides a secure monitor call (SMC)-based interface to the upper layers.
The following figure illustrates this behavior. See the Armv8 manuals for more details on the Armv8 architecture and its different execution modes. It illustrates the PMF layers that are involved when running a full software stack on the APU.