Power State Coordination Interface - 2023.2 English

Versal Adaptive SoC System Software Developers Guide (UG1304)

Document ID
UG1304
Release Date
2023-10-18
Version
2023.2 English

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.

Table 1. PSCI v0.2 Functions Supported by TF-A
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:
  • Have not yet been booted into the calling supervisory software.
  • Have been previously powered down with a CPU_OFF call.
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