code:
* TI - L3 Network On Chip (NoC)

This version is an implementation of the generic NoC IP
provided by Arteris.

Required properties:
- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family
               Should be "ti,omap4-l3-noc" for OMAP4 family
               Should be "ti,omap5-l3-noc" for OMAP5 family
	       Should be "ti,dra7-l3-noc" for DRA7 family
               Should be "ti,am4372-l3-noc" for AM43 family
- reg:	Contains L3 register address range for each noc domain.
- ti,hwmods: "l3_main_1", ... One hwmod for each noc domain.

Examples:

ocp {
	compatible = "ti,omap4-l3-noc", "simple-bus";
	#address-cells = <1>;
	#size-cells = <1>;
	ranges;
	ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
};


code:
L4 interconnect bindings

These bindings describe the OMAP SoCs L4 interconnect bus.

Required properties:
- compatible : Should be "ti,omap2-l4" for OMAP2 family l4 core bus
	       Should be "ti,omap2-l4-wkup" for OMAP2 family l4 wkup bus
	       Should be "ti,omap3-l4-core" for OMAP3 family l4 core bus
	       Should be "ti,omap4-l4-cfg" for OMAP4 family l4 cfg bus
	       Should be "ti,omap4-l4-per" for OMAP4 family l4 per bus
	       Should be "ti,omap4-l4-wkup" for OMAP4 family l4 wkup bus
	       Should be "ti,omap5-l4-cfg" for OMAP5 family l4 cfg bus
	       Should be "ti,omap5-l4-wkup" for OMAP5 family l4 wkup bus
	       Should be "ti,dra7-l4-cfg" for DRA7 family l4 cfg bus
	       Should be "ti,dra7-l4-wkup" for DRA7 family l4 wkup bus
	       Should be "ti,am3-l4-wkup" for AM33xx family l4 wkup bus
	       Should be "ti,am4-l4-wkup" for AM43xx family l4 wkup bus
- ranges : contains the IO map range for the bus
- reg : registers link agent and interconnect agent and access protection
- reg-names : "la" for link agent, "ia0" to "ia3" for one to three
              interconnect agent instances, "ap" for access if it exists

Examples:

l4: interconnect@48000000 {
	compatible "ti,omap4-l4-per", "simple-bus";
	reg = <0x48000000 0x800>,
	      <0x48000800 0x800>,
	      <0x48001000 0x400>,
	      <0x48001400 0x400>,
	      <0x48001800 0x400>,
	      <0x48001c00 0x400>;
	reg-names = "ap", "la", "ia0", "ia1", "ia2", "ia3";
	#address-cells = <1>;
	#size-cells = <1>;
	ranges = <0 0x48000000 0x100000>;
};

repo_name: angery/linux


code:
* TI - MPU (Main Processor Unit) subsystem

The MPU subsystem contain one or several ARM cores
depending of the version.
The MPU contain CPUs, GIC, L2 cache and a local PRCM.

Required properties:
- compatible : Should be "ti,omap3-mpu" for OMAP3
               Should be "ti,omap4-mpu" for OMAP4
	       Should be "ti,omap5-mpu" for OMAP5
- ti,hwmods: "mpu"

Optional properties:
- sram:	Phandle to the ocmcram node

am335x and am437x only:
- pm-sram: Phandles to ocmcram nodes to be used for power management.
	   First should be type 'protect-exec' for the driver to use to copy
	   and run PM functions, second should be regular pool to be used for
	   data region for code. See Documentation/devicetree/bindings/sram/sram.yaml
	   for more details.

Examples:

- For an OMAP5 SMP system:

mpu {
    compatible = "ti,omap5-mpu";
    ti,hwmods = "mpu"
};

- For an OMAP4 SMP system:

mpu {
    compatible = "ti,omap4-mpu";
    ti,hwmods = "mpu";
};

- For an OMAP3 monocore system:

mpu {
    compatible = "ti,omap3-mpu";
    ti,hwmods = "mpu";
};

- For an AM335x system:

mpu {
	compatible = "ti,omap3-mpu";
	ti,hwmods = "mpu";
	pm-sram = <&pm_sram_code
		   &pm_sram_data>;
};


code:
* Texas Instruments OMAP

OMAP is currently using a static file per SoC family to describe the
IPs present in the SoC.
On top of that an omap_device is created to extend the platform_device
capabilities and to allow binding with one or several hwmods.
The hwmods will contain all the information to build the device:
address range, irq lines, dma lines, interconnect, PRCM register,
clock domain, input clocks.
For the moment just point to the existing hwmod, the next step will be
to move data from hwmod to device-tree representation.

Required properties:
- compatible: Every devices present in OMAP SoC should be in the
  form: "ti,XXX"
- ti,hwmods: list of hwmod names (ascii strings), that comes from the OMAP
  HW documentation, attached to a device. Must contain at least
  one hwmod.

Optional properties:
- ti,no_idle_on_suspend: When present, it prevents the PM to idle the module
  during suspend.
- ti,no-reset-on-init: When present, the module should not be reset at init
- ti,no-idle-on-init: When present, the module should not be idled at init
- ti,no-idle: When present, the module is never allowed to idle.

Example:

spinlock@1 {
    compatible = "ti,omap4-spinlock";
    ti,hwmods = "spinlock";
};

SoC Type (optional):

- General Purpose devices
  compatible = "ti,gp"
- High Security devices
  compatible = "ti,hs"

SoC Families:

- OMAP2 generic - defaults to OMAP2420
  compatible = "ti,omap2"
- OMAP3 generic
  compatible = "ti,omap3"
- OMAP4 generic - defaults to OMAP4430
  compatible = "ti,omap4"
- OMAP5 generic - defaults to OMAP5430
  compatible = "ti,omap5"
- DRA7 generic - defaults to DRA742
  compatible = "ti,dra7"
- AM33x generic
  compatible = "ti,am33xx"
- AM43x generic - defaults to AM4372
  compatible = "ti,am43"

SoCs:

- OMAP2420
  compatible = "ti,omap2420", "ti,omap2"
- OMAP2430
  compatible = "ti,omap2430", "ti,omap2"

- OMAP3430
  compatible = "ti,omap3430", "ti,omap3"
  legacy: "ti,omap34xx" - please do not use any more
- AM3517
  compatible = "ti,am3517", "ti,omap3"
- OMAP3630
  compatible = "ti,omap3630", "ti,omap3"
  legacy: "ti,omap36xx" - please do not use any more
- AM335x
  compatible = "ti,am33xx"

- OMAP4430
  compatible = "ti,omap4430", "ti,omap4"
- OMAP4460
  compatible = "ti,omap4460", "ti,omap4"

- OMAP5430
  compatible = "ti,omap5430", "ti,omap5"
- OMAP5432
  compatible = "ti,omap5432", "ti,omap5"

- DRA762
  compatible = "ti,dra762", "ti,dra7"

- DRA742
  compatible = "ti,dra742", "ti,dra74", "ti,dra7"

- DRA722
  compatible = "ti,dra722", "ti,dra72", "ti,dra7"

- DRA718
  compatible = "ti,dra718", "ti,dra722", "ti,dra72", "ti,dra7"

- AM5748
  compatible = "ti,am5748", "ti,dra762", "ti,dra7"

- AM5728
  compatible = "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7"

- AM5726
  compatible = "ti,am5726", "ti,dra742", "ti,dra74", "ti,dra7"

- AM5718
  compatible = "ti,am5718", "ti,dra722", "ti,dra72", "ti,dra7"

- AM5716
  compatible = "ti,am5716", "ti,dra722", "ti,dra72", "ti,dra7"

- AM4372
  compatible = "ti,am4372", "ti,am43"

Boards (incomplete list of examples):

- OMAP3 BeagleBoard : Low cost community board
  compatible = "ti,omap3-beagle", "ti,omap3430", "ti,omap3"

- OMAP3 BeagleBoard A to B4 : Early BeagleBoard revisions A to B4 with a timer quirk
  compatible = "ti,omap3-beagle-ab4", "ti,omap3-beagle", "ti,omap3430", "ti,omap3"

- OMAP3 Tobi with Overo : Commercial expansion board with daughter board
  compatible = "gumstix,omap3-overo-tobi", "gumstix,omap3-overo", "ti,omap3430", "ti,omap3"

- OMAP4 SDP : Software Development Board
  compatible = "ti,omap4-sdp", "ti,omap4430", "ti,omap4"

- OMAP4 PandaBoard : Low cost community board
  compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4"

- OMAP4 DuoVero with Parlor : Commercial expansion board with daughter board
  compatible = "gumstix,omap4-duovero-parlor", "gumstix,omap4-duovero", "ti,omap4430", "ti,omap4";

- OMAP4 VAR-STK-OM44 : Commercial dev kit with VAR-OM44CustomBoard and VAR-SOM-OM44 w/WLAN
  compatible = "variscite,var-stk-om44", "variscite,var-som-om44", "ti,omap4460", "ti,omap4";

- OMAP4 VAR-DVK-OM44 : Commercial dev kit with VAR-OM44CustomBoard, VAR-SOM-OM44 w/WLAN and LCD touchscreen
  compatible = "variscite,var-dvk-om44", "variscite,var-som-om44", "ti,omap4460", "ti,omap4";

- OMAP3 EVM : Software Development Board for OMAP35x, AM/DM37x
  compatible = "ti,omap3-evm", "ti,omap3630", "ti,omap3"

- AM335X EVM : Software Development Board for AM335x
  compatible = "ti,am335x-evm", "ti,am33xx"

- AM335X Bone : Low cost community board
  compatible = "ti,am335x-bone", "ti,am33xx"

- AM3359 ICEv2 : Low cost Industrial Communication Engine EVM.
  compatible = "ti,am3359-icev2", "ti,am33xx"

- AM335X OrionLXm : Substation Automation Platform
  compatible = "novatech,am335x-lxm", "ti,am33xx"

- AM335X phyBOARD-WEGA: Single Board Computer dev kit
  compatible = "phytec,am335x-wega", "phytec,am335x-phycore-som", "ti,am33xx"

- AM335X CM-T335 : System On Module, built around the Sitara AM3352/4
  compatible = "compulab,cm-t335", "ti,am33xx"

- AM335X SBC-T335 : single board computer, built around the Sitara AM3352/4
  compatible = "compulab,sbc-t335", "compulab,cm-t335", "ti,am33xx"

- AM335X phyCORE-AM335x: Development kit
  compatible = "phytec,am335x-pcm-953", "phytec,am335x-phycore-som", "ti,am33xx"

- AM335x phyBOARD-REGOR: Single Board Computer
  compatible = "phytec,am335x-regor", "phytec,am335x-phycore-som", "ti,am33xx"

- AM335X UC-8100-ME-T: Communication-centric industrial computing platform
  compatible = "moxa,uc-8100-me-t", "ti,am33xx";

- OMAP5 EVM : Evaluation Module
  compatible = "ti,omap5-evm", "ti,omap5"

- AM437x CM-T43
  compatible = "compulab,am437x-cm-t43", "ti,am4372", "ti,am43"

- AM437x SBC-T43
  compatible = "compulab,am437x-sbc-t43", "compulab,am437x-cm-t43", "ti,am4372", "ti,am43"

- AM43x EPOS EVM
  compatible = "ti,am43x-epos-evm", "ti,am43", "ti,am438x"

- AM437x GP EVM
  compatible = "ti,am437x-gp-evm", "ti,am4372", "ti,am43"

- AM437x SK EVM: AM437x StarterKit Evaluation Module
  compatible = "ti,am437x-sk-evm", "ti,am4372", "ti,am43"

- AM57XX CL-SOM-AM57x
  compatible = "compulab,cl-som-am57x", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7"

