Lines Matching +full:psci +full:- +full:suspend +full:- +full:param
1 # SPDX-License-Identifier: GPL-2.0
3 ---
4 $id: http://devicetree.org/schemas/arm/psci.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Power State Coordination Interface (PSCI)
10 - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
13 Firmware implementing the PSCI functions described in ARM document number
15 processors") can be used by Linux to initiate various CPU-centric power
18 Issue A of the specification describes functions for CPU suspend, hotplug
21 Functions are invoked by trapping to the privilege level of the PSCI
25 r0 => 32-bit Function ID / return value
26 {r1 - r3} => Parameters
31 [2] Power State Coordination Interface (PSCI) specification
36 const: psci
40 - description:
41 For implementations complying to PSCI versions prior to 0.2.
42 const: arm,psci
44 - description:
45 For implementations complying to PSCI 0.2.
47 PSCI 0.2 support, but are permitted to be present for compatibility
48 with existing software when "arm,psci" is later in the compatible
52 - const: arm,psci-0.2
53 - const: arm,psci
55 - description:
56 For implementations complying to PSCI 1.0.
57 PSCI 1.0 is backward compatible with PSCI 0.2 with minor
58 specification updates, as defined in the PSCI specification[2].
61 - const: arm,psci-1.0
62 - const: arm,psci-0.2
63 - const: arm,psci
66 description: The method of calling the PSCI firmware.
67 $ref: /schemas/types.yaml#/definitions/string-array
69 - smc
71 - hvc
89 arm,psci-suspend-param:
92 power_state parameter to pass to the PSCI suspend call.
94 Device tree nodes that require usage of PSCI CPU_SUSPEND function (ie
95 idle state nodes with entry-method property is set to "psci", as per
98 [1] Kernel documentation - ARM idle states bindings
99 Documentation/devicetree/bindings/cpu/idle-states.yaml
102 "^power-domain-":
103 $ref: /schemas/power/power-domain.yaml#
115 arm,psci-suspend-param property.
117 It should also be noted that, in PSCI firmware v1.0 the OS-Initiated
118 (OSI) CPU suspend mode is introduced. Using a hierarchical representation
122 [3] Documentation/devicetree/bindings/power/power-domain.yaml
123 [4] Documentation/devicetree/bindings/power/domain-idle-state.yaml
126 - compatible
127 - method
130 - if:
134 const: arm,psci
137 - cpu_off
138 - cpu_on
143 - |+
145 // Case 1: PSCI v0.1 only.
147 psci {
148 compatible = "arm,psci";
156 - |+
158 // Case 2: PSCI v0.2 only
160 psci {
161 compatible = "arm,psci-0.2";
166 - |+
168 // Case 3: PSCI v0.2 and PSCI v0.1.
171 * A DTB may provide IDs for use by kernels without PSCI 0.2 support,
173 * These IDs will be ignored by kernels with PSCI 0.2 support, which will
174 * use the standard PSCI 0.2 IDs exclusively.
177 psci {
178 compatible = "arm,psci-0.2", "arm,psci";
185 - |+
190 #size-cells = <0>;
191 #address-cells = <1>;
195 compatible = "arm,cortex-a53";
197 enable-method = "psci";
198 power-domains = <&CPU_PD0>;
199 power-domain-names = "psci";
204 compatible = "arm,cortex-a53";
206 enable-method = "psci";
207 power-domains = <&CPU_PD1>;
208 power-domain-names = "psci";
211 idle-states {
213 CPU_PWRDN: cpu-power-down {
214 compatible = "arm,idle-state";
215 arm,psci-suspend-param = <0x0000001>;
216 entry-latency-us = <10>;
217 exit-latency-us = <10>;
218 min-residency-us = <100>;
222 domain-idle-states {
224 CLUSTER_RET: cluster-retention {
225 compatible = "domain-idle-state";
226 arm,psci-suspend-param = <0x1000011>;
227 entry-latency-us = <500>;
228 exit-latency-us = <500>;
229 min-residency-us = <2000>;
232 CLUSTER_PWRDN: cluster-power-down {
233 compatible = "domain-idle-state";
234 arm,psci-suspend-param = <0x1000031>;
235 entry-latency-us = <2000>;
236 exit-latency-us = <2000>;
237 min-residency-us = <6000>;
242 psci {
243 compatible = "arm,psci-1.0";
246 CPU_PD0: power-domain-cpu0 {
247 #power-domain-cells = <0>;
248 domain-idle-states = <&CPU_PWRDN>;
249 power-domains = <&CLUSTER_PD>;
252 CPU_PD1: power-domain-cpu1 {
253 #power-domain-cells = <0>;
254 domain-idle-states = <&CPU_PWRDN>;
255 power-domains = <&CLUSTER_PD>;
258 CLUSTER_PD: power-domain-cluster {
259 #power-domain-cells = <0>;
260 domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;