The Power State Coordination Interface (PSCI) is a standard interface for controlling the system power state of Arm processors, such as suspend, shutdown, and reboot. See PSCI specifications here.
The TF-A handles the PSCI requests from Linux. The TF-A only supports PSCI v0.2 (with no backward compatible support for v0.1).
The Linux kernel comes with standard support for PSCI. For information about the binding between the kernel and the TF-A/PSCI, open the psci.txt file.
The following table lists the PSCI v0.2 functions that the TF-A supports.
Function | Description | Supported? |
---|---|---|
PSCI Version | Return the implemented PSCI version. | 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 wake-up 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 a 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 does not need to specify a power state parameter. |
No |
Node HW State (Optional) | Introduced in PSCI v1.0. This function is intended to return the true hardware 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 because 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 because of cold boot. |
Yes |