]> asedeno.scripts.mit.edu Git - linux.git/blob - Documentation/devicetree/bindings/arm/cpus.yaml
dt-bindings: arm: Add kryo485 compatible
[linux.git] / Documentation / devicetree / bindings / arm / cpus.yaml
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/arm/cpus.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: ARM CPUs bindings
8
9 maintainers:
10   - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
11
12 description: |+
13   The device tree allows to describe the layout of CPUs in a system through
14   the "cpus" node, which in turn contains a number of subnodes (ie "cpu")
15   defining properties for every cpu.
16
17   Bindings for CPU nodes follow the Devicetree Specification, available from:
18
19   https://www.devicetree.org/specifications/
20
21   with updates for 32-bit and 64-bit ARM systems provided in this document.
22
23   ================================
24   Convention used in this document
25   ================================
26
27   This document follows the conventions described in the Devicetree
28   Specification, with the addition:
29
30   - square brackets define bitfields, eg reg[7:0] value of the bitfield in
31     the reg property contained in bits 7 down to 0
32
33   =====================================
34   cpus and cpu node bindings definition
35   =====================================
36
37   The ARM architecture, in accordance with the Devicetree Specification,
38   requires the cpus and cpu nodes to be present and contain the properties
39   described below.
40
41 properties:
42   reg:
43     maxItems: 1
44     description: |
45       Usage and definition depend on ARM architecture version and
46       configuration:
47
48       On uniprocessor ARM architectures previous to v7
49       this property is required and must be set to 0.
50
51       On ARM 11 MPcore based systems this property is
52         required and matches the CPUID[11:0] register bits.
53
54         Bits [11:0] in the reg cell must be set to
55         bits [11:0] in CPU ID register.
56
57         All other bits in the reg cell must be set to 0.
58
59       On 32-bit ARM v7 or later systems this property is
60         required and matches the CPU MPIDR[23:0] register
61         bits.
62
63         Bits [23:0] in the reg cell must be set to
64         bits [23:0] in MPIDR.
65
66         All other bits in the reg cell must be set to 0.
67
68       On ARM v8 64-bit systems this property is required
69         and matches the MPIDR_EL1 register affinity bits.
70
71         * If cpus node's #address-cells property is set to 2
72
73           The first reg cell bits [7:0] must be set to
74           bits [39:32] of MPIDR_EL1.
75
76           The second reg cell bits [23:0] must be set to
77           bits [23:0] of MPIDR_EL1.
78
79         * If cpus node's #address-cells property is set to 1
80
81           The reg cell bits [23:0] must be set to bits [23:0]
82           of MPIDR_EL1.
83
84       All other bits in the reg cells must be set to 0.
85
86   compatible:
87     enum:
88       - arm,arm710t
89       - arm,arm720t
90       - arm,arm740t
91       - arm,arm7ej-s
92       - arm,arm7tdmi
93       - arm,arm7tdmi-s
94       - arm,arm9es
95       - arm,arm9ej-s
96       - arm,arm920t
97       - arm,arm922t
98       - arm,arm925
99       - arm,arm926e-s
100       - arm,arm926ej-s
101       - arm,arm940t
102       - arm,arm946e-s
103       - arm,arm966e-s
104       - arm,arm968e-s
105       - arm,arm9tdmi
106       - arm,arm1020e
107       - arm,arm1020t
108       - arm,arm1022e
109       - arm,arm1026ej-s
110       - arm,arm1136j-s
111       - arm,arm1136jf-s
112       - arm,arm1156t2-s
113       - arm,arm1156t2f-s
114       - arm,arm1176jzf
115       - arm,arm1176jz-s
116       - arm,arm1176jzf-s
117       - arm,arm11mpcore
118       - arm,armv8 # Only for s/w models
119       - arm,cortex-a5
120       - arm,cortex-a7
121       - arm,cortex-a8
122       - arm,cortex-a9
123       - arm,cortex-a12
124       - arm,cortex-a15
125       - arm,cortex-a17
126       - arm,cortex-a53
127       - arm,cortex-a57
128       - arm,cortex-a72
129       - arm,cortex-a73
130       - arm,cortex-m0
131       - arm,cortex-m0+
132       - arm,cortex-m1
133       - arm,cortex-m3
134       - arm,cortex-m4
135       - arm,cortex-r4
136       - arm,cortex-r5
137       - arm,cortex-r7
138       - brcm,brahma-b15
139       - brcm,brahma-b53
140       - brcm,vulcan
141       - cavium,thunder
142       - cavium,thunder2
143       - faraday,fa526
144       - intel,sa110
145       - intel,sa1100
146       - marvell,feroceon
147       - marvell,mohawk
148       - marvell,pj4a
149       - marvell,pj4b
150       - marvell,sheeva-v5
151       - marvell,sheeva-v7
152       - nvidia,tegra132-denver
153       - nvidia,tegra186-denver
154       - nvidia,tegra194-carmel
155       - qcom,krait
156       - qcom,kryo
157       - qcom,kryo385
158       - qcom,kryo485
159       - qcom,scorpion
160
161   enable-method:
162     allOf:
163       - $ref: '/schemas/types.yaml#/definitions/string'
164       - oneOf:
165           # On ARM v8 64-bit this property is required
166           - enum:
167               - psci
168               - spin-table
169           # On ARM 32-bit systems this property is optional
170           - enum:
171               - actions,s500-smp
172               - allwinner,sun6i-a31
173               - allwinner,sun8i-a23
174               - allwinner,sun9i-a80-smp
175               - allwinner,sun8i-a83t-smp
176               - amlogic,meson8-smp
177               - amlogic,meson8b-smp
178               - arm,realview-smp
179               - brcm,bcm11351-cpu-method
180               - brcm,bcm23550
181               - brcm,bcm2836-smp
182               - brcm,bcm63138
183               - brcm,bcm-nsp-smp
184               - brcm,brahma-b15
185               - marvell,armada-375-smp
186               - marvell,armada-380-smp
187               - marvell,armada-390-smp
188               - marvell,armada-xp-smp
189               - marvell,98dx3236-smp
190               - mediatek,mt6589-smp
191               - mediatek,mt81xx-tz-smp
192               - qcom,gcc-msm8660
193               - qcom,kpss-acc-v1
194               - qcom,kpss-acc-v2
195               - renesas,apmu
196               - renesas,r9a06g032-smp
197               - rockchip,rk3036-smp
198               - rockchip,rk3066-smp
199               - socionext,milbeaut-m10v-smp
200               - ste,dbx500-smp
201
202   cpu-release-addr:
203     $ref: '/schemas/types.yaml#/definitions/uint64'
204
205     description:
206       Required for systems that have an "enable-method"
207         property value of "spin-table".
208       On ARM v8 64-bit systems must be a two cell
209         property identifying a 64-bit zero-initialised
210         memory location.
211
212   cpu-idle-states:
213     $ref: '/schemas/types.yaml#/definitions/phandle-array'
214     description: |
215       List of phandles to idle state nodes supported
216       by this cpu (see ./idle-states.txt).
217
218   capacity-dmips-mhz:
219     $ref: '/schemas/types.yaml#/definitions/uint32'
220     description:
221       u32 value representing CPU capacity (see ./cpu-capacity.txt) in
222       DMIPS/MHz, relative to highest capacity-dmips-mhz
223       in the system.
224
225   dynamic-power-coefficient:
226     $ref: '/schemas/types.yaml#/definitions/uint32'
227     description:
228       A u32 value that represents the running time dynamic
229       power coefficient in units of uW/MHz/V^2. The
230       coefficient can either be calculated from power
231       measurements or derived by analysis.
232
233       The dynamic power consumption of the CPU  is
234       proportional to the square of the Voltage (V) and
235       the clock frequency (f). The coefficient is used to
236       calculate the dynamic power as below -
237
238       Pdyn = dynamic-power-coefficient * V^2 * f
239
240       where voltage is in V, frequency is in MHz.
241
242   qcom,saw:
243     $ref: '/schemas/types.yaml#/definitions/phandle'
244     description: |
245       Specifies the SAW* node associated with this CPU.
246
247       Required for systems that have an "enable-method" property
248       value of "qcom,kpss-acc-v1" or "qcom,kpss-acc-v2"
249
250       * arm/msm/qcom,saw2.txt
251
252   qcom,acc:
253     $ref: '/schemas/types.yaml#/definitions/phandle'
254     description: |
255       Specifies the ACC* node associated with this CPU.
256
257       Required for systems that have an "enable-method" property
258       value of "qcom,kpss-acc-v1" or "qcom,kpss-acc-v2"
259
260       * arm/msm/qcom,kpss-acc.txt
261
262   rockchip,pmu:
263     $ref: '/schemas/types.yaml#/definitions/phandle'
264     description: |
265       Specifies the syscon node controlling the cpu core power domains.
266
267       Optional for systems that have an "enable-method"
268       property value of "rockchip,rk3066-smp"
269       While optional, it is the preferred way to get access to
270       the cpu-core power-domains.
271
272 required:
273   - device_type
274   - reg
275   - compatible
276
277 dependencies:
278   rockchip,pmu: [enable-method]
279
280 examples:
281   - |
282     cpus {
283       #size-cells = <0>;
284       #address-cells = <1>;
285
286       cpu@0 {
287         device_type = "cpu";
288         compatible = "arm,cortex-a15";
289         reg = <0x0>;
290       };
291
292       cpu@1 {
293         device_type = "cpu";
294         compatible = "arm,cortex-a15";
295         reg = <0x1>;
296       };
297
298       cpu@100 {
299         device_type = "cpu";
300         compatible = "arm,cortex-a7";
301         reg = <0x100>;
302       };
303
304       cpu@101 {
305         device_type = "cpu";
306         compatible = "arm,cortex-a7";
307         reg = <0x101>;
308       };
309     };
310
311   - |
312     // Example 2 (Cortex-A8 uniprocessor 32-bit system):
313     cpus {
314       #size-cells = <0>;
315       #address-cells = <1>;
316
317       cpu@0 {
318         device_type = "cpu";
319         compatible = "arm,cortex-a8";
320         reg = <0x0>;
321       };
322     };
323
324   - |
325     // Example 3 (ARM 926EJ-S uniprocessor 32-bit system):
326     cpus {
327       #size-cells = <0>;
328       #address-cells = <1>;
329
330       cpu@0 {
331         device_type = "cpu";
332         compatible = "arm,arm926ej-s";
333         reg = <0x0>;
334       };
335     };
336
337   - |
338     //  Example 4 (ARM Cortex-A57 64-bit system):
339     cpus {
340       #size-cells = <0>;
341       #address-cells = <2>;
342
343       cpu@0 {
344         device_type = "cpu";
345         compatible = "arm,cortex-a57";
346         reg = <0x0 0x0>;
347         enable-method = "spin-table";
348         cpu-release-addr = <0 0x20000000>;
349       };
350
351       cpu@1 {
352         device_type = "cpu";
353         compatible = "arm,cortex-a57";
354         reg = <0x0 0x1>;
355         enable-method = "spin-table";
356         cpu-release-addr = <0 0x20000000>;
357       };
358
359       cpu@100 {
360         device_type = "cpu";
361         compatible = "arm,cortex-a57";
362         reg = <0x0 0x100>;
363         enable-method = "spin-table";
364         cpu-release-addr = <0 0x20000000>;
365       };
366
367       cpu@101 {
368         device_type = "cpu";
369         compatible = "arm,cortex-a57";
370         reg = <0x0 0x101>;
371         enable-method = "spin-table";
372         cpu-release-addr = <0 0x20000000>;
373       };
374
375       cpu@10000 {
376         device_type = "cpu";
377         compatible = "arm,cortex-a57";
378         reg = <0x0 0x10000>;
379         enable-method = "spin-table";
380         cpu-release-addr = <0 0x20000000>;
381       };
382
383       cpu@10001 {
384         device_type = "cpu";
385         compatible = "arm,cortex-a57";
386         reg = <0x0 0x10001>;
387         enable-method = "spin-table";
388         cpu-release-addr = <0 0x20000000>;
389       };
390
391       cpu@10100 {
392         device_type = "cpu";
393         compatible = "arm,cortex-a57";
394         reg = <0x0 0x10100>;
395         enable-method = "spin-table";
396         cpu-release-addr = <0 0x20000000>;
397       };
398
399       cpu@10101 {
400         device_type = "cpu";
401         compatible = "arm,cortex-a57";
402         reg = <0x0 0x10101>;
403         enable-method = "spin-table";
404         cpu-release-addr = <0 0x20000000>;
405       };
406
407       cpu@100000000 {
408         device_type = "cpu";
409         compatible = "arm,cortex-a57";
410         reg = <0x1 0x0>;
411         enable-method = "spin-table";
412         cpu-release-addr = <0 0x20000000>;
413       };
414
415       cpu@100000001 {
416         device_type = "cpu";
417         compatible = "arm,cortex-a57";
418         reg = <0x1 0x1>;
419         enable-method = "spin-table";
420         cpu-release-addr = <0 0x20000000>;
421       };
422
423       cpu@100000100 {
424         device_type = "cpu";
425         compatible = "arm,cortex-a57";
426         reg = <0x1 0x100>;
427         enable-method = "spin-table";
428         cpu-release-addr = <0 0x20000000>;
429       };
430
431       cpu@100000101 {
432         device_type = "cpu";
433         compatible = "arm,cortex-a57";
434         reg = <0x1 0x101>;
435         enable-method = "spin-table";
436         cpu-release-addr = <0 0x20000000>;
437       };
438
439       cpu@100010000 {
440         device_type = "cpu";
441         compatible = "arm,cortex-a57";
442         reg = <0x1 0x10000>;
443         enable-method = "spin-table";
444         cpu-release-addr = <0 0x20000000>;
445       };
446
447       cpu@100010001 {
448         device_type = "cpu";
449         compatible = "arm,cortex-a57";
450         reg = <0x1 0x10001>;
451         enable-method = "spin-table";
452         cpu-release-addr = <0 0x20000000>;
453       };
454
455       cpu@100010100 {
456         device_type = "cpu";
457         compatible = "arm,cortex-a57";
458         reg = <0x1 0x10100>;
459         enable-method = "spin-table";
460         cpu-release-addr = <0 0x20000000>;
461       };
462
463       cpu@100010101 {
464         device_type = "cpu";
465         compatible = "arm,cortex-a57";
466         reg = <0x1 0x10101>;
467         enable-method = "spin-table";
468         cpu-release-addr = <0 0x20000000>;
469       };
470     };
471 ...