Power State Coordination Interface is a standard interface for controlling the system power state of Arm processors, such as suspend, shutdown, and reboot. For the PSCI specifications, see http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0022c/index.html.
TF-A handles the PSCI requests from Linux. TF-A supports PSCI v0.2 only (with no backward compatible support for v0.1).
The Linux kernel comes with standard support for PSCI. For information regarding the binding between the kernel and the TF-A/PSCI, see https://www.kernel.org/doc/Documentation/devicetree/bindings/arm/psci.txt.
Functions | Description | Supported |
---|---|---|
PSCI Version | Return the version of PSCI implemented. | Yes |
CPU Suspend | Suspend execution on a core or higher level topology node. This call is intended for use in idle subsystems where the core is expected to return to execution through a wakeup event. | Yes |
CPU On | Power up a core. This call is used to power up cores that
either:
|
Yes |
CPU Off | Power down the calling core. This call is intended for use in hotplug. A core that is powered down by CPU_OFF can only be powered up again in response to a CPU_ON. | Yes |
Affinity Info | Enable the caller to request status of an affinity instance. | Yes |
Migrate (Optional) | This is used to ask a uniprocessor Trusted OS to migrate its context to a specific core. | Yes |
Migrate Info Type (Optional) | This function allows a caller to identify the level of multicore support present in the Trusted OS. | Yes |
Migrate Info Up CPU (Optional) | For a uniprocessor Trusted OS, this function returns the current resident core. | Yes |
System Off | Shut down the system. | Yes |
System Reset | Reset the system. | Yes |
PSCI Features | Introduced in PSCI v1.0. Query API that allows discovering whether a specific PSCI function is implemented and its features. |
Yes |
CPU Freeze (Optional) | Introduced in PSCI v1.0. Places the core into an IMPLEMENTATION DEFINED low-power state. Unlike CPU_OFF it is still valid for interrupts to be targeted to the core. However, the core must remain in the low power state until it a CPU_ON command is issued for it. |
No |
CPU Default Suspend (Optional) | Introduced in PSCI v1.0. Will place a core into an IMPLEMENTATION DEFINED low-power state. Unlike CPU_SUSPEND the caller need not specify a power state parameter. |
No |
Node HW State (Optional) | Introduced in PSCI v1.0. This function is intended to return the true HW state of a node in the power domain topology of the system. |
Yes |
System Suspend (Optional) | Introduced in PSCI v1.0. Used to implement suspend to RAM. The semantics are equivalent to a CPU_SUSPEND to the deepest low-power state. |
Yes |
PSCI Set Suspend Mode (Optional) | Introduced in PSCI v1.0. This function allows setting the mode used by CPU_SUSPEND to coordinate power states. |
No |
PSCI Stat Residency (Optional) | Introduced in PSCI v1.0. Returns the amount of time the platform has spent in the given power state since cold boot. |
Yes |
PSCI Stat Count (Optional) | Introduced in PSCI v1.0. Return the number of times the platform has used the given power state since cold boot. |
Yes |