- AM57XX SBC-AM57x
  compatible = "compulab,sbc-am57x", "compulab,cl-som-am57x", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7"

- AM5748 IDK
  compatible = "ti,am5748-idk", "ti,am5748", "ti,dra762", "ti,dra7";

- AM5728 IDK
  compatible = "ti,am5728-idk", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7"

- AM5718 IDK
  compatible = "ti,am5718-idk", "ti,am5718", "ti,dra7"

- DRA762 EVM:  Software Development Board for DRA762
  compatible = "ti,dra76-evm", "ti,dra762", "ti,dra7"

- DRA742 EVM:  Software Development Board for DRA742
  compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7"

- DRA722 EVM: Software Development Board for DRA722
  compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7"

- DRA718 EVM: Software Development Board for DRA718
  compatible = "ti,dra718-evm", "ti,dra718", "ti,dra722", "ti,dra72", "ti,dra7"

- DM3730 Logic PD Torpedo + Wireless: Commercial System on Module with WiFi and Bluetooth
  compatible = "logicpd,dm3730-torpedo-devkit", "ti,omap3630", "ti,omap3"

- DM3730 Logic PD SOM-LV: Commercial System on Module with WiFi and Bluetooth
  compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3630", "ti,omap3"


code:
OMAP PRCM bindings

Power Reset and Clock Manager lists the device clocks and clockdomains under
a DT hierarchy. Each TI SoC can have multiple PRCM entities listed for it,
each describing one module and the clock hierarchy under it. see [1] for
documentation about the individual clock/clockdomain nodes.

[1] Documentation/devicetree/bindings/clock/ti/*

Required properties:
- compatible:	Must be one of:
		"ti,am3-prcm"
		"ti,am4-prcm"
		"ti,omap2-prcm"
		"ti,omap3-prm"
		"ti,omap3-cm"
		"ti,omap4-cm1"
		"ti,omap4-prm"
		"ti,omap4-cm2"
		"ti,omap4-scrm"
		"ti,omap5-prm"
		"ti,omap5-cm-core-aon"
		"ti,omap5-scrm"
		"ti,omap5-cm-core"
		"ti,dra7-prm"
		"ti,dra7-cm-core-aon"
		"ti,dra7-cm-core"
		"ti,dm814-prcm"
		"ti,dm816-prcm"
- reg:		Contains PRCM module register address range
		(base address and length)
- clocks:	clocks for this module
- clockdomains:	clockdomains for this module
- #clock-cells: From common clock binding
- clock-output-names: From common clock binding

Example:

cm: clock@48004000 {
	compatible = "ti,omap3-cm";
	reg = <0x48004000 0x4000>;
	#clock-cells = <0>;
	clock-output-names = "cm";

	cm_clocks: clocks {
		#address-cells = <1>;
		#size-cells = <0>;
	};

	cm_clockdomains: clockdomains {
	};
}

&cm_clocks {
	omap2_32k_fck: omap_32k_fck {
		#clock-cells = <0>;
		compatible = "fixed-clock";
		clock-frequency = <32768>;
	};
};

&cm_clockdomains {
	core_l3_clkdm: core_l3_clkdm {
		compatible = "ti,clockdomain";
		clocks = <&sdrc_ick>;
	};
};


code:
OMAP PRM instance bindings

Power and Reset Manager is an IP block on OMAP family of devices which
handle the power domains and their current state, and provide reset
handling for the domains and/or separate IP blocks under the power domain
hierarchy.

Required properties:
- compatible:	Must contain one of the following:
		"ti,am3-prm-inst"
		"ti,am4-prm-inst"
		"ti,omap4-prm-inst"
		"ti,omap5-prm-inst"
		"ti,dra7-prm-inst"
		and additionally must contain:
		"ti,omap-prm-inst"
- reg:		Contains PRM instance register address range
		(base address and length)

Optional properties:
- #power-domain-cells:	Should be 0 if the instance is a power domain provider.
- #reset-cells:	Should be 1 if the PRM instance in question supports resets.

Example:

prm_dsp2: prm@1b00 {
	compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
	reg = <0x1b00 0x40>;
	#power-domain-cells = <0>;
	#reset-cells = <1>;
};


code:
Oxford Semiconductor OXNAS SoCs Family device tree bindings
-------------------------------------------

Boards with the OX810SE SoC shall have the following properties:
  Required root node property:
    compatible: "oxsemi,ox810se"

Boards with the OX820 SoC shall have the following properties:
  Required root node property:
    compatible: "oxsemi,ox820"

Board compatible values:
  - "wd,mbwe" (OX810SE)
  - "cloudengines,pogoplugv3" (OX820)


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

title: ARM Performance Monitor Units

maintainers:
  - Mark Rutland <mark.rutland@arm.com>
  - Will Deacon <will.deacon@arm.com>

description: |+
  ARM cores often have a PMU for counting cpu and cache events like cache misses
  and hits. The interface to the PMU is part of the ARM ARM. The ARM PMU
  representation in the device tree should be done as under:-

properties:
  compatible:
    items:
      - enum:
          - apm,potenza-pmu
          - apple,firestorm-pmu
          - apple,icestorm-pmu
          - arm,armv8-pmuv3 # Only for s/w models
          - arm,arm1136-pmu
          - arm,arm1176-pmu
          - arm,arm11mpcore-pmu
          - arm,cortex-a5-pmu
          - arm,cortex-a7-pmu
          - arm,cortex-a8-pmu
          - arm,cortex-a9-pmu
          - arm,cortex-a12-pmu
          - arm,cortex-a15-pmu
          - arm,cortex-a17-pmu
          - arm,cortex-a32-pmu
          - arm,cortex-a34-pmu
          - arm,cortex-a35-pmu
          - arm,cortex-a53-pmu
          - arm,cortex-a55-pmu
          - arm,cortex-a57-pmu
          - arm,cortex-a65-pmu
          - arm,cortex-a72-pmu
          - arm,cortex-a73-pmu
          - arm,cortex-a75-pmu
          - arm,cortex-a76-pmu
          - arm,cortex-a77-pmu
          - arm,cortex-a78-pmu
          - arm,cortex-a510-pmu
          - arm,cortex-a710-pmu
          - arm,cortex-x1-pmu
          - arm,cortex-x2-pmu
          - arm,neoverse-e1-pmu
          - arm,neoverse-n1-pmu
          - arm,neoverse-n2-pmu
          - arm,neoverse-v1-pmu
          - brcm,vulcan-pmu
          - cavium,thunder-pmu
          - nvidia,denver-pmu
          - nvidia,carmel-pmu
          - qcom,krait-pmu
          - qcom,scorpion-pmu
          - qcom,scorpion-mp-pmu

  interrupts:
    # Don't know how many CPUs, so no constraints to specify
    description: 1 per-cpu interrupt (PPI) or 1 interrupt per core.

  interrupt-affinity:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      maxItems: 1
    description:
      When using SPIs, specifies a list of phandles to CPU
      nodes corresponding directly to the affinity of
      the SPIs listed in the interrupts property.

      When using a PPI, specifies a list of phandles to CPU
      nodes corresponding to the set of CPUs which have
      a PMU of this type signalling the PPI listed in the
      interrupts property, unless this is already specified
      by the PPI interrupt specifier itself (in which case
      the interrupt-affinity property shouldn't be present).

      This property should be present when there is more than
      a single SPI.

  qcom,no-pc-write:
    type: boolean
    description:
      Indicates that this PMU doesn't support the 0xc and 0xd events.

  secure-reg-access:
    type: boolean
    description:
      Indicates that the ARMv7 Secure Debug Enable Register
      (SDER) is accessible. This will cause the driver to do
      any setup required that is only possible in ARMv7 secure
      state. If not present the ARMv7 SDER will not be touched,
      which means the PMU may fail to operate unless external
      code (bootloader or security monitor) has performed the
      appropriate initialisation. Note that this property is
      not valid for non-ARMv7 CPUs or ARMv7 CPUs booting Linux
      in Non-secure state.

required:
  - compatible

additionalProperties: false

...


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

title: ARM Primecell Peripherals

maintainers:
  - Rob Herring <robh@kernel.org>

description: |+
  ARM, Ltd. Primecell peripherals have a standard id register that can be used to
  identify the peripheral type, vendor, and revision. This value can be used for
  driver matching.

properties:
  compatible:
    contains:
      const: arm,primecell
    description:
      Should be a specific name for the peripheral followed by "arm,primecell".
      The specific name will match the ARM engineering name for the logic block
      in the form "arm,pl???"

  arm,primecell-periphid:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Value to override the h/w ID value
  clocks:
    minItems: 1
    maxItems: 32
  clock-names:
    contains:
      const: apb_pclk
    additionalItems: true

additionalProperties: true

...


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

title: Power State Coordination Interface (PSCI)

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

description: |+
  Firmware implementing the PSCI functions described in ARM document number
  ARM DEN 0022A ("Power State Coordination Interface System Software on ARM
  processors") can be used by Linux to initiate various CPU-centric power
  operations.

  Issue A of the specification describes functions for CPU suspend, hotplug
  and migration of secure software.

  Functions are invoked by trapping to the privilege level of the PSCI
  firmware (specified as part of the binding below) and passing arguments
  in a manner similar to that specified by AAPCS:

     r0       => 32-bit Function ID / return value
    {r1 - r3}	=> Parameters

  Note that the immediate field of the trapping instruction must be set
  to #0.

  [2] Power State Coordination Interface (PSCI) specification
    http://infocenter.arm.com/help/topic/com.arm.doc.den0022c/DEN0022C_Power_State_Coordination_Interface.pdf

properties:
  $nodename:
    const: psci

  compatible:
    oneOf:
      - description:
          For implementations complying to PSCI versions prior to 0.2.
        const: arm,psci

      - description:
          For implementations complying to PSCI 0.2.
          Function IDs are not required and should be ignored by an OS with
          PSCI 0.2 support, but are permitted to be present for compatibility
          with existing software when "arm,psci" is later in the compatible
          list.
        minItems: 1
        items:
          - const: arm,psci-0.2
          - const: arm,psci

      - description:
          For implementations complying to PSCI 1.0.
          PSCI 1.0 is backward compatible with PSCI 0.2 with minor
          specification updates, as defined in the PSCI specification[2].
        minItems: 1
        items:
          - const: arm,psci-1.0
          - const: arm,psci-0.2
          - const: arm,psci

  method:
    description: The method of calling the PSCI firmware.
    $ref: /schemas/types.yaml#/definitions/string-array
    enum:
      - smc
      # HVC #0, with the register assignments specified in this binding.
      - hvc

  cpu_suspend:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Function ID for CPU_SUSPEND operation

  cpu_off:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Function ID for CPU_OFF operation

  cpu_on:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Function ID for CPU_ON operation

  migrate:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Function ID for MIGRATE operation

  arm,psci-suspend-param:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      power_state parameter to pass to the PSCI suspend call.

      Device tree nodes that require usage of PSCI CPU_SUSPEND function (ie
      idle state nodes with entry-method property is set to "psci", as per
      bindings in [1]) must specify this property.

      [1] Kernel documentation - ARM idle states bindings
        Documentation/devicetree/bindings/cpu/idle-states.yaml

patternProperties:
  "^power-domain-":
    $ref: "../power/power-domain.yaml#"

    type: object
    description: |
      ARM systems can have multiple cores, sometimes in an hierarchical
      arrangement. This often, but not always, maps directly to the processor
      power topology of the system. Individual nodes in a topology have their
      own specific power states and can be better represented hierarchically.

      For these cases, the definitions of the idle states for the CPUs and the
      CPU topology, must conform to the binding in [3]. The idle states
      themselves must conform to the binding in [4] and must specify the
      arm,psci-suspend-param property.

      It should also be noted that, in PSCI firmware v1.0 the OS-Initiated
      (OSI) CPU suspend mode is introduced. Using a hierarchical representation
      helps to implement support for OSI mode and OS implementations may choose
      to mandate it.

      [3] Documentation/devicetree/bindings/power/power-domain.yaml
      [4] Documentation/devicetree/bindings/power/domain-idle-state.yaml

required:
  - compatible
  - method

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: arm,psci
    then:
      required:
        - cpu_off
        - cpu_on

additionalProperties: false

examples:
  - |+

    // Case 1: PSCI v0.1 only.

    psci {
      compatible      = "arm,psci";
      method          = "smc";
      cpu_suspend     = <0x95c10000>;
      cpu_off         = <0x95c10001>;
      cpu_on          = <0x95c10002>;
      migrate         = <0x95c10003>;
    };

  - |+

    // Case 2: PSCI v0.2 only

    psci {
      compatible      = "arm,psci-0.2";
      method          = "smc";
    };

  - |+

    // Case 3: PSCI v0.2 and PSCI v0.1.

    /*
     * A DTB may provide IDs for use by kernels without PSCI 0.2 support,
     * enabling firmware and hypervisors to support existing and new kernels.
     * These IDs will be ignored by kernels with PSCI 0.2 support, which will
     * use the standard PSCI 0.2 IDs exclusively.
     */

    psci {
      compatible = "arm,psci-0.2", "arm,psci";
      method = "hvc";

      cpu_on = <0x95c10002>;
      cpu_off = <0x95c10001>;
    };

  - |+

    // Case 4: CPUs and CPU idle states described using the hierarchical model.

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

      CPU0: cpu@0 {
        device_type = "cpu";
        compatible = "arm,cortex-a53";
        reg = <0x0>;
        enable-method = "psci";
        power-domains = <&CPU_PD0>;
        power-domain-names = "psci";
      };

      CPU1: cpu@1 {
        device_type = "cpu";
        compatible = "arm,cortex-a53";
        reg = <0x100>;
        enable-method = "psci";
        power-domains = <&CPU_PD1>;
        power-domain-names = "psci";
      };

      idle-states {

        CPU_PWRDN: cpu-power-down {
          compatible = "arm,idle-state";
          arm,psci-suspend-param = <0x0000001>;
          entry-latency-us = <10>;
          exit-latency-us = <10>;
          min-residency-us = <100>;
        };
      };

      domain-idle-states {

        CLUSTER_RET: cluster-retention {
          compatible = "domain-idle-state";
          arm,psci-suspend-param = <0x1000011>;
          entry-latency-us = <500>;
          exit-latency-us = <500>;
          min-residency-us = <2000>;
        };

        CLUSTER_PWRDN: cluster-power-down {
          compatible = "domain-idle-state";
          arm,psci-suspend-param = <0x1000031>;
          entry-latency-us = <2000>;
          exit-latency-us = <2000>;
          min-residency-us = <6000>;
        };
      };
    };

    psci {
      compatible = "arm,psci-1.0";
      method = "smc";

      CPU_PD0: power-domain-cpu0 {
        #power-domain-cells = <0>;
        domain-idle-states = <&CPU_PWRDN>;
        power-domains = <&CLUSTER_PD>;
      };

      CPU_PD1: power-domain-cpu1 {
        #power-domain-cells = <0>;
        domain-idle-states =  <&CPU_PWRDN>;
        power-domains = <&CLUSTER_PD>;
      };

      CLUSTER_PD: power-domain-cluster {
        #power-domain-cells = <0>;
        domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;
      };
    };
