# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/cpus.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ARM CPUs bindings

maintainers:
  - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

description: |+
  The device tree allows to describe the layout of CPUs in a system through
  the "cpus" node, which in turn contains a number of subnodes (ie "cpu")
  defining properties for every cpu.

  Bindings for CPU nodes follow the Devicetree Specification, available from:

  https://www.devicetree.org/specifications/

  with updates for 32-bit and 64-bit ARM systems provided in this document.

  ================================
  Convention used in this document
  ================================

  This document follows the conventions described in the Devicetree
  Specification, with the addition:

  - square brackets define bitfields, eg reg[7:0] value of the bitfield in
    the reg property contained in bits 7 down to 0

  =====================================
  cpus and cpu node bindings definition
  =====================================

  The ARM architecture, in accordance with the Devicetree Specification,
  requires the cpus and cpu nodes to be present and contain the properties
  described below.

properties:
  $nodename:
    const: cpus
    description: Container of cpu nodes

  '#address-cells':
    enum: [1, 2]
    description: |
      Definition depends on ARM architecture version and configuration:

      On uniprocessor ARM architectures previous to v7
        value must be 1, to enable a simple enumeration
        scheme for processors that do not have a HW CPU
        identification register.
      On 32-bit ARM 11 MPcore, ARM v7 or later systems
        value must be 1, that corresponds to CPUID/MPIDR
        registers sizes.
      On ARM v8 64-bit systems value should be set to 2,
        that corresponds to the MPIDR_EL1 register size.
        If MPIDR_EL1[63:32] value is equal to 0 on all CPUs
        in the system, #address-cells can be set to 1, since
        MPIDR_EL1[63:32] bits are not used for CPUs
        identification.

  '#size-cells':
    const: 0

patternProperties:
  '^cpu@[0-9a-f]+$':
    properties:
      device_type:
        const: cpu

      reg:
        maxItems: 1
        description: |
          Usage and definition depend on ARM architecture version and
          configuration:

          On uniprocessor ARM architectures previous to v7
          this property is required and must be set to 0.

          On ARM 11 MPcore based systems this property is
            required and matches the CPUID[11:0] register bits.

            Bits [11:0] in the reg cell must be set to
            bits [11:0] in CPU ID register.

            All other bits in the reg cell must be set to 0.

          On 32-bit ARM v7 or later systems this property is
            required and matches the CPU MPIDR[23:0] register
            bits.

            Bits [23:0] in the reg cell must be set to
            bits [23:0] in MPIDR.

            All other bits in the reg cell must be set to 0.

          On ARM v8 64-bit systems this property is required
            and matches the MPIDR_EL1 register affinity bits.

            * If cpus node's #address-cells property is set to 2

              The first reg cell bits [7:0] must be set to
              bits [39:32] of MPIDR_EL1.

              The second reg cell bits [23:0] must be set to
              bits [23:0] of MPIDR_EL1.

            * If cpus node's #address-cells property is set to 1

              The reg cell bits [23:0] must be set to bits [23:0]
              of MPIDR_EL1.

          All other bits in the reg cells must be set to 0.

      compatible:
        items:
          - enum:
              - arm,arm710t
              - arm,arm720t
              - arm,arm740t
              - arm,arm7ej-s
              - arm,arm7tdmi
              - arm,arm7tdmi-s
              - arm,arm9es
              - arm,arm9ej-s
              - arm,arm920t
              - arm,arm922t
              - arm,arm925
              - arm,arm926e-s
              - arm,arm926ej-s
              - arm,arm940t
              - arm,arm946e-s
              - arm,arm966e-s
              - arm,arm968e-s
              - arm,arm9tdmi
              - arm,arm1020e
              - arm,arm1020t
              - arm,arm1022e
              - arm,arm1026ej-s
              - arm,arm1136j-s
              - arm,arm1136jf-s
              - arm,arm1156t2-s
              - arm,arm1156t2f-s
              - arm,arm1176jzf
              - arm,arm1176jz-s
              - arm,arm1176jzf-s
              - arm,arm11mpcore
              - arm,armv8 # Only for s/w models
              - arm,cortex-a5
              - arm,cortex-a7
              - arm,cortex-a8
              - arm,cortex-a9
              - arm,cortex-a12
              - arm,cortex-a15
              - arm,cortex-a17
              - arm,cortex-a53
              - arm,cortex-a57
              - arm,cortex-a72
              - arm,cortex-a73
              - arm,cortex-m0
              - arm,cortex-m0+
              - arm,cortex-m1
              - arm,cortex-m3
              - arm,cortex-m4
              - arm,cortex-r4
              - arm,cortex-r5
              - arm,cortex-r7
              - brcm,brahma-b15
              - brcm,brahma-b53
              - brcm,vulcan
              - cavium,thunder
              - cavium,thunder2
              - faraday,fa526
              - intel,sa110
              - intel,sa1100
              - marvell,feroceon
              - marvell,mohawk
              - marvell,pj4a
              - marvell,pj4b
              - marvell,sheeva-v5
              - marvell,sheeva-v7
              - nvidia,tegra132-denver
              - nvidia,tegra186-denver
              - nvidia,tegra194-carmel
              - qcom,krait
              - qcom,kryo
              - qcom,kryo385
              - qcom,scorpion

      enable-method:
        allOf:
          - $ref: '/schemas/types.yaml#/definitions/string'
          - oneOf:
            # On ARM v8 64-bit this property is required
            - enum:
                - psci
                - spin-table
            # On ARM 32-bit systems this property is optional
            - enum:
                - actions,s500-smp
                - allwinner,sun6i-a31
                - allwinner,sun8i-a23
                - allwinner,sun9i-a80-smp
                - allwinner,sun8i-a83t-smp
                - amlogic,meson8-smp
                - amlogic,meson8b-smp
                - arm,realview-smp
                - brcm,bcm11351-cpu-method
                - brcm,bcm23550
                - brcm,bcm2836-smp
                - brcm,bcm63138
                - brcm,bcm-nsp-smp
                - brcm,brahma-b15
                - marvell,armada-375-smp
                - marvell,armada-380-smp
                - marvell,armada-390-smp
                - marvell,armada-xp-smp
                - marvell,98dx3236-smp
                - mediatek,mt6589-smp
                - mediatek,mt81xx-tz-smp
                - qcom,gcc-msm8660
                - qcom,kpss-acc-v1
                - qcom,kpss-acc-v2
                - renesas,apmu
                - renesas,r9a06g032-smp
                - rockchip,rk3036-smp
                - rockchip,rk3066-smp
                - socionext,milbeaut-m10v-smp
                - ste,dbx500-smp

      cpu-release-addr:
        $ref: '/schemas/types.yaml#/definitions/uint64'

        description:
          Required for systems that have an "enable-method"
            property value of "spin-table".
          On ARM v8 64-bit systems must be a two cell
            property identifying a 64-bit zero-initialised
            memory location.

      cpu-idle-states:
        $ref: '/schemas/types.yaml#/definitions/phandle-array'
        description: |
          List of phandles to idle state nodes supported
          by this cpu (see ./idle-states.txt).

      capacity-dmips-mhz:
        $ref: '/schemas/types.yaml#/definitions/uint32'
        description:
          u32 value representing CPU capacity (see ./cpu-capacity.txt) in
          DMIPS/MHz, relative to highest capacity-dmips-mhz
          in the system.

      dynamic-power-coefficient:
        $ref: '/schemas/types.yaml#/definitions/uint32'
        description:
          A u32 value that represents the running time dynamic
          power coefficient in units of uW/MHz/V^2. The
          coefficient can either be calculated from power
          measurements or derived by analysis.

          The dynamic power consumption of the CPU  is
          proportional to the square of the Voltage (V) and
          the clock frequency (f). The coefficient is used to
          calculate the dynamic power as below -

          Pdyn = dynamic-power-coefficient * V^2 * f

          where voltage is in V, frequency is in MHz.

      qcom,saw:
        $ref: '/schemas/types.yaml#/definitions/phandle'
        description: |
          Specifies the SAW* node associated with this CPU.

          Required for systems that have an "enable-method" property
          value of "qcom,kpss-acc-v1" or "qcom,kpss-acc-v2"

          * arm/msm/qcom,saw2.txt

      qcom,acc:
        $ref: '/schemas/types.yaml#/definitions/phandle'
        description: |
          Specifies the ACC* node associated with this CPU.

          Required for systems that have an "enable-method" property
          value of "qcom,kpss-acc-v1" or "qcom,kpss-acc-v2"

          * arm/msm/qcom,kpss-acc.txt

      rockchip,pmu:
        $ref: '/schemas/types.yaml#/definitions/phandle'
        description: |
          Specifies the syscon node controlling the cpu core power domains.

          Optional for systems that have an "enable-method"
          property value of "rockchip,rk3066-smp"
          While optional, it is the preferred way to get access to
          the cpu-core power-domains.

    required:
      - device_type
      - reg
      - compatible

    dependencies:
      cpu-release-addr: [enable-method]
      rockchip,pmu: [enable-method]

