Lines Matching +full:psci +full:- +full:0

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
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
29 to #0.
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
70 # HVC #0, with the register assignments specified in this binding.
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#
116 arm,psci-suspend-param property.
118 It should also be noted that, in PSCI firmware v1.0 the OS-Initiated
123 [3] Documentation/devicetree/bindings/power/power-domain.yaml
124 [4] Documentation/devicetree/bindings/power/domain-idle-state.yaml
127 - compatible
128 - method
131 - if:
135 const: arm,psci
138 - cpu_off
139 - cpu_on
144 - |+
146 // Case 1: PSCI v0.1 only.
148 psci {
149 compatible = "arm,psci";
151 cpu_suspend = <0x95c10000>;
152 cpu_off = <0x95c10001>;
153 cpu_on = <0x95c10002>;
154 migrate = <0x95c10003>;
157 - |+
159 // Case 2: PSCI v0.2 only
161 psci {
162 compatible = "arm,psci-0.2";
167 - |+
169 // Case 3: PSCI v0.2 and PSCI v0.1.
172 * A DTB may provide IDs for use by kernels without PSCI 0.2 support,
174 * These IDs will be ignored by kernels with PSCI 0.2 support, which will
175 * use the standard PSCI 0.2 IDs exclusively.
178 psci {
179 compatible = "arm,psci-0.2", "arm,psci";
182 cpu_on = <0x95c10002>;
183 cpu_off = <0x95c10001>;
186 - |+
191 #size-cells = <0>;
192 #address-cells = <1>;
194 CPU0: cpu@0 {
196 compatible = "arm,cortex-a53";
197 reg = <0x0>;
198 enable-method = "psci";
199 power-domains = <&CPU_PD0>;
200 power-domain-names = "psci";
205 compatible = "arm,cortex-a53";
206 reg = <0x100>;
207 enable-method = "psci";
208 power-domains = <&CPU_PD1>;
209 power-domain-names = "psci";
212 idle-states {
214 CPU_PWRDN: cpu-power-down {
215 compatible = "arm,idle-state";
216 arm,psci-suspend-param = <0x0000001>;
217 entry-latency-us = <10>;
218 exit-latency-us = <10>;
219 min-residency-us = <100>;
223 domain-idle-states {
225 CLUSTER_RET: cluster-retention {
226 compatible = "domain-idle-state";
227 arm,psci-suspend-param = <0x1000011>;
228 entry-latency-us = <500>;
229 exit-latency-us = <500>;
230 min-residency-us = <2000>;
233 CLUSTER_PWRDN: cluster-power-down {
234 compatible = "domain-idle-state";
235 arm,psci-suspend-param = <0x1000031>;
236 entry-latency-us = <2000>;
237 exit-latency-us = <2000>;
238 min-residency-us = <6000>;
243 psci {
244 compatible = "arm,psci-1.0";
247 CPU_PD0: power-domain-cpu0 {
248 #power-domain-cells = <0>;
249 domain-idle-states = <&CPU_PWRDN>;
250 power-domains = <&CLUSTER_PD>;
253 CPU_PD1: power-domain-cpu1 {
254 #power-domain-cells = <0>;
255 domain-idle-states = <&CPU_PWRDN>;
256 power-domains = <&CLUSTER_PD>;
259 CLUSTER_PD: power-domain-cluster {
260 #power-domain-cells = <0>;
261 domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;