...


code:
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/qcom-soc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm SoC compatibles naming convention

maintainers:
  - Bjorn Andersson <andersson@kernel.org>

description: |
  Guidelines for new compatibles for SoC blocks/components.
  When adding new compatibles in new bindings, use the format::
    qcom,SoC-IP

  For example::
   qcom,sdm845-llcc-bwmon

  When adding new compatibles to existing bindings, use the format in the
  existing binding, even if it contradicts the above.

select:
  properties:
    compatible:
      pattern: "^qcom,.*(apq|ipq|mdm|msm|qcm|qcs|sa|sc|sdm|sdx|sm)[0-9]+.*$"
  required:
    - compatible

properties:
  compatible:
    oneOf:
      # Preferred naming style for compatibles of SoC components:
      - pattern: "^qcom,(apq|ipq|mdm|msm|qcm|qcs|sa|sc|sdm|sdx|sm)[0-9]+-.*$"
      - pattern: "^qcom,(sa|sc)8[0-9]+[a-z][a-z]?-.*$"

      # Legacy namings - variations of existing patterns/compatibles are OK,
      # but do not add completely new entries to these:
      - pattern: "^qcom,[ak]pss-wdt-(apq|ipq|mdm|msm|qcm|qcs|sa|sc|sdm|sdx|sm)[0-9]+.*$"
      - pattern: "^qcom,gcc-(apq|ipq|mdm|msm|qcm|qcs|sa|sc|sdm|sdx|sm)[0-9]+.*$"
      - pattern: "^qcom,mmcc-(apq|ipq|mdm|msm|qcm|qcs|sa|sc|sdm|sdx|sm)[0-9]+.*$"
      - pattern: "^qcom,pcie-(apq|ipq|mdm|msm|qcm|qcs|sa|sc|sdm|sdx|sm)[0-9]+.*$"
      - pattern: "^qcom,rpm-(apq|ipq|mdm|msm|qcm|qcs|sa|sc|sdm|sdx|sm)[0-9]+.*$"
      - pattern: "^qcom,scm-(apq|ipq|mdm|msm|qcm|qcs|sa|sc|sdm|sdx|sm)[0-9]+.*$"
      - enum:
          - qcom,dsi-ctrl-6g-qcm2290
          - qcom,gpucc-sdm630
          - qcom,gpucc-sdm660
          - qcom,lcc-apq8064
          - qcom,lcc-ipq8064
          - qcom,lcc-mdm9615
          - qcom,lcc-msm8960
          - qcom,lpass-cpu-apq8016
          - qcom,usb-ss-ipq4019-phy
          - qcom,usb-hs-ipq4019-phy
          - qcom,vqmmc-ipq4019-regulator

      # Legacy compatibles with wild-cards - list cannot grow with new bindings:
      - enum:
          - qcom,ipq806x-gmac
          - qcom,ipq806x-nand
          - qcom,ipq806x-sata-phy
          - qcom,ipq806x-usb-phy-ss
          - qcom,ipq806x-usb-phy-hs

additionalProperties: true


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

title: QCOM

maintainers:
  - Bjorn Andersson <bjorn.andersson@linaro.org>

description: |
  Some qcom based bootloaders identify the dtb blob based on a set of
  device properties like SoC and platform and revisions of those components.
  To support this scheme, we encode this information into the board compatible
  string.

  Each board must specify a top-level board compatible string with the following
  format:

  	compatible = "qcom,<SoC>[-<soc_version>][-<foundry_id>]-<board>[/<subtype>][-<board_version>]"

  The 'SoC' and 'board' elements are required. All other elements are optional.

  The 'SoC' element must be one of the following strings:

        apq8016
        apq8026
        apq8074
        apq8084
        apq8096
        ipq4018
        ipq6018
        ipq8074
        mdm9615
        msm8226
        msm8916
        msm8956
        msm8974
        msm8976
        msm8992
        msm8994
        msm8996
        msm8998
        qcs404
        qdu1000
        qru1000
        sa8155p
        sa8540p
        sc7180
        sc7280
        sc8180x
        sc8280xp
        sda660
        sdm630
        sdm632
        sdm636
        sdm660
        sdm670
        sdm845
        sdx55
        sdx65
        sm4250
        sm6115
        sm6125
        sm6350
        sm6375
        sm7225
        sm8150
        sm8250
        sm8350
        sm8450

  The 'board' element must be one of the following strings:

        adp
        cdp
        cp01-c1
        dragonboard
        hk01
        hk10-c1
        hk10-c2
        idp
        liquid
        mtp
        qrd
        sbc
        x100

  The 'soc_version' and 'board_version' elements take the form of v<Major>.<Minor>
  where the minor number may be omitted when it's zero, i.e.  v1.0 is the same
  as v1. If all versions of the 'board_version' elements match, then a
  wildcard '*' should be used, e.g. 'v*'.

  The 'foundry_id' and 'subtype' elements are one or more digits from 0 to 9.

  Examples:

  	"qcom,msm8916-v1-cdp-pm8916-v2.1"

  A CDP board with an msm8916 SoC, version 1 paired with a pm8916 PMIC of version
  2.1.

  	"qcom,apq8074-v2.0-2-dragonboard/1-v0.1"

  A dragonboard board v0.1 of subtype 1 with an apq8074 SoC version 2, made in
  foundry 2.

  There are many devices in the list below that run the standard ChromeOS
  bootloader setup and use the open source depthcharge bootloader to boot the
  OS. These devices do not use the scheme described above. For details, see:
  https://docs.kernel.org/arm/google/chromebook-boot-flow.html

