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, with 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";
		};

		.....
	};

};
