All APU executable layers below EL3 can communicate indirectly with the PMC through the TF-A. The TF-A receives all calls made from the lower EL software, consolidates all requests, and sends the requests to the PMC.
Following the Arm® SMC calling convention (SMCCC), the PM communication from the non-secure world to the TF-A is organized as SiP service calls, using a predefined SMC function identifier and SMC sub-range ownership.
The EEMI API implementation for the APU is compliant only with the SMC64 calling convention. EEMI API calls made from the hypervisor, secure OS or OS, and pass the 32-bit API ID as the SMC function identifier, and up to four 32-bit arguments as well. As all PM arguments are 32-bit values, pairs of two are combined into one 64-bit value.
The TF-A returns up to five 32-bit return values:
- Return status, either success or error and reason
- Additional information from the PM controller