properties:
  $nodename:
    const: "/"
  compatible:
    oneOf:
      - items:
          - enum:
              - qcom,apq8016-sbc
          - const: qcom,apq8016

      - items:
          - enum:
              - asus,sparrow
              - huawei,sturgeon
              - lg,lenok
              - samsung,matisse-wifi
          - const: qcom,apq8026

      - items:
          - enum:
              - asus,nexus7-flo
              - lg,nexus4-mako
              - sony,xperia-yuga
              - qcom,apq8064-cm-qs600
              - qcom,apq8064-ifc6410
          - const: qcom,apq8064

      - items:
          - enum:
              - qcom,apq8074-dragonboard
          - const: qcom,apq8074

      - items:
          - enum:
              - qcom,apq8060-dragonboard
              - qcom,msm8660-surf
          - const: qcom,msm8660

      - items:
          - enum:
              - qcom,apq8084-mtp
              - qcom,apq8084-sbc
          - const: qcom,apq8084

      - items:
          - enum:
              - samsung,s3ve3g
          - const: qcom,msm8226

      - items:
          - enum:
              - sony,kugo-row
              - sony,suzu-row
          - const: qcom,msm8956

      - items:
          - enum:
              - qcom,msm8960-cdp
          - const: qcom,msm8960

      - items:
          - enum:
              - lge,hammerhead
              - sony,xperia-amami
              - sony,xperia-honami
          - const: qcom,msm8974

      - items:
          - enum:
              - fairphone,fp2
              - oneplus,bacon
              - samsung,klte
              - sony,xperia-castor
          - const: qcom,msm8974pro
          - const: qcom,msm8974

      - items:
          - const: qcom,msm8916-mtp
          - const: qcom,msm8916-mtp/1
          - const: qcom,msm8916

      - items:
          - enum:
              - alcatel,idol347
              - asus,z00l
              - huawei,g7
              - longcheer,l8910
              - samsung,a3u-eur
              - samsung,a5u-eur
              - samsung,e5
              - samsung,e7
              - samsung,grandmax
              - samsung,j5
              - samsung,serranove
              - wingtech,wt88047
          - const: qcom,msm8916

      - items:
          - const: longcheer,l8150
          - const: qcom,msm8916-v1-qrd/9-v1
          - const: qcom,msm8916

      - items:
          - enum:
              - lg,bullhead
              - microsoft,talkman
              - xiaomi,libra
          - const: qcom,msm8992

      - items:
          - enum:
              - sony,karin_windy
          - const: qcom,apq8094

      - items:
          - enum:
              - huawei,angler
              - microsoft,cityman
              - sony,ivy-row
              - sony,karin-row
              - sony,satsuki-row
              - sony,sumire-row
              - sony,suzuran-row
          - const: qcom,msm8994

      - items:
          - enum:
              - arrow,apq8096-db820c
              - inforce,ifc6640
          - const: qcom,apq8096-sbc
          - const: qcom,apq8096

      - items:
          - enum:
              - oneplus,oneplus3
              - oneplus,oneplus3t
              - qcom,msm8996-mtp
              - sony,dora-row
              - sony,kagura-row
              - sony,keyaki-row
              - xiaomi,gemini
          - const: qcom,msm8996

      - items:
          - enum:
              - xiaomi,natrium
              - xiaomi,scorpio
          - const: qcom,msm8996pro
          - const: qcom,msm8996

      - items:
          - enum:
              - asus,novago-tp370ql
              - fxtec,pro1
              - hp,envy-x2
              - lenovo,miix-630
              - oneplus,cheeseburger
              - oneplus,dumpling
              - qcom,msm8998-mtp
              - sony,xperia-lilac
              - sony,xperia-maple
              - sony,xperia-poplar
              - xiaomi,sagit
          - const: qcom,msm8998

      - items:
          - enum:
              - 8dev,jalapeno
              - alfa-network,ap120c-ac
          - const: qcom,ipq4018

      - items:
          - enum:
              - qcom,ipq4019-ap-dk01.1-c1
              - qcom,ipq4019-ap-dk04.1-c3
              - qcom,ipq4019-ap-dk07.1-c1
              - qcom,ipq4019-ap-dk07.1-c2
              - qcom,ipq4019-dk04.1-c1
          - const: qcom,ipq4019

      - items:
          - enum:
              - mikrotik,rb3011
              - qcom,ipq8064-ap148
          - const: qcom,ipq8064

      - items:
          - enum:
              - qcom,ipq8074-hk01
              - qcom,ipq8074-hk10-c1
              - qcom,ipq8074-hk10-c2
          - const: qcom,ipq8074

      - description: Sierra Wireless MangOH Green with WP8548 Module
        items:
          - const: swir,mangoh-green-wp8548
          - const: swir,wp8548
          - const: qcom,mdm9615

      - description: Qualcomm Technologies, Inc. Distributed Unit 1000 platform
        items:
          - enum:
              - qcom,qdu1000-idp
              - qcom,qdu1000-x100
          - const: qcom,qdu1000

      - description: Qualcomm Technologies, Inc. Radio Unit 1000 platform
        items:
          - enum:
              - qcom,qru1000-idp
          - const: qcom,qru1000

      - description: Qualcomm Technologies, Inc. SC7180 IDP
        items:
          - enum:
              - qcom,sc7180-idp
          - const: qcom,sc7180

      - description: HP Chromebook x2 11c (rev1 - 2)
        items:
          - const: google,coachz-rev1
          - const: google,coachz-rev2
          - const: qcom,sc7180

      - description: HP Chromebook x2 11c (newest rev)
        items:
          - const: google,coachz
          - const: qcom,sc7180

      - description: HP Chromebook x2 11c with LTE (rev1 - 2)
        items:
          - const: google,coachz-rev1-sku0
          - const: google,coachz-rev2-sku0
          - const: qcom,sc7180

      - description: HP Chromebook x2 11c with LTE (newest rev)
        items:
          - const: google,coachz-sku0
          - const: qcom,sc7180

      - description: Lenovo Chromebook Duet 5 13 (rev2)
        items:
          - const: google,homestar-rev2
          - const: google,homestar-rev23
          - const: qcom,sc7180

      - description: Lenovo Chromebook Duet 5 13 (rev3)
        items:
          - const: google,homestar-rev3
          - const: qcom,sc7180

      - description: Lenovo Chromebook Duet 5 13 (newest rev)
        items:
          - const: google,homestar
          - const: qcom,sc7180

      - description: Google Kingoftown (rev0)
        items:
          - const: google,kingoftown-rev0
          - const: qcom,sc7180

      - description: Google Kingoftown (newest rev)
        items:
          - const: google,kingoftown
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 (rev0)
        items:
          - const: google,lazor-rev0
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 (rev1 - 2)
        items:
          - const: google,lazor-rev1
          - const: google,lazor-rev2
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 (rev3 - 8)
        items:
          - const: google,lazor-rev3
          - const: google,lazor-rev4
          - const: google,lazor-rev5
          - const: google,lazor-rev6
          - const: google,lazor-rev7
          - const: google,lazor-rev8
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 (newest rev)
        items:
          - const: google,lazor
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 with KB Backlight (rev1 - 2)
        items:
          - const: google,lazor-rev1-sku2
          - const: google,lazor-rev2-sku2
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 with KB Backlight (rev3 - 8)
        items:
          - const: google,lazor-rev3-sku2
          - const: google,lazor-rev4-sku2
          - const: google,lazor-rev5-sku2
          - const: google,lazor-rev6-sku2
          - const: google,lazor-rev7-sku2
          - const: google,lazor-rev8-sku2
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 with KB Backlight (newest rev)
        items:
          - const: google,lazor-sku2
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 with LTE (rev1 - 2)
        items:
          - const: google,lazor-rev1-sku0
          - const: google,lazor-rev2-sku0
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 with LTE (rev3 - 8)
        items:
          - const: google,lazor-rev3-sku0
          - const: google,lazor-rev4-sku0
          - const: google,lazor-rev5-sku0
          - const: google,lazor-rev6-sku0
          - const: google,lazor-rev7-sku0
          - const: google,lazor-rev8-sku0
          - const: qcom,sc7180

      - description: Acer Chromebook Spin 513 with LTE (newest rev)
        items:
          - const: google,lazor-sku0
          - const: qcom,sc7180

      - description: Acer Chromebook 511 (rev4 - rev8)
        items:
          - const: google,lazor-rev4-sku4
          - const: google,lazor-rev5-sku4
          - const: google,lazor-rev6-sku4
          - const: google,lazor-rev7-sku4
          - const: google,lazor-rev8-sku4
          - const: qcom,sc7180

      - description: Acer Chromebook 511 (newest rev)
        items:
          - const: google,lazor-sku4
          - const: qcom,sc7180

      - description: Acer Chromebook 511 without Touchscreen (rev4)
        items:
          - const: google,lazor-rev4-sku5
          - const: qcom,sc7180

      - description: Acer Chromebook 511 without Touchscreen (rev5 - rev8)
        items:
          - const: google,lazor-rev5-sku5
          - const: google,lazor-rev5-sku6
          - const: google,lazor-rev6-sku6
          - const: google,lazor-rev7-sku6
          - const: google,lazor-rev8-sku6
          - const: qcom,sc7180

      - description: Acer Chromebook 511 without Touchscreen (newest rev)
        items:
          - const: google,lazor-sku6
          - const: qcom,sc7180

      - description: Google Mrbland with AUO panel (rev0)
        items:
          - const: google,mrbland-rev0-sku0
          - const: qcom,sc7180

      - description: Google Mrbland with AUO panel (newest rev)
        items:
          - const: google,mrbland-sku1536
          - const: qcom,sc7180

      - description: Google Mrbland with BOE panel (rev0)
        items:
          - const: google,mrbland-rev0-sku16
          - const: qcom,sc7180

      - description: Google Mrbland with BOE panel (newest rev)
        items:
          - const: google,mrbland-sku1024
          - const: google,mrbland-sku768
          - const: qcom,sc7180

      - description: Google Pazquel with Parade (newest rev)
        items:
          - const: google,pazquel-sku5
          - const: qcom,sc7180

      - description: Google Pazquel with TI (newest rev)
        items:
          - const: google,pazquel-sku1
          - const: qcom,sc7180

      - description: Google Pazquel with LTE and Parade (newest rev)
        items:
          - const: google,pazquel-sku6
          - const: google,pazquel-sku4
          - const: qcom,sc7180

      - description: Google Pazquel with LTE and TI (newest rev)
        items:
          - const: google,pazquel-sku0
          - const: google,pazquel-sku2
          - const: qcom,sc7180

      - description: Google Pazquel360 with LTE (newest rev)
        items:
          - const: google,pazquel-sku22
          - const: google,pazquel-sku20
          - const: qcom,sc7180

      - description: Google Pazquel360 with WiFi (newest rev)
        items:
          - const: google,pazquel-sku21
          - const: qcom,sc7180

      - description: Sharp Dynabook Chromebook C1 (rev1)
        items:
          - const: google,pompom-rev1
          - const: qcom,sc7180

      - description: Sharp Dynabook Chromebook C1 (rev2)
        items:
          - const: google,pompom-rev2
          - const: qcom,sc7180

      - description: Sharp Dynabook Chromebook C1 (newest rev)
        items:
          - const: google,pompom
          - const: qcom,sc7180

      - description: Sharp Dynabook Chromebook C1 with LTE (rev1)
        items:
          - const: google,pompom-rev1-sku0
          - const: qcom,sc7180

      - description: Sharp Dynabook Chromebook C1 with LTE (rev2)
        items:
          - const: google,pompom-rev2-sku0
          - const: qcom,sc7180

      - description: Sharp Dynabook Chromebook C1 with LTE (newest rev)
        items:
          - const: google,pompom-sku0
          - const: qcom,sc7180

      - description: Google Quackingstick (newest rev)
        items:
          - const: google,quackingstick-sku1537
          - const: qcom,sc7180

      - description: Google Quackingstick with LTE (newest rev)
        items:
          - const: google,quackingstick-sku1536
          - const: qcom,sc7180

      - description: Google Trogdor (newest rev)
        items:
          - const: google,trogdor
          - const: qcom,sc7180

      - description: Google Trogdor with LTE (newest rev)
        items:
          - const: google,trogdor-sku0
          - const: qcom,sc7180

      - description: Lenovo IdeaPad Chromebook Duet 3 with BOE panel (rev0)
        items:
          - const: google,wormdingler-rev0-sku16
          - const: qcom,sc7180

      - description: Lenovo IdeaPad Chromebook Duet 3 with BOE panel (newest rev)
        items:
          - const: google,wormdingler-sku1024
          - const: qcom,sc7180

      - description: Lenovo IdeaPad Chromebook Duet 3 with BOE panel and rt5682s (newest rev)
        items:
          - const: google,wormdingler-sku1025
          - const: qcom,sc7180

      - description: Lenovo IdeaPad Chromebook Duet 3 with INX panel (rev0)
        items:
          - const: google,wormdingler-rev0-sku0
          - const: qcom,sc7180

      - description: Lenovo IdeaPad Chromebook Duet 3 with INX panel (newest rev)
        items:
          - const: google,wormdingler-sku0
          - const: qcom,sc7180

      - description: Lenovo IdeaPad Chromebook Duet 3 with INX panel and rt5682s (newest rev)
        items:
          - const: google,wormdingler-sku1
          - const: qcom,sc7180

      - description: Qualcomm Technologies, Inc. sc7280 CRD platform (rev3 - 4)
        items:
          - const: qcom,sc7280-crd
          - const: google,hoglin-rev3
          - const: google,hoglin-rev4
          - const: google,piglin-rev3
          - const: google,piglin-rev4
          - const: qcom,sc7280

      - description: Qualcomm Technologies, Inc. sc7280 CRD platform (newest rev)
        items:
          - const: google,zoglin
          - const: google,hoglin
          - const: qcom,sc7280

      - description: Qualcomm Technologies, Inc. sc7280 IDP SKU1 platform
        items:
          - const: qcom,sc7280-idp
          - const: google,senor
          - const: qcom,sc7280

      - description: Qualcomm Technologies, Inc. sc7280 IDP SKU2 platform
        items:
          - const: qcom,sc7280-idp2
          - const: google,piglin
          - const: qcom,sc7280

      - description: Google Evoker (newest rev)
        items:
          - const: google,evoker
          - const: qcom,sc7280

      - description: Google Evoker with LTE (newest rev)
        items:
          - const: google,evoker-sku512
          - const: qcom,sc7280

      - description: Google Herobrine (newest rev)
        items:
          - const: google,herobrine
          - const: qcom,sc7280

      - description: Google Villager (rev0)
        items:
          - const: google,villager-rev0
          - const: qcom,sc7280

      - description: Google Villager (newest rev)
        items:
          - const: google,villager
          - const: qcom,sc7280

      - description: Google Villager with LTE (newest rev)
        items:
          - const: google,villager-sku512
          - const: qcom,sc7280

      - description: Google Zombie (newest rev)
        items:
          - const: google,zombie
          - const: qcom,sc7280

      - description: Google Zombie with LTE (newest rev)
        items:
          - const: google,zombie-sku512
          - const: qcom,sc7280

      - items:
          - enum:
              - lenovo,flex-5g
              - microsoft,surface-prox
              - qcom,sc8180x-primus
          - const: qcom,sc8180x

      - items:
          - enum:
              - lenovo,thinkpad-x13s
              - qcom,sc8280xp-crd
              - qcom,sc8280xp-qrd
          - const: qcom,sc8280xp

      - items:
          - enum:
              - sony,discovery-row
              - sony,kirin-row
              - sony,pioneer-row
              - sony,voyager-row
          - const: qcom,sdm630

      - items:
          - enum:
              - inforce,ifc6560
          - const: qcom,sda660

      - items:
          - enum:
              - fairphone,fp3
          - const: qcom,sdm632

      - items:
          - enum:
              - sony,mermaid-row
          - const: qcom,sdm636

      - items:
          - enum:
              - xiaomi,lavender
          - const: qcom,sdm660

      - items:
          - enum:
              - google,sargo
          - const: qcom,sdm670

      - items:
          - enum:
              - qcom,sdx55-mtp
              - qcom,sdx55-telit-fn980-tlb
              - qcom,sdx55-t55
          - const: qcom,sdx55

      - items:
          - enum:
              - qcom,sdx65-mtp
          - const: qcom,sdx65

      - items:
          - enum:
              - qcom,ipq6018-cp01
              - qcom,ipq6018-cp01-c1
          - const: qcom,ipq6018

      - items:
          - enum:
              - qcom,qcs404-evb-1000
              - qcom,qcs404-evb-4000
          - const: qcom,qcs404-evb
          - const: qcom,qcs404

      - items:
          - enum:
              - qcom,sa8155p-adp
          - const: qcom,sa8155p

      - items:
          - enum:
              - qcom,sa8295p-adp
              - qcom,sa8540p-ride
          - const: qcom,sa8540p

      - items:
          - enum:
              - google,cheza
              - google,cheza-rev1
              - google,cheza-rev2
              - lenovo,yoga-c630
              - lg,judyln
              - lg,judyp
              - oneplus,enchilada
              - oneplus,fajita
              - qcom,sdm845-mtp
              - shift,axolotl
              - samsung,starqltechn
              - samsung,w737
              - sony,akari-row
              - sony,akatsuki-row
              - sony,apollo-row
              - thundercomm,db845c
              - xiaomi,beryllium
              - xiaomi,beryllium-ebbg
              - xiaomi,polaris
          - const: qcom,sdm845

      - items:
          - enum:
              - oneplus,billie2
          - const: qcom,sm4250

      - items:
          - enum:
              - sony,pdx201
          - const: qcom,sm6125

      - items:
          - enum:
              - sony,pdx213
          - const: qcom,sm6350

      - items:
          - enum:
              - sony,pdx225
          - const: qcom,sm6375

      - items:
          - enum:
              - fairphone,fp4
          - const: qcom,sm7225

      - items:
          - enum:
              - microsoft,surface-duo
              - qcom,sm8150-hdk
              - qcom,sm8150-mtp
              - sony,bahamut-generic
              - sony,griffin-generic
          - const: qcom,sm8150

      - items:
          - enum:
              - qcom,qrb5165-rb5
              - qcom,sm8250-hdk
              - qcom,sm8250-mtp
              - sony,pdx203-generic
              - sony,pdx206-generic
          - const: qcom,sm8250

      - items:
          - enum:
              - microsoft,surface-duo2
              - qcom,sm8350-hdk
              - qcom,sm8350-mtp
              - sony,pdx214-generic
              - sony,pdx215-generic
          - const: qcom,sm8350

      - items:
          - enum:
              - qcom,sm8450-hdk
              - qcom,sm8450-qrd
              - sony,pdx223
              - sony,pdx224
          - const: qcom,sm8450

  # Board compatibles go above

  qcom,msm-id:
    $ref: /schemas/types.yaml#/definitions/uint32-matrix
    minItems: 1
    maxItems: 8
    items:
      items:
        - description: |
            MSM chipset ID - an exact match value consisting of two bitfields::
             - bits 0-15  - The unique MSM chipset ID
             - bits 16-31 - Reserved; should be 0
        - description: |
            Hardware revision ID - a chipset specific 32-bit ID representing
            the version of the chipset.  It is best a match value - the
            bootloader will look for the closest possible match.
    deprecated: true
    description:
      The MSM chipset and hardware revision used Qualcomm bootloaders.  It
      can optionally be an array of these to indicate multiple hardware that
      use the same device tree.  It is expected that the bootloader will use
      this information at boot-up to decide which device tree to use when given
      multiple device trees, some of which may not be compatible with the
      actual hardware.  It is the bootloader's responsibility to pass the
      correct device tree to the kernel.
      The property is deprecated.

  qcom,board-id:
    $ref: /schemas/types.yaml#/definitions/uint32-matrix
    minItems: 1
    maxItems: 8
    oneOf:
      - items:
          - items:
              - description: |
                  Board ID consisting of three bitfields::
                    - bits 31-24 - Unused
                    - bits 23-16 - Platform Version Major
                    - bits 15-8  - Platform Version Minor
                    - bits 7-0   - Platform Type
                  Platform Type field is an exact match value.  The
                  Platform Major/Minor field is a best match.  The bootloader will
                  look for the closest possible match.
              - description: |
                  Subtype ID unique to a Platform Type/Chipset ID.  For a given
                  Platform Type, there will typically only be a single board and the
                  subtype_id will be 0.  However in some cases board variants may
                  need to be distinguished by different subtype_id values.
      - items:
          # OnePlus uses a variant of board-id with four elements:
          - items:
              - const: 8
              - const: 0
              - description: OnePlus board ID
              - description: OnePlus subtype ID
    deprecated: true
    description:
      The board type and revision information.  It can optionally be an array
      of these to indicate multiple boards that use the same device tree.  It
      is expected that the bootloader will use this information at boot-up to
      decide which device tree to use when given multiple device trees, some of
      which may not be compatible with the actual hardware.  It is the
      bootloader's responsibility to pass the correct device tree to the
      kernel
      The property is deprecated.

