ARM Integrator/AP (Application Platform) and Integrator/CP (Compact Platform)
-----------------------------------------------------------------------------
ARM's oldest Linux-supported platform with connectors for different core
tiles of ARMv4, ARMv5 and ARMv6 type.

Required properties (in root node):
	compatible = "arm,integrator-ap";  /* Application Platform */
	compatible = "arm,integrator-cp";  /* Compact Platform */

FPGA type interrupt controllers, see the versatile-fpga-irq binding doc.

Required nodes:

- core-module: the root node to the Integrator platforms must have
  a core-module with regs and the compatible string
  "arm,core-module-integrator"
- external-bus-interface: the root node to the Integrator platforms
  must have an external bus interface with regs and the
  compatible-string "arm,external-bus-interface"

  Required properties for the core module:
  - regs: the location and size of the core module registers, one
    range of 0x200 bytes.

- syscon: the root node of the Integrator platforms must have a
  system controller node pointing to the control registers,
  with the compatible string
  "arm,integrator-ap-syscon"
  "arm,integrator-cp-syscon"
  respectively.

  Required properties for the system controller:
  - regs: the location and size of the system controller registers,
    one range of 0x100 bytes.

  Required properties for the AP system controller:
  - interrupts: the AP syscon node must include the logical module
    interrupts, stated in order of module instance <module 0>,
    <module 1>, <module 2> ... for the CP system controller this
    is not required not of any use.

/dts-v1/;
/include/ "integrator.dtsi"

/ {
	model = "ARM Integrator/AP";
	compatible = "arm,integrator-ap";

	core-module@10000000 {
		compatible = "arm,core-module-integrator";
		reg = <0x10000000 0x200>;
	};

	ebi@12000000 {
		compatible = "arm,external-bus-interface";
		reg = <0x12000000 0x100>;
	};

	syscon {
		compatible = "arm,integrator-ap-syscon";
		reg = <0x11000000 0x100>;
		interrupt-parent = <&pic>;
		/* These are the logic module IRQs */
		interrupts = <9>, <10>, <11>, <12>;
	};
};


ARM Versatile Application and Platform Baseboards
-------------------------------------------------
ARM's development hardware platform with connectors for customizable
core tiles.  The hardware configuration of the Versatile boards is
highly customizable.

Required properties (in root node):
	compatible = "arm,versatile-ab";  /* Application baseboard */
	compatible = "arm,versatile-pb";  /* Platform baseboard */

Interrupt controllers:
- VIC required properties:
	compatible = "arm,versatile-vic";
	interrupt-controller;
	#interrupt-cells = <1>;

- SIC required properties:
	compatible = "arm,versatile-sic";
	interrupt-controller;
	#interrupt-cells = <1>;

Required nodes:

- core-module: the root node to the Versatile platforms must have
  a core-module with regs and the compatible strings
  "arm,core-module-versatile", "syscon"

Optional nodes:

- arm,versatile-ib2-syscon : if the Versatile has an IB2 interface
  board mounted, this has a separate system controller that is
  defined in this node.
  Required properties:
  compatible = "arm,versatile-ib2-syscon", "syscon"

ARM RealView Boards
-------------------
The RealView boards cover tailored evaluation boards that are used to explore
the ARM11 and Cortex A-8 and Cortex A-9 processors.

Required properties (in root node):
	/* RealView Emulation Baseboard */
	compatible = "arm,realview-eb";
	 /* RealView Platform Baseboard for ARM1176JZF-S */
	compatible = "arm,realview-pb1176";
	/* RealView Platform Baseboard for ARM11 MPCore */
	compatible = "arm,realview-pb11mp";
	/* RealView Platform Baseboard for Cortex A-8 */
	compatible = "arm,realview-pba8";
	/* RealView Platform Baseboard Explore for Cortex A-9 */
	compatible = "arm,realview-pbx";

Required nodes:

- soc: some node of the RealView platforms must be the SoC
  node that contain the SoC-specific devices, withe the compatible
  string set to one of these tuples:
   "arm,realview-eb-soc", "simple-bus"
   "arm,realview-pb1176-soc", "simple-bus"
   "arm,realview-pb11mp-soc", "simple-bus"
   "arm,realview-pba8-soc", "simple-bus"
   "arm,realview-pbx-soc", "simple-bus"

- syscon: some subnode of the RealView SoC node must be a
  system controller node pointing to the control registers,
  with the compatible string set to one of these:
   "arm,realview-eb11mp-revb-syscon", "arm,realview-eb-syscon", "syscon"
   "arm,realview-eb11mp-revc-syscon", "arm,realview-eb-syscon", "syscon"
   "arm,realview-eb-syscon", "syscon"
   "arm,realview-pb1176-syscon", "syscon"
   "arm,realview-pb11mp-syscon", "syscon"
   "arm,realview-pba8-syscon", "syscon"
   "arm,realview-pbx-syscon", "syscon"

  Required properties for the system controller:
  - regs: the location and size of the system controller registers,
    one range of 0x1000 bytes.

Example:

/dts-v1/;
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	model = "ARM RealView PB1176 with device tree";
	compatible = "arm,realview-pb1176";
	#address-cells = <1>;
	#size-cells = <1>;

	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "arm,realview-pb1176-soc", "simple-bus";
		ranges;

		syscon: syscon@10000000 {
			compatible = "arm,realview-syscon", "syscon";
			reg = <0x10000000 0x1000>;
		};

	};
};

ARM Versatile Express Boards
-----------------------------
For details on the device tree bindings for ARM Versatile Express boards
please consult the vexpress.txt file in the same directory as this file.

ARM Juno Boards
----------------
The Juno boards are targeting development for AArch64 systems. The first
iteration, Juno r0, is a vehicle for evaluating big.LITTLE on AArch64,
with the second iteration, Juno r1, mainly aimed at development of PCIe
based systems. Juno r1 also has support for AXI masters placed on the TLX
connectors to join the coherency domain.

Juno boards are described in a similar way to ARM Versatile Express boards,
with the motherboard part of the hardware being described in a separate file
to highlight the fact that is part of the support infrastructure for the SoC.
Juno device tree bindings also share the Versatile Express bindings as
described under the RS1 memory mapping.

Required properties (in root node):
	compatible = "arm,juno";	/* For Juno r0 board */
	compatible = "arm,juno-r1";	/* For Juno r1 board */
	compatible = "arm,juno-r2";	/* For Juno r2 board */

Required nodes:
The description for the board must include:
   - a "psci" node describing the boot method used for the secondary CPUs.
     A detailed description of the bindings used for "psci" nodes is present
     in the psci.yaml file.
   - a "cpus" node describing the available cores and their associated
     "enable-method"s. For more details see cpus.yaml file.

Example:

/dts-v1/;
/ {
	model = "ARM Juno development board (r0)";
	compatible = "arm,juno", "arm,vexpress";
	interrupt-parent = <&gic>;
	#address-cells = <2>;
	#size-cells = <2>;

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

		A57_0: cpu@0 {
			compatible = "arm,cortex-a57";
			reg = <0x0 0x0>;
			device_type = "cpu";
			enable-method = "psci";
		};

		.....

		A53_0: cpu@100 {
			compatible = "arm,cortex-a53";
			reg = <0x0 0x100>;
			device_type = "cpu";
			enable-method = "psci";
		};

		.....
	};

};
