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.
46 const: arm,psci-0.2
48 - description:
49 For implementations complying to PSCI 0.2.
51 PSCI 0.2 support, but are permitted to be present for compatibility
52 with existing software when "arm,psci" is later in the compatible
55 - const: arm,psci-0.2
56 - const: arm,psci
58 - description:
59 For implementations complying to PSCI 1.0.
60 const: arm,psci-1.0
62 - description:
63 For implementations complying to PSCI 1.0.
64 PSCI 1.0 is backward compatible with PSCI 0.2 with minor
65 specification updates, as defined in the PSCI specification[2].
67 - const: arm,psci-1.0
68 - const: arm,psci-0.2
71 description: The method of calling the PSCI firmware.
72 $ref: /schemas/types.yaml#/definitions/string-array
74 - smc
76 - hvc
94 arm,psci-suspend-param:
97 power_state parameter to pass to the PSCI suspend call.
99 Device tree nodes that require usage of PSCI CPU_SUSPEND function (ie
100 idle state nodes with entry-method property is set to "psci", as per
103 [1] Kernel documentation - ARM idle states bindings
104 Documentation/devicetree/bindings/arm/idle-states.yaml
107 "^power-domain-":
108 $ref: "../power/power-domain.yaml#"
120 arm,psci-suspend-param property.
122 It should also be noted that, in PSCI firmware v1.0 the OS-Initiated
123 (OSI) CPU suspend mode is introduced. Using a hierarchical representation
127 [3] Documentation/devicetree/bindings/power/power-domain.yaml
128 [4] Documentation/devicetree/bindings/power/domain-idle-state.yaml
131 - compatible
132 - method
135 - if:
139 const: arm,psci
142 - cpu_off
143 - cpu_on
148 - |+
150 // Case 1: PSCI v0.1 only.
152 psci {
153 compatible = "arm,psci";
161 - |+
163 // Case 2: PSCI v0.2 only
165 psci {
166 compatible = "arm,psci-0.2";
171 - |+
173 // Case 3: PSCI v0.2 and PSCI v0.1.
176 * A DTB may provide IDs for use by kernels without PSCI 0.2 support,
178 * These IDs will be ignored by kernels with PSCI 0.2 support, which will
179 * use the standard PSCI 0.2 IDs exclusively.
182 psci {
183 compatible = "arm,psci-0.2", "arm,psci";
190 - |+
195 #size-cells = <0>;
196 #address-cells = <1>;
200 compatible = "arm,cortex-a53";
202 enable-method = "psci";
203 power-domains = <&CPU_PD0>;
204 power-domain-names = "psci";
209 compatible = "arm,cortex-a53";
211 enable-method = "psci";
212 power-domains = <&CPU_PD1>;
213 power-domain-names = "psci";
216 idle-states {
218 CPU_PWRDN: cpu-power-down {
219 compatible = "arm,idle-state";
220 arm,psci-suspend-param = <0x0000001>;
221 entry-latency-us = <10>;
222 exit-latency-us = <10>;
223 min-residency-us = <100>;
227 domain-idle-states {
229 CLUSTER_RET: cluster-retention {
230 compatible = "domain-idle-state";
231 arm,psci-suspend-param = <0x1000011>;
232 entry-latency-us = <500>;
233 exit-latency-us = <500>;
234 min-residency-us = <2000>;
237 CLUSTER_PWRDN: cluster-power-down {
238 compatible = "domain-idle-state";
239 arm,psci-suspend-param = <0x1000031>;
240 entry-latency-us = <2000>;
241 exit-latency-us = <2000>;
242 min-residency-us = <6000>;
247 psci {
248 compatible = "arm,psci-1.0";
251 CPU_PD0: power-domain-cpu0 {
252 #power-domain-cells = <0>;
253 domain-idle-states = <&CPU_PWRDN>;
254 power-domains = <&CLUSTER_PD>;
257 CPU_PD1: power-domain-cpu1 {
258 #power-domain-cells = <0>;
259 domain-idle-states = <&CPU_PWRDN>;
260 power-domains = <&CLUSTER_PD>;
263 CLUSTER_PD: power-domain-cluster {
264 #power-domain-cells = <0>;
265 domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;