allOf:
  # Explicit allow-list for older SoCs. The legacy properties are not allowed
  # on newer SoCs.
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,apq8026
              - qcom,apq8094
              - qcom,apq8096
              - qcom,msm8992
              - qcom,msm8994
              - qcom,msm8996
              - qcom,msm8998
              - qcom,sdm630
              - qcom,sdm632
              - qcom,sdm845
              - qcom,sdx55
              - qcom,sdx65
              - qcom,sm6125
              - qcom,sm6350
              - qcom,sm7225
              - qcom,sm8150
              - qcom,sm8250
    then:
      properties:
        qcom,board-id: true
        qcom,msm-id: true
    else:
      properties:
        qcom,board-id: false
        qcom,msm-id: false

  - if:
      properties:
        compatible:
          contains:
            enum:
              - oneplus,cheeseburger
              - oneplus,dumpling
              - oneplus,enchilada
              - oneplus,fajita
    then:
      properties:
        qcom,board-id:
          items:
            minItems: 4
    else:
      properties:
        qcom,board-id:
          items:
            maxItems: 2

additionalProperties: true

...


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

title: RDA Micro platforms

maintainers:
  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>

properties:
  $nodename:
    const: "/"
  compatible:
    items:
      - enum:
          - xunlong,orangepi-2g-iot     # Orange Pi 2G-IoT
          - xunlong,orangepi-i96        # Orange Pi i96
      - const: rda,8810pl

additionalProperties: true

...


code:
# SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/realtek.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Realtek platforms

maintainers:
  - Andreas Färber <afaerber@suse.de>

properties:
  $nodename:
    const: '/'
  compatible:
    oneOf:
      # RTD1195 SoC based boards
      - items:
          - enum:
              - mele,x1000 # MeLE X1000
              - realtek,horseradish # Realtek Horseradish EVB
          - const: realtek,rtd1195

      # RTD1293 SoC based boards
      - items:
          - enum:
              - synology,ds418j # Synology DiskStation DS418j
          - const: realtek,rtd1293

      # RTD1295 SoC based boards
      - items:
          - enum:
              - mele,v9 # MeLE V9
              - probox2,ava # ProBox2 AVA
              - xnano,x5 # Xnano X5
              - zidoo,x9s # Zidoo X9S
          - const: realtek,rtd1295

      # RTD1296 SoC based boards
      - items:
          - enum:
              - synology,ds418 # Synology DiskStation DS418
          - const: realtek,rtd1296

      # RTD1395 SoC based boards
      - items:
          - enum:
              - bananapi,bpi-m4 # Banana Pi BPI-M4
              - realtek,lion-skin # Realtek Lion Skin EVB
          - const: realtek,rtd1395

      # RTD1619 SoC based boards
      - items:
          - enum:
              - realtek,mjolnir # Realtek Mjolnir EVB
          - const: realtek,rtd1619

additionalProperties: true

...


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

title: Rockchip platforms

maintainers:
  - Heiko Stuebner <heiko@sntech.de>

