Power State Coordination Interface (PSCI) - 2020.2 English

Zynq UltraScale+ MPSoC Software Developer Guide (UG1137)

Document ID
UG1137
Release Date
2021-01-05
Version
2020.2 English

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.

ATF handles the PSCI requests from Linux. ATF 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 ATF/PSCI, see https://www.kernel.org/doc/Documentation/devicetree/bindings/arm/psci.txt.

Table 1. PSCI v0.2 Functions Supported by the ATF
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:
  • 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 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