required:
  - '#address-cells'
  - '#size-cells'

examples:
  - |
    cpus {
      #size-cells = <0>;
      #address-cells = <1>;

      cpu@0 {
        device_type = "cpu";
        compatible = "arm,cortex-a15";
        reg = <0x0>;
      };

      cpu@1 {
        device_type = "cpu";
        compatible = "arm,cortex-a15";
        reg = <0x1>;
      };

      cpu@100 {
        device_type = "cpu";
        compatible = "arm,cortex-a7";
        reg = <0x100>;
      };

      cpu@101 {
        device_type = "cpu";
        compatible = "arm,cortex-a7";
        reg = <0x101>;
      };
    };

  - |
    // Example 2 (Cortex-A8 uniprocessor 32-bit system):
    cpus {
      #size-cells = <0>;
      #address-cells = <1>;

      cpu@0 {
        device_type = "cpu";
        compatible = "arm,cortex-a8";
        reg = <0x0>;
      };
    };

  - |
    // Example 3 (ARM 926EJ-S uniprocessor 32-bit system):
    cpus {
      #size-cells = <0>;
      #address-cells = <1>;

      cpu@0 {
        device_type = "cpu";
        compatible = "arm,arm926ej-s";
        reg = <0x0>;
      };
    };

  - |
    //  Example 4 (ARM Cortex-A57 64-bit system):
    cpus {
      #size-cells = <0>;
      #address-cells = <2>;

      cpu@0 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x0 0x0>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@1 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x0 0x1>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@100 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x0 0x100>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@101 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x0 0x101>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@10000 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x0 0x10000>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@10001 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x0 0x10001>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@10100 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x0 0x10100>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@10101 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x0 0x10101>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@100000000 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x1 0x0>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@100000001 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x1 0x1>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@100000100 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x1 0x100>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@100000101 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x1 0x101>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@100010000 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x1 0x10000>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@100010001 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x1 0x10001>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@100010100 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x1 0x10100>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };

      cpu@100010101 {
        device_type = "cpu";
        compatible = "arm,cortex-a57";
        reg = <0x1 0x10101>;
        enable-method = "spin-table";
        cpu-release-addr = <0 0x20000000>;
      };
    };
...