properties:
  $nodename:
    const: '/'
  compatible:
    oneOf:

      - description: 96boards RK3399 Ficus (ROCK960 Enterprise Edition)
        items:
          - const: vamrs,ficus
          - const: rockchip,rk3399

      - description: 96boards RK3399 Rock960 (ROCK960 Consumer Edition)
        items:
          - const: vamrs,rock960
          - const: rockchip,rk3399

      - description: Amarula Vyasa RK3288
        items:
          - const: amarula,vyasa-rk3288
          - const: rockchip,rk3288

      - description: Anbernic RG351M
        items:
          - const: anbernic,rg351m
          - const: rockchip,rk3326

      - description: Anbernic RG353P
        items:
          - const: anbernic,rg353p
          - const: rockchip,rk3566

      - description: Anbernic RG353V
        items:
          - const: anbernic,rg353v
          - const: rockchip,rk3566

      - description: Anbernic RG353VS
        items:
          - const: anbernic,rg353vs
          - const: rockchip,rk3566

      - description: Anbernic RG503
        items:
          - const: anbernic,rg503
          - const: rockchip,rk3566

      - description: Asus Tinker board
        items:
          - const: asus,rk3288-tinker
          - const: rockchip,rk3288

      - description: Asus Tinker board S
        items:
          - const: asus,rk3288-tinker-s
          - const: rockchip,rk3288

      - description: Beelink A1
        items:
          - const: azw,beelink-a1
          - const: rockchip,rk3328

      - description: bq Curie 2 tablet
        items:
          - const: mundoreader,bq-curie2
          - const: rockchip,rk3066a

      - description: bq Edison 2 Quad-Core tablet
        items:
          - const: mundoreader,bq-edison2qc
          - const: rockchip,rk3188

      - description: ChipSPARK PopMetal-RK3288
        items:
          - const: chipspark,popmetal-rk3288
          - const: rockchip,rk3288

      - description: ChipSPARK Rayeager PX2
        items:
          - const: chipspark,rayeager-px2
          - const: rockchip,rk3066a

      - description: Elgin RV1108 R1
        items:
          - const: elgin,rv1108-r1
          - const: rockchip,rv1108

      - description: Engicam PX30.Core C.TOUCH 2.0
        items:
          - const: engicam,px30-core-ctouch2
          - const: engicam,px30-core
          - const: rockchip,px30

      - description: Engicam PX30.Core C.TOUCH 2.0 10.1" Open Frame
        items:
          - const: engicam,px30-core-ctouch2-of10
          - const: engicam,px30-core
          - const: rockchip,px30

      - description: Engicam PX30.Core EDIMM2.2 Starter Kit
        items:
          - const: engicam,px30-core-edimm2.2
          - const: engicam,px30-core
          - const: rockchip,px30

      - description: Firefly Firefly-RK3288
        items:
          - enum:
              - firefly,firefly-rk3288
              - firefly,firefly-rk3288-beta
          - const: rockchip,rk3288

      - description: Firefly Firefly-RK3288 Reload
        items:
          - const: firefly,firefly-rk3288-reload
          - const: rockchip,rk3288

      - description: Firefly Firefly-RK3399
        items:
          - const: firefly,firefly-rk3399
          - const: rockchip,rk3399

      - description: Firefly ROC-RK3308-CC
        items:
          - const: firefly,roc-rk3308-cc
          - const: rockchip,rk3308

      - description: Firefly roc-rk3328-cc
        items:
          - const: firefly,roc-rk3328-cc
          - const: rockchip,rk3328

      - description: Firefly ROC-RK3328-PC
        items:
          - const: firefly,roc-rk3328-pc
          - const: rockchip,rk3328

      - description: Firefly ROC-RK3399-PC
        items:
          - enum:
              - firefly,roc-rk3399-pc
              - firefly,roc-rk3399-pc-mezzanine
          - const: rockchip,rk3399

      - description: Firefly ROC-RK3399-PC-PLUS
        items:
          - enum:
              - firefly,roc-rk3399-pc-plus
          - const: rockchip,rk3399

      - description: Firefly Station M2
        items:
          - const: firefly,rk3566-roc-pc
          - const: rockchip,rk3566

      - description: FriendlyElec NanoPi R2S
        items:
          - const: friendlyarm,nanopi-r2s
          - const: rockchip,rk3328

      - description: FriendlyElec NanoPi4 series boards
        items:
          - enum:
              - friendlyarm,nanopc-t4
              - friendlyarm,nanopi-m4
              - friendlyarm,nanopi-m4b
              - friendlyarm,nanopi-neo4
              - friendlyarm,nanopi-r4s
              - friendlyarm,nanopi-r4s-enterprise
          - const: rockchip,rk3399

      - description: GeekBuying GeekBox
        items:
          - const: geekbuying,geekbox
          - const: rockchip,rk3368

      - description: Google Bob (Asus Chromebook Flip C101PA)
        items:
          - const: google,bob-rev13
          - const: google,bob-rev12
          - const: google,bob-rev11
          - const: google,bob-rev10
          - const: google,bob-rev9
          - const: google,bob-rev8
          - const: google,bob-rev7
          - const: google,bob-rev6
          - const: google,bob-rev5
          - const: google,bob-rev4
          - const: google,bob
          - const: google,gru
          - const: rockchip,rk3399

      - description: Google Brain (dev-board)
        items:
          - const: google,veyron-brain-rev0
          - const: google,veyron-brain
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Google Fievel (AOPEN Chromebox Mini)
        items:
          - const: google,veyron-fievel-rev8
          - const: google,veyron-fievel-rev7
          - const: google,veyron-fievel-rev6
          - const: google,veyron-fievel-rev5
          - const: google,veyron-fievel-rev4
          - const: google,veyron-fievel-rev3
          - const: google,veyron-fievel-rev2
          - const: google,veyron-fievel-rev1
          - const: google,veyron-fievel-rev0
          - const: google,veyron-fievel
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Google Gru (dev-board)
        items:
          - const: google,gru-rev15
          - const: google,gru-rev14
          - const: google,gru-rev13
          - const: google,gru-rev12
          - const: google,gru-rev11
          - const: google,gru-rev10
          - const: google,gru-rev9
          - const: google,gru-rev8
          - const: google,gru-rev7
          - const: google,gru-rev6
          - const: google,gru-rev5
          - const: google,gru-rev4
          - const: google,gru-rev3
          - const: google,gru-rev2
          - const: google,gru
          - const: rockchip,rk3399

      - description: Google Jaq (Haier Chromebook 11 and more w/ uSD)
        items:
          - const: google,veyron-jaq-rev5
          - const: google,veyron-jaq-rev4
          - const: google,veyron-jaq-rev3
          - const: google,veyron-jaq-rev2
          - const: google,veyron-jaq-rev1
          - const: google,veyron-jaq
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Google Jerry (Hisense Chromebook C11 and more)
        items:
          - const: google,veyron-jerry-rev15
          - const: google,veyron-jerry-rev14
          - const: google,veyron-jerry-rev13
          - const: google,veyron-jerry-rev12
          - const: google,veyron-jerry-rev11
          - const: google,veyron-jerry-rev10
          - const: google,veyron-jerry-rev7
          - const: google,veyron-jerry-rev6
          - const: google,veyron-jerry-rev5
          - const: google,veyron-jerry-rev4
          - const: google,veyron-jerry-rev3
          - const: google,veyron-jerry
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Google Kevin (Samsung Chromebook Plus)
        items:
          - const: google,kevin-rev15
          - const: google,kevin-rev14
          - const: google,kevin-rev13
          - const: google,kevin-rev12
          - const: google,kevin-rev11
          - const: google,kevin-rev10
          - const: google,kevin-rev9
          - const: google,kevin-rev8
          - const: google,kevin-rev7
          - const: google,kevin-rev6
          - const: google,kevin
          - const: google,gru
          - const: rockchip,rk3399

      - description: Google Mickey (Asus Chromebit CS10)
        items:
          - const: google,veyron-mickey-rev8
          - const: google,veyron-mickey-rev7
          - const: google,veyron-mickey-rev6
          - const: google,veyron-mickey-rev5
          - const: google,veyron-mickey-rev4
          - const: google,veyron-mickey-rev3
          - const: google,veyron-mickey-rev2
          - const: google,veyron-mickey-rev1
          - const: google,veyron-mickey-rev0
          - const: google,veyron-mickey
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Google Mighty (Haier Chromebook 11 and more w/ SD)
        items:
          - const: google,veyron-mighty-rev5
          - const: google,veyron-mighty-rev4
          - const: google,veyron-mighty-rev3
          - const: google,veyron-mighty-rev2
          - const: google,veyron-mighty-rev1
          - const: google,veyron-mighty
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Google Minnie (Asus Chromebook Flip C100P)
        items:
          - const: google,veyron-minnie-rev4
          - const: google,veyron-minnie-rev3
          - const: google,veyron-minnie-rev2
          - const: google,veyron-minnie-rev1
          - const: google,veyron-minnie-rev0
          - const: google,veyron-minnie
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Google Pinky (dev-board)
        items:
          - const: google,veyron-pinky-rev2
          - const: google,veyron-pinky
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Google Scarlet - Dumo (ASUS Chromebook Tablet CT100)
        items:
          - const: google,scarlet-rev15-sku0
          - const: google,scarlet-rev15
          - const: google,scarlet-rev14-sku0
          - const: google,scarlet-rev14
          - const: google,scarlet-rev13-sku0
          - const: google,scarlet-rev13
          - const: google,scarlet-rev12-sku0
          - const: google,scarlet-rev12
          - const: google,scarlet-rev11-sku0
          - const: google,scarlet-rev11
          - const: google,scarlet-rev10-sku0
          - const: google,scarlet-rev10
          - const: google,scarlet-rev9-sku0
          - const: google,scarlet-rev9
          - const: google,scarlet-rev8-sku0
          - const: google,scarlet-rev8
          - const: google,scarlet-rev7-sku0
          - const: google,scarlet-rev7
          - const: google,scarlet-rev6-sku0
          - const: google,scarlet-rev6
          - const: google,scarlet-rev5-sku0
          - const: google,scarlet-rev5
          - const: google,scarlet
          - const: google,gru
          - const: rockchip,rk3399

      - description: Google Scarlet - Kingdisplay (Acer Chromebook Tab 10)
        items:
          - const: google,scarlet-rev15-sku7
          - const: google,scarlet-rev15
          - const: google,scarlet-rev14-sku7
          - const: google,scarlet-rev14
          - const: google,scarlet-rev13-sku7
          - const: google,scarlet-rev13
          - const: google,scarlet-rev12-sku7
          - const: google,scarlet-rev12
          - const: google,scarlet-rev11-sku7
          - const: google,scarlet-rev11
          - const: google,scarlet-rev10-sku7
          - const: google,scarlet-rev10
          - const: google,scarlet-rev9-sku7
          - const: google,scarlet-rev9
          - const: google,scarlet-rev8-sku7
          - const: google,scarlet-rev8
          - const: google,scarlet-rev7-sku7
          - const: google,scarlet-rev7
          - const: google,scarlet-rev6-sku7
          - const: google,scarlet-rev6
          - const: google,scarlet-rev5-sku7
          - const: google,scarlet-rev5
          - const: google,scarlet-rev4-sku7
          - const: google,scarlet-rev4
          - const: google,scarlet-rev3-sku7
          - const: google,scarlet-rev3
          - const: google,scarlet
          - const: google,gru
          - const: rockchip,rk3399

      - description: |
          Google Scarlet - Innolux display (Acer Chromebook Tab 10 and more)
        items:
          - const: google,scarlet-rev15-sku2
          - const: google,scarlet-rev15-sku4
          - const: google,scarlet-rev15-sku6
          - const: google,scarlet-rev15
          - const: google,scarlet-rev14-sku2
          - const: google,scarlet-rev14-sku4
          - const: google,scarlet-rev14-sku6
          - const: google,scarlet-rev14
          - const: google,scarlet-rev13-sku2
          - const: google,scarlet-rev13-sku4
          - const: google,scarlet-rev13-sku6
          - const: google,scarlet-rev13
          - const: google,scarlet-rev12-sku2
          - const: google,scarlet-rev12-sku4
          - const: google,scarlet-rev12-sku6
          - const: google,scarlet-rev12
          - const: google,scarlet-rev11-sku2
          - const: google,scarlet-rev11-sku4
          - const: google,scarlet-rev11-sku6
          - const: google,scarlet-rev11
          - const: google,scarlet-rev10-sku2
          - const: google,scarlet-rev10-sku4
          - const: google,scarlet-rev10-sku6
          - const: google,scarlet-rev10
          - const: google,scarlet-rev9-sku2
          - const: google,scarlet-rev9-sku4
          - const: google,scarlet-rev9-sku6
          - const: google,scarlet-rev9
          - const: google,scarlet-rev8-sku2
          - const: google,scarlet-rev8-sku4
          - const: google,scarlet-rev8-sku6
          - const: google,scarlet-rev8
          - const: google,scarlet-rev7-sku2
          - const: google,scarlet-rev7-sku4
          - const: google,scarlet-rev7-sku6
          - const: google,scarlet-rev7
          - const: google,scarlet-rev6-sku2
          - const: google,scarlet-rev6-sku4
          - const: google,scarlet-rev6-sku6
          - const: google,scarlet-rev6
          - const: google,scarlet-rev5-sku2
          - const: google,scarlet-rev5-sku4
          - const: google,scarlet-rev5-sku6
          - const: google,scarlet-rev5
          - const: google,scarlet-rev4-sku2
          - const: google,scarlet-rev4-sku4
          - const: google,scarlet-rev4-sku6
          - const: google,scarlet-rev4
          - const: google,scarlet
          - const: google,gru
          - const: rockchip,rk3399

      - description: Google Speedy (Asus C201 Chromebook)
        items:
          - const: google,veyron-speedy-rev9
          - const: google,veyron-speedy-rev8
          - const: google,veyron-speedy-rev7
          - const: google,veyron-speedy-rev6
          - const: google,veyron-speedy-rev5
          - const: google,veyron-speedy-rev4
          - const: google,veyron-speedy-rev3
          - const: google,veyron-speedy-rev2
          - const: google,veyron-speedy
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Google Tiger (AOpen Chromebase Mini)
        items:
          - const: google,veyron-tiger-rev8
          - const: google,veyron-tiger-rev7
          - const: google,veyron-tiger-rev6
          - const: google,veyron-tiger-rev5
          - const: google,veyron-tiger-rev4
          - const: google,veyron-tiger-rev3
          - const: google,veyron-tiger-rev2
          - const: google,veyron-tiger-rev1
          - const: google,veyron-tiger-rev0
          - const: google,veyron-tiger
          - const: google,veyron
          - const: rockchip,rk3288

      - description: Haoyu MarsBoard RK3066
        items:
          - const: haoyu,marsboard-rk3066
          - const: rockchip,rk3066a

      - description: Hardkernel Odroid Go Advance
        items:
          - const: hardkernel,rk3326-odroid-go2
          - const: rockchip,rk3326

      - description: Hardkernel Odroid Go Advance Black Edition
        items:
          - const: hardkernel,rk3326-odroid-go2-v11
          - const: rockchip,rk3326

      - description: Hardkernel Odroid Go Super
        items:
          - const: hardkernel,rk3326-odroid-go3
          - const: rockchip,rk3326

      - description: Hardkernel Odroid M1
        items:
          - const: rockchip,rk3568-odroid-m1
          - const: rockchip,rk3568

      - description: Hugsun X99 TV Box
        items:
          - const: hugsun,x99
          - const: rockchip,rk3399

      - description: Khadas Edge series boards
        items:
          - enum:
              - khadas,edge
              - khadas,edge-captain
              - khadas,edge-v
          - const: rockchip,rk3399

      - description: Kobol Helios64
        items:
          - const: kobol,helios64
          - const: rockchip,rk3399

      - description: Mecer Xtreme Mini S6
        items:
          - const: mecer,xms6
          - const: rockchip,rk3229

      - description: Leez RK3399 P710
        items:
          - const: leez,p710
          - const: rockchip,rk3399

      - description: mqmaker MiQi
        items:
          - const: mqmaker,miqi
          - const: rockchip,rk3288

      - description: Netxeon R89 board
        items:
          - const: netxeon,r89
          - const: rockchip,rk3288

      - description: OPEN AI LAB EAIDK-610
        items:
          - const: openailab,eaidk-610
          - const: rockchip,rk3399

      - description: Orange Pi RK3399 board
        items:
          - const: rockchip,rk3399-orangepi
          - const: rockchip,rk3399

      - description: Phytec phyCORE-RK3288 Rapid Development Kit
        items:
          - const: phytec,rk3288-pcm-947
          - const: phytec,rk3288-phycore-som
          - const: rockchip,rk3288

      - description: Pine64 PinebookPro
        items:
          - const: pine64,pinebook-pro
          - const: rockchip,rk3399

      - description: Pine64 PineNote
        items:
          - enum:
              - pine64,pinenote-v1.1
              - pine64,pinenote-v1.2
          - const: pine64,pinenote
          - const: rockchip,rk3566

      - description: Pine64 PinePhonePro
        items:
          - const: pine64,pinephone-pro
          - const: rockchip,rk3399

      - description: Pine64 Rock64
        items:
          - const: pine64,rock64
          - const: rockchip,rk3328

      - description: Pine64 RockPro64
        items:
          - enum:
              - pine64,rockpro64-v2.1
              - pine64,rockpro64-v2.0
          - const: pine64,rockpro64
          - const: rockchip,rk3399

      - description: Pine64 Quartz64 Model A/B
        items:
          - enum:
              - pine64,quartz64-a
              - pine64,quartz64-b
          - const: rockchip,rk3566

      - description: Pine64 SoQuartz SoM
        items:
          - enum:
              - pine64,soquartz-blade
              - pine64,soquartz-cm4io
              - pine64,soquartz-model-a
          - const: pine64,soquartz
          - const: rockchip,rk3566

      - description: Radxa Rock
        items:
          - const: radxa,rock
          - const: rockchip,rk3188

      - description: Radxa ROCK Pi 4A/A+/B/B+/C
        items:
          - enum:
              - radxa,rockpi4a
              - radxa,rockpi4a-plus
              - radxa,rockpi4b
              - radxa,rockpi4b-plus
              - radxa,rockpi4c
          - const: radxa,rockpi4
          - const: rockchip,rk3399

      - description: Radxa ROCK 4C+
        items:
          - const: radxa,rock-4c-plus
          - const: rockchip,rk3399

      - description: Radxa ROCK Pi E
        items:
          - const: radxa,rockpi-e
          - const: rockchip,rk3328

      - description: Radxa ROCK Pi N8
        items:
          - const: radxa,rockpi-n8
          - const: vamrs,rk3288-vmarc-som
          - const: rockchip,rk3288

      - description: Radxa ROCK Pi N10
        items:
          - const: radxa,rockpi-n10
          - const: vamrs,rk3399pro-vmarc-som
          - const: rockchip,rk3399pro

      - description: Radxa ROCK Pi S
        items:
          - const: radxa,rockpis
          - const: rockchip,rk3308

      - description: Radxa Rock2 Square
        items:
          - const: radxa,rock2-square
          - const: rockchip,rk3288

      - description: Radxa ROCK3 Model A
        items:
          - const: radxa,rock3a
          - const: rockchip,rk3568

      - description: Rikomagic MK808 v1
        items:
          - const: rikomagic,mk808
          - const: rockchip,rk3066a

      - description: Rockchip Kylin
        items:
          - const: rockchip,rk3036-kylin
          - const: rockchip,rk3036

      - description: Rockchip PX3 Evaluation board
        items:
          - const: rockchip,px3-evb
          - const: rockchip,px3
          - const: rockchip,rk3188

      - description: Rockchip PX30 Evaluation board
        items:
          - const: rockchip,px30-evb
          - const: rockchip,px30

      - description: Rockchip PX5 Evaluation board
        items:
          - const: rockchip,px5-evb
          - const: rockchip,px5
          - const: rockchip,rk3368

      - description: Rockchip R88
        items:
          - const: rockchip,r88
          - const: rockchip,rk3368

      - description: Rockchip RK3036 Evaluation board
        items:
          - const: rockchip,rk3036-evb
          - const: rockchip,rk3036

      - description: Rockchip RK3228 Evaluation board
        items:
          - const: rockchip,rk3228-evb
          - const: rockchip,rk3228

      - description: Rockchip RK3229 Evaluation board
        items:
          - const: rockchip,rk3229-evb
          - const: rockchip,rk3229

      - description: Rockchip RK3288 Evaluation board
        items:
          - enum:
              - rockchip,rk3288-evb-act8846
              - rockchip,rk3288-evb-rk808
          - const: rockchip,rk3288

      - description: Rockchip RK3308 Evaluation board
        items:
          - const: rockchip,rk3308-evb
          - const: rockchip,rk3308

      - description: Rockchip RK3328 Evaluation board
        items:
          - const: rockchip,rk3328-evb
          - const: rockchip,rk3328

      - description: Rockchip RK3368 Evaluation board (act8846 pmic)
        items:
          - const: rockchip,rk3368-evb-act8846
          - const: rockchip,rk3368

      - description: Rockchip RK3399 Evaluation board
        items:
          - const: rockchip,rk3399-evb
          - const: rockchip,rk3399

      - description: Rockchip RK3399 Sapphire standalone
        items:
          - const: rockchip,rk3399-sapphire
          - const: rockchip,rk3399

      - description: Rockchip RK3399 Sapphire with Excavator Baseboard
        items:
          - const: rockchip,rk3399-sapphire-excavator
          - const: rockchip,rk3399

      - description: Rockchip RV1108 Evaluation board
        items:
          - const: rockchip,rv1108-evb
          - const: rockchip,rv1108

      - description: Theobroma Systems PX30-uQ7 with Haikou baseboard
        items:
          - const: tsd,px30-ringneck-haikou
          - const: rockchip,px30

      - description: Theobroma Systems RK3368-uQ7 with Haikou baseboard
        items:
          - const: tsd,rk3368-lion-haikou
          - const: rockchip,rk3368

      - description: Theobroma Systems RK3399-Q7 with Haikou baseboard
        items:
          - const: tsd,rk3399-puma-haikou
          - const: rockchip,rk3399

      - description: Tronsmart Orion R68 Meta
        items:
          - const: tronsmart,orion-r68-meta
          - const: rockchip,rk3368

      - description: Zkmagic A95X Z2
        items:
          - const: zkmagic,a95x-z2
          - const: rockchip,rk3318

      - description: Rockchip RK3566 BOX Evaluation Demo board
        items:
          - const: rockchip,rk3566-box-demo
          - const: rockchip,rk3566

      - description: Rockchip RK3568 Evaluation board
        items:
          - const: rockchip,rk3568-evb1-v10
          - const: rockchip,rk3568

      - description: Rockchip RK3568 Banana Pi R2 Pro
        items:
          - const: rockchip,rk3568-bpi-r2pro
          - const: rockchip,rk3568

