1 # SPDX-License-Identifier: GPL-2.0
4 $id: http://devicetree.org/schemas/arm/cpus.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: ARM CPUs bindings
10 - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
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.
17 Bindings for CPU nodes follow the Devicetree Specification, available from:
19 https://www.devicetree.org/specifications/
21 with updates for 32-bit and 64-bit ARM systems provided in this document.
23 ================================
24 Convention used in this document
25 ================================
27 This document follows the conventions described in the Devicetree
28 Specification, with the addition:
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
33 =====================================
34 cpus and cpu node bindings definition
35 =====================================
37 The ARM architecture, in accordance with the Devicetree Specification,
38 requires the cpus and cpu nodes to be present and contain the properties
44 description: Container of cpu nodes
49 Definition depends on ARM architecture version and configuration:
51 On uniprocessor ARM architectures previous to v7
52 value must be 1, to enable a simple enumeration
53 scheme for processors that do not have a HW CPU
54 identification register.
55 On 32-bit ARM 11 MPcore, ARM v7 or later systems
56 value must be 1, that corresponds to CPUID/MPIDR
58 On ARM v8 64-bit systems value should be set to 2,
59 that corresponds to the MPIDR_EL1 register size.
60 If MPIDR_EL1[63:32] value is equal to 0 on all CPUs
61 in the system, #address-cells can be set to 1, since
62 MPIDR_EL1[63:32] bits are not used for CPUs
78 Usage and definition depend on ARM architecture version and
81 On uniprocessor ARM architectures previous to v7
82 this property is required and must be set to 0.
84 On ARM 11 MPcore based systems this property is
85 required and matches the CPUID[11:0] register bits.
87 Bits [11:0] in the reg cell must be set to
88 bits [11:0] in CPU ID register.
90 All other bits in the reg cell must be set to 0.
92 On 32-bit ARM v7 or later systems this property is
93 required and matches the CPU MPIDR[23:0] register
96 Bits [23:0] in the reg cell must be set to
99 All other bits in the reg cell must be set to 0.
101 On ARM v8 64-bit systems this property is required
102 and matches the MPIDR_EL1 register affinity bits.
104 * If cpus node's #address-cells property is set to 2
106 The first reg cell bits [7:0] must be set to
107 bits [39:32] of MPIDR_EL1.
109 The second reg cell bits [23:0] must be set to
110 bits [23:0] of MPIDR_EL1.
112 * If cpus node's #address-cells property is set to 1
114 The reg cell bits [23:0] must be set to bits [23:0]
117 All other bits in the reg cells must be set to 0.
152 - arm,armv8 # Only for s/w models
186 - nvidia,tegra132-denver
187 - nvidia,tegra186-denver
188 - nvidia,tegra194-carmel
196 - $ref: '/schemas/types.yaml#/definitions/string'
198 # On ARM v8 64-bit this property is required
202 # On ARM 32-bit systems this property is optional
205 - allwinner,sun6i-a31
206 - allwinner,sun8i-a23
207 - allwinner,sun9i-a80-smp
208 - allwinner,sun8i-a83t-smp
210 - amlogic,meson8b-smp
212 - brcm,bcm11351-cpu-method
218 - marvell,armada-375-smp
219 - marvell,armada-380-smp
220 - marvell,armada-390-smp
221 - marvell,armada-xp-smp
222 - marvell,98dx3236-smp
223 - mediatek,mt6589-smp
224 - mediatek,mt81xx-tz-smp
229 - renesas,r9a06g032-smp
230 - rockchip,rk3036-smp
231 - rockchip,rk3066-smp
232 - socionext,milbeaut-m10v-smp
236 $ref: '/schemas/types.yaml#/definitions/uint64'
239 Required for systems that have an "enable-method"
240 property value of "spin-table".
241 On ARM v8 64-bit systems must be a two cell
242 property identifying a 64-bit zero-initialised
246 $ref: '/schemas/types.yaml#/definitions/phandle-array'
248 List of phandles to idle state nodes supported
249 by this cpu (see ./idle-states.txt).
252 $ref: '/schemas/types.yaml#/definitions/uint32'
254 u32 value representing CPU capacity (see ./cpu-capacity.txt) in
255 DMIPS/MHz, relative to highest capacity-dmips-mhz
258 dynamic-power-coefficient:
259 $ref: '/schemas/types.yaml#/definitions/uint32'
261 A u32 value that represents the running time dynamic
262 power coefficient in units of uW/MHz/V^2. The
263 coefficient can either be calculated from power
264 measurements or derived by analysis.
266 The dynamic power consumption of the CPU is
267 proportional to the square of the Voltage (V) and
268 the clock frequency (f). The coefficient is used to
269 calculate the dynamic power as below -
271 Pdyn = dynamic-power-coefficient * V^2 * f
273 where voltage is in V, frequency is in MHz.
276 $ref: '/schemas/types.yaml#/definitions/phandle'
278 Specifies the SAW* node associated with this CPU.
280 Required for systems that have an "enable-method" property
281 value of "qcom,kpss-acc-v1" or "qcom,kpss-acc-v2"
283 * arm/msm/qcom,saw2.txt
286 $ref: '/schemas/types.yaml#/definitions/phandle'
288 Specifies the ACC* node associated with this CPU.
290 Required for systems that have an "enable-method" property
291 value of "qcom,kpss-acc-v1" or "qcom,kpss-acc-v2"
293 * arm/msm/qcom,kpss-acc.txt
296 $ref: '/schemas/types.yaml#/definitions/phandle'
298 Specifies the syscon node controlling the cpu core power domains.
300 Optional for systems that have an "enable-method"
301 property value of "rockchip,rk3066-smp"
302 While optional, it is the preferred way to get access to
303 the cpu-core power-domains.
311 cpu-release-addr: [enable-method]
312 rockchip,pmu: [enable-method]
322 #address-cells = <1>;
326 compatible = "arm,cortex-a15";
332 compatible = "arm,cortex-a15";
338 compatible = "arm,cortex-a7";
344 compatible = "arm,cortex-a7";
350 // Example 2 (Cortex-A8 uniprocessor 32-bit system):
353 #address-cells = <1>;
357 compatible = "arm,cortex-a8";
363 // Example 3 (ARM 926EJ-S uniprocessor 32-bit system):
366 #address-cells = <1>;
370 compatible = "arm,arm926ej-s";
376 // Example 4 (ARM Cortex-A57 64-bit system):
379 #address-cells = <2>;
383 compatible = "arm,cortex-a57";
385 enable-method = "spin-table";
386 cpu-release-addr = <0 0x20000000>;
391 compatible = "arm,cortex-a57";
393 enable-method = "spin-table";
394 cpu-release-addr = <0 0x20000000>;
399 compatible = "arm,cortex-a57";
401 enable-method = "spin-table";
402 cpu-release-addr = <0 0x20000000>;
407 compatible = "arm,cortex-a57";
409 enable-method = "spin-table";
410 cpu-release-addr = <0 0x20000000>;
415 compatible = "arm,cortex-a57";
417 enable-method = "spin-table";
418 cpu-release-addr = <0 0x20000000>;
423 compatible = "arm,cortex-a57";
425 enable-method = "spin-table";
426 cpu-release-addr = <0 0x20000000>;
431 compatible = "arm,cortex-a57";
433 enable-method = "spin-table";
434 cpu-release-addr = <0 0x20000000>;
439 compatible = "arm,cortex-a57";
441 enable-method = "spin-table";
442 cpu-release-addr = <0 0x20000000>;
447 compatible = "arm,cortex-a57";
449 enable-method = "spin-table";
450 cpu-release-addr = <0 0x20000000>;
455 compatible = "arm,cortex-a57";
457 enable-method = "spin-table";
458 cpu-release-addr = <0 0x20000000>;
463 compatible = "arm,cortex-a57";
465 enable-method = "spin-table";
466 cpu-release-addr = <0 0x20000000>;
471 compatible = "arm,cortex-a57";
473 enable-method = "spin-table";
474 cpu-release-addr = <0 0x20000000>;
479 compatible = "arm,cortex-a57";
481 enable-method = "spin-table";
482 cpu-release-addr = <0 0x20000000>;
487 compatible = "arm,cortex-a57";
489 enable-method = "spin-table";
490 cpu-release-addr = <0 0x20000000>;
495 compatible = "arm,cortex-a57";
497 enable-method = "spin-table";
498 cpu-release-addr = <0 0x20000000>;
503 compatible = "arm,cortex-a57";
505 enable-method = "spin-table";
506 cpu-release-addr = <0 0x20000000>;