additionalProperties: true

...


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

title: Rockchip Power Management Unit (PMU)

maintainers:
  - Elaine Zhang <zhangqing@rock-chips.com>
  - Heiko Stuebner <heiko@sntech.de>

description: |
  The PMU is used to turn on and off different power domains of the SoCs.
  This includes the power to the CPU cores.

select:
  properties:
    compatible:
      contains:
        enum:
          - rockchip,px30-pmu
          - rockchip,rk3066-pmu
          - rockchip,rk3128-pmu
          - rockchip,rk3288-pmu
          - rockchip,rk3368-pmu
          - rockchip,rk3399-pmu
          - rockchip,rk3568-pmu
          - rockchip,rk3588-pmu

  required:
    - compatible

properties:
  compatible:
    items:
      - enum:
          - rockchip,px30-pmu
          - rockchip,rk3066-pmu
          - rockchip,rk3128-pmu
          - rockchip,rk3288-pmu
          - rockchip,rk3368-pmu
          - rockchip,rk3399-pmu
          - rockchip,rk3568-pmu
          - rockchip,rk3588-pmu
      - const: syscon
      - const: simple-mfd

  reg:
    maxItems: 1

required:
  - compatible
  - reg

additionalProperties: true

examples:
  - |
    pmu@20004000 {
      compatible = "rockchip,rk3066-pmu", "syscon", "simple-mfd";
      reg = <0x20004000 0x100>;
    };


code:
ARM Dual Cluster System Configuration Block
-------------------------------------------

The Dual Cluster System Configuration Block (DCSCB) provides basic
functionality for controlling clocks, resets and configuration pins in
the Dual Cluster System implemented by the Real-Time System Model (RTSM).

Required properties:

- compatible : should be "arm,rtsm,dcscb"

- reg : physical base address and the size of the registers window

Example:

	dcscb@60000000 {
		compatible = "arm,rtsm,dcscb";
		reg = <0x60000000 0x1000>;
	};


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

title: Samsung Exynos and S5P SoC based boards

maintainers:
  - Krzysztof Kozlowski <krzk@kernel.org>

properties:
  $nodename:
    const: '/'
  compatible:
    oneOf:
      - description: S3C2416 based boards
        items:
          - enum:
              - samsung,smdk2416                # Samsung SMDK2416
          - const: samsung,s3c2416

      - description: S3C6410 based boards
        items:
          - enum:
              - friendlyarm,mini6410            # FriendlyARM Mini6410
              - samsung,smdk6410                # Samsung SMDK6410
          - const: samsung,s3c6410

      - description: S5PV210 based boards
        items:
          - enum:
              - aesop,torbreck                  # aESOP Torbreck based on S5PV210
              - samsung,aquila                  # Samsung Aquila based on S5PC110
              - samsung,goni                    # Samsung Goni based on S5PC110
              - yic,smdkc110                    # YIC System SMDKC110 based on S5PC110
              - yic,smdkv210                    # YIC System SMDKV210 based on S5PV210
          - const: samsung,s5pv210

      - description: S5PV210 based Aries boards
        items:
          - enum:
              - samsung,fascinate4g             # Samsung Galaxy S Fascinate 4G (SGH-T959P)
              - samsung,galaxys                 # Samsung Galaxy S (i9000)
          - const: samsung,aries
          - const: samsung,s5pv210

      - description: Exynos3250 based boards
        items:
          - enum:
              - samsung,monk                    # Samsung Simband
              - samsung,rinato                  # Samsung Gear2
          - const: samsung,exynos3250
          - const: samsung,exynos3

      - description: Samsung ARTIK5 boards
        items:
          - enum:
              - samsung,artik5-eval             # Samsung ARTIK5 eval board
          - const: samsung,artik5               # Samsung ARTIK5 module
          - const: samsung,exynos3250
          - const: samsung,exynos3

      - description: Exynos4210 based boards
        items:
          - enum:
              - insignal,origen                 # Insignal Origen
              - samsung,i9100                   # Samsung Galaxy S2 (GT-I9100)
              - samsung,smdkv310                # Samsung SMDKV310 eval
              - samsung,trats                   # Samsung Tizen Reference
              - samsung,universal_c210          # Samsung C210
          - const: samsung,exynos4210
          - const: samsung,exynos4

      - description: Exynos4412 based boards
        items:
          - enum:
              - friendlyarm,tiny4412            # FriendlyARM TINY4412
              - hardkernel,odroid-u3            # Hardkernel Odroid U3
              - hardkernel,odroid-x             # Hardkernel Odroid X
              - hardkernel,odroid-x2            # Hardkernel Odroid X2
              - insignal,origen4412             # Insignal Origen
              - samsung,smdk4412                # Samsung SMDK4412 eval
              - topeet,itop4412-elite           # TOPEET Elite base
          - const: samsung,exynos4412
          - const: samsung,exynos4

      - description: Samsung Midas family boards
        items:
          - enum:
              - samsung,i9300                   # Samsung GT-I9300
              - samsung,i9305                   # Samsung GT-I9305
              - samsung,n710x                   # Samsung GT-N7100/GT-N7105
              - samsung,trats2                  # Samsung Tizen Reference
          - const: samsung,midas
          - const: samsung,exynos4412
          - const: samsung,exynos4

      - description: Samsung p4note family boards
        items:
          - enum:
              - samsung,n8010                   # Samsung GT-N8010/GT-N8013
          - const: samsung,p4note
          - const: samsung,exynos4412
          - const: samsung,exynos4

      - description: Exynos5250 based boards
        items:
          - enum:
              - google,snow-rev5                # Google Snow Rev 5+
              - google,spring                   # Google Spring
              - insignal,arndale                # Insignal Arndale
              - samsung,smdk5250                # Samsung SMDK5250 eval
          - const: samsung,exynos5250
          - const: samsung,exynos5

      - description: Google Snow Boards (Rev 4+)
        items:
          - const: google,snow-rev4
          - const: google,snow
          - const: samsung,exynos5250
          - const: samsung,exynos5

      - description: Exynos5260 based boards
        items:
          - enum:
              - samsung,xyref5260               # Samsung Xyref5260 eval
          - const: samsung,exynos5260
          - const: samsung,exynos5

      - description: Exynos5410 based boards
        items:
          - enum:
              - hardkernel,odroid-xu            # Hardkernel Odroid XU
              - samsung,smdk5410                # Samsung SMDK5410 eval
          - const: samsung,exynos5410
          - const: samsung,exynos5

      - description: Exynos5420 based boards
        items:
          - enum:
              - insignal,arndale-octa           # Insignal Arndale Octa
              - samsung,chagall-wifi            # Samsung SM-T800
              - samsung,klimt-wifi              # Samsung SM-T700
              - samsung,smdk5420                # Samsung SMDK5420 eval
          - const: samsung,exynos5420
          - const: samsung,exynos5

      - description: Google Peach Pit Boards (Rev 6+)
        items:
          - const: google,pit-rev16
          - const: google,pit-rev15
          - const: google,pit-rev14
          - const: google,pit-rev13
          - const: google,pit-rev12
          - const: google,pit-rev11
          - const: google,pit-rev10
          - const: google,pit-rev9
          - const: google,pit-rev8
          - const: google,pit-rev7
          - const: google,pit-rev6
          - const: google,pit
          - const: google,peach
          - const: samsung,exynos5420
          - const: samsung,exynos5

      - description: Exynos5800 based boards
        items:
          - enum:
              - hardkernel,odroid-xu3           # Hardkernel Odroid XU3
              - hardkernel,odroid-xu3-lite      # Hardkernel Odroid XU3 Lite
              - hardkernel,odroid-xu4           # Hardkernel Odroid XU4
              - hardkernel,odroid-hc1           # Hardkernel Odroid HC1
          - const: samsung,exynos5800
          - const: samsung,exynos5

      - description: Google Peach Pi Boards (Rev 10+)
        items:
          - const: google,pi-rev16
          - const: google,pi-rev15
          - const: google,pi-rev14
          - const: google,pi-rev13
          - const: google,pi-rev12
          - const: google,pi-rev11
          - const: google,pi-rev10
          - const: google,pi
          - const: google,peach
          - const: samsung,exynos5800
          - const: samsung,exynos5

      - description: Exynos5433 based boards
        items:
          - enum:
              - samsung,tm2                     # Samsung TM2
              - samsung,tm2e                    # Samsung TM2E
          - const: samsung,exynos5433

      - description: Exynos7 based boards
        items:
          - enum:
              - samsung,exynos7-espresso        # Samsung Exynos7 Espresso
          - const: samsung,exynos7

      - description: Exynos7885 based boards
        items:
          - enum:
              - samsung,jackpotlte              # Samsung Galaxy A8 (2018)
          - const: samsung,exynos7885

      - description: Exynos850 based boards
        items:
          - enum:
              - winlink,e850-96                 # WinLink E850-96
          - const: samsung,exynos850

      - description: Exynos Auto v9 based boards
        items:
          - enum:
              - samsung,exynosautov9-sadk   # Samsung Exynos Auto v9 SADK
          - const: samsung,exynosautov9

required:
  - compatible

additionalProperties: true


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

title: Samsung Exynos Secure Firmware

maintainers:
  - Krzysztof Kozlowski <krzk@kernel.org>

properties:
  compatible:
    items:
      - const: samsung,secure-firmware

  reg:
    description:
      Address of non-secure SYSRAM used for communication with firmware.
    maxItems: 1

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    firmware@203f000 {
      compatible = "samsung,secure-firmware";
      reg = <0x0203f000 0x1000>;
    };


code:
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/samsung/samsung-soc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Samsung S3C, S5P and Exynos SoC compatibles naming convention

maintainers:
  - Krzysztof Kozlowski <krzk@kernel.org>

description: |
  Guidelines for new compatibles for SoC blocks/components.
  When adding new compatibles in new bindings, use the format::
    samsung,SoC-IP

  For example::
    samsung,exynos5433-cmu-isp

select:
  properties:
    compatible:
      pattern: "^samsung,.*(s3c|s5pv|exynos)[0-9a-z]+.*$"
  required:
    - compatible

properties:
  compatible:
    oneOf:
      - description: Preferred naming style for compatibles of SoC components
        pattern: "^samsung,(s3c|s5pv|exynos|exynosautov)[0-9]+-.*$"

      # Legacy compatibles with wild-cards - list cannot grow with new bindings:
      - enum:
          - samsung,exynos4x12-pinctrl
          - samsung,exynos4x12-usb2-phy
          - samsung,s3c64xx-pinctrl
          - samsung,s3c64xx-wakeup-eint

additionalProperties: true


code:
* ARM Secure world bindings

ARM CPUs with TrustZone support have two distinct address spaces,
"Normal" and "Secure". Most devicetree consumers (including the Linux
kernel) are not TrustZone aware and run entirely in either the Normal
world or the Secure world. However some devicetree consumers are
TrustZone aware and need to be able to determine whether devices are
visible only in the Secure address space, only in the Normal address
space, or visible in both. (One example of that situation would be a
virtual machine which boots Secure firmware and wants to tell the
firmware about the layout of the machine via devicetree.)

The general principle of the naming scheme for Secure world bindings
is that any property that needs a different value in the Secure world
can be supported by prefixing the property name with "secure-". So for
instance "secure-foo" would override "foo". For property names with
a vendor prefix, the Secure variant of "vendor,foo" would be
"vendor,secure-foo". If there is no "secure-" property then the Secure
world value is the same as specified for the Normal world by the
non-prefixed property. However, only the properties listed below may
validly have "secure-" versions; this list will be enlarged on a
case-by-case basis.

Defining the bindings in this way means that a device tree which has
been annotated to indicate the presence of Secure-only devices can
still be processed unmodified by existing Non-secure software (and in
particular by the kernel).

Note that it is still valid for bindings intended for purely Secure
world consumers (like kernels that run entirely in Secure) to simply
describe the view of Secure world using the standard bindings. These
secure- bindings only need to be used where both the Secure and Normal
world views need to be described in a single device tree.

Valid Secure world properties
-----------------------------

- secure-status : specifies whether the device is present and usable
  in the secure world. The combination of this with "status" allows
  the various possible combinations of device visibility to be
  specified. If "secure-status" is not specified it defaults to the
  same value as "status"; if "status" is not specified either then
  both default to "okay". This means the following combinations are
  possible:

   /* Neither specified: default to visible in both S and NS */
   secure-status = "okay";                          /* visible in both */
   status = "okay";                                 /* visible in both */
   status = "okay"; secure-status = "okay";         /* visible in both */
   secure-status = "disabled";                      /* NS-only */
   status = "okay"; secure-status = "disabled";     /* NS-only */
   status = "disabled"; secure-status = "okay";     /* S-only */
   status = "disabled";                             /* disabled in both */
   status = "disabled"; secure-status = "disabled"; /* disabled in both */

The secure-chosen node
----------------------

Similar to the /chosen node which serves as a place for passing data
between firmware and the operating system, the /secure-chosen node may
be used to pass data to the Secure OS. Only the properties defined
below may appear in the /secure-chosen node.

- stdout-path : specifies the device to be used by the Secure OS for
  its console output. The syntax is the same as for /chosen/stdout-path.
  If the /secure-chosen node exists but the stdout-path property is not
  present, the Secure OS should not perform any console output. If
  /secure-chosen does not exist, the Secure OS should use the value of
  /chosen/stdout-path instead (that is, use the same device as the
  Normal world OS).


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

title: Milbeaut platforms device tree bindings

maintainers:
  - Taichi Sugaya <sugaya.taichi@socionext.com>
  - Takao Orito <orito.takao@socionext.com>

properties:
  $nodename:
    const: '/'
  compatible:
    oneOf:
      - items:
          - enum:
              - socionext,milbeaut-m10v-evb
          - const: socionext,sc2000a

additionalProperties: true

...