]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
arm64: dts: marvell: Prepare the introduction of CP115
authorMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 4 Oct 2019 14:27:29 +0000 (16:27 +0200)
committerGregory CLEMENT <gregory.clement@bootlin.com>
Wed, 9 Oct 2019 07:36:41 +0000 (09:36 +0200)
CP110 and CP115 are almost the same in terms of features and have a
very limited set of differences. Let's create an armada-cp11x.dtsi
file which will be used to instantiate both CP110 and CP115
nodes.

The only changes between the two armada-cp11{0,x}.dtsi files are the
following naming in macros: s/CP110/CP11X/.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
arch/arm64/boot/dts/marvell/armada-70x0.dtsi
arch/arm64/boot/dts/marvell/armada-80x0.dtsi
arch/arm64/boot/dts/marvell/armada-common.dtsi
arch/arm64/boot/dts/marvell/armada-cp110.dtsi
arch/arm64/boot/dts/marvell/armada-cp11x.dtsi [new file with mode: 0644]

index e5c6d7c258195e8ad1f2d81b1471dd58a2ee3365..4e78ccd207b7144f78705a9c4821ca90280b4c17 100644 (file)
@@ -17,23 +17,23 @@ aliases {
 /*
  * Instantiate the CP110
  */
-#define CP110_NAME             cp0
-#define CP110_BASE             f2000000
-#define CP110_PCIE_IO_BASE     0xf9000000
-#define CP110_PCIE_MEM_BASE    0xf6000000
-#define CP110_PCIE0_BASE       f2600000
-#define CP110_PCIE1_BASE       f2620000
-#define CP110_PCIE2_BASE       f2640000
+#define CP11X_NAME             cp0
+#define CP11X_BASE             f2000000
+#define CP11X_PCIE_IO_BASE     0xf9000000
+#define CP11X_PCIE_MEM_BASE    0xf6000000
+#define CP11X_PCIE0_BASE       f2600000
+#define CP11X_PCIE1_BASE       f2620000
+#define CP11X_PCIE2_BASE       f2640000
 
 #include "armada-cp110.dtsi"
 
-#undef CP110_NAME
-#undef CP110_BASE
-#undef CP110_PCIE_IO_BASE
-#undef CP110_PCIE_MEM_BASE
-#undef CP110_PCIE0_BASE
-#undef CP110_PCIE1_BASE
-#undef CP110_PCIE2_BASE
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIE_IO_BASE
+#undef CP11X_PCIE_MEM_BASE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
 
 &cp0_gpio1 {
        status = "okay";
index 8129b40f12a49fe494d34c98a32368b02d031f1c..ebb98836ec9cdceb8e7c388bf86cda5539935262 100644 (file)
@@ -19,44 +19,44 @@ aliases {
 /*
  * Instantiate the master CP110
  */
-#define CP110_NAME             cp0
-#define CP110_BASE             f2000000
-#define CP110_PCIE_IO_BASE     0xf9000000
-#define CP110_PCIE_MEM_BASE    0xf6000000
-#define CP110_PCIE0_BASE       f2600000
-#define CP110_PCIE1_BASE       f2620000
-#define CP110_PCIE2_BASE       f2640000
+#define CP11X_NAME             cp0
+#define CP11X_BASE             f2000000
+#define CP11X_PCIE_IO_BASE     0xf9000000
+#define CP11X_PCIE_MEM_BASE    0xf6000000
+#define CP11X_PCIE0_BASE       f2600000
+#define CP11X_PCIE1_BASE       f2620000
+#define CP11X_PCIE2_BASE       f2640000
 
 #include "armada-cp110.dtsi"
 
-#undef CP110_NAME
-#undef CP110_BASE
-#undef CP110_PCIE_IO_BASE
-#undef CP110_PCIE_MEM_BASE
-#undef CP110_PCIE0_BASE
-#undef CP110_PCIE1_BASE
-#undef CP110_PCIE2_BASE
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIE_IO_BASE
+#undef CP11X_PCIE_MEM_BASE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
 
 /*
  * Instantiate the slave CP110
  */
-#define CP110_NAME             cp1
-#define CP110_BASE             f4000000
-#define CP110_PCIE_IO_BASE     0xfd000000
-#define CP110_PCIE_MEM_BASE    0xfa000000
-#define CP110_PCIE0_BASE       f4600000
-#define CP110_PCIE1_BASE       f4620000
-#define CP110_PCIE2_BASE       f4640000
+#define CP11X_NAME             cp1
+#define CP11X_BASE             f4000000
+#define CP11X_PCIE_IO_BASE     0xfd000000
+#define CP11X_PCIE_MEM_BASE    0xfa000000
+#define CP11X_PCIE0_BASE       f4600000
+#define CP11X_PCIE1_BASE       f4620000
+#define CP11X_PCIE2_BASE       f4640000
 
 #include "armada-cp110.dtsi"
 
-#undef CP110_NAME
-#undef CP110_BASE
-#undef CP110_PCIE_IO_BASE
-#undef CP110_PCIE_MEM_BASE
-#undef CP110_PCIE0_BASE
-#undef CP110_PCIE1_BASE
-#undef CP110_PCIE2_BASE
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIE_IO_BASE
+#undef CP11X_PCIE_MEM_BASE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
 
 /* The 80x0 has two CP blocks, but uses only one block from each. */
 &cp1_gpio1 {
index b29c6405d214b672b338fc21e8bd5bfeaf291b7d..c04c6c475022dbfde21e5b9e7fb4c52790fd6262 100644 (file)
@@ -6,6 +6,6 @@
 /* Common definitions used by Armada 7K/8K DTs */
 #define PASTER(x, y) x ## y
 #define EVALUATOR(x, y) PASTER(x, y)
-#define CP110_LABEL(name) EVALUATOR(CP110_NAME, EVALUATOR(_, name))
-#define CP110_NODE_NAME(name) EVALUATOR(CP110_NAME, EVALUATOR(-, name))
+#define CP11X_LABEL(name) EVALUATOR(CP11X_NAME, EVALUATOR(_, name))
+#define CP11X_NODE_NAME(name) EVALUATOR(CP11X_NAME, EVALUATOR(-, name))
 #define ADDRESSIFY(addr) EVALUATOR(0x, addr)
index 8259fc8f86f233aa6c1ddcea40b87419db7069ae..4fd33b0fa56e5b06bdc47760b795c8fd28f65fcf 100644 (file)
 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
  *
  * Device Tree file for Marvell Armada CP110.
  */
 
-#include <dt-bindings/interrupt-controller/mvebu-icu.h>
-#include <dt-bindings/thermal/thermal.h>
+#define CP11X_TYPE cp110
 
-#include "armada-common.dtsi"
+#include "armada-cp11x.dtsi"
 
-#define CP110_PCIEx_IO_BASE(iface)     (CP110_PCIE_IO_BASE + (iface *  0x10000))
-#define CP110_PCIEx_MEM_BASE(iface)    (CP110_PCIE_MEM_BASE + (iface *  0x1000000))
-#define CP110_PCIEx_CONF_BASE(iface)   (CP110_PCIEx_MEM_BASE(iface) + 0xf00000)
-
-/ {
-       /*
-        * The contents of the node are defined below, in order to
-        * save one indentation level
-        */
-       CP110_NAME: CP110_NAME { };
-
-       /*
-        * CPs only have one sensor in the thermal IC.
-        *
-        * The cooling maps are empty as there are no cooling devices.
-        */
-       thermal-zones {
-               CP110_LABEL(thermal_ic): CP110_NODE_NAME(thermal-ic) {
-                       polling-delay-passive = <0>; /* Interrupt driven */
-                       polling-delay = <0>; /* Interrupt driven */
-
-                       thermal-sensors = <&CP110_LABEL(thermal) 0>;
-
-                       trips {
-                               CP110_LABEL(crit): crit {
-                                       temperature = <100000>; /* mC degrees */
-                                       hysteresis = <2000>; /* mC degrees */
-                                       type = "critical";
-                               };
-                       };
-
-                       cooling-maps { };
-               };
-       };
-};
-
-&CP110_NAME {
-       #address-cells = <2>;
-       #size-cells = <2>;
-       compatible = "simple-bus";
-       interrupt-parent = <&CP110_LABEL(icu_nsr)>;
-       ranges;
-
-       config-space@CP110_BASE {
-               #address-cells = <1>;
-               #size-cells = <1>;
-               compatible = "simple-bus";
-               ranges = <0x0 0x0 ADDRESSIFY(CP110_BASE) 0x2000000>;
-
-               CP110_LABEL(ethernet): ethernet@0 {
-                       compatible = "marvell,armada-7k-pp22";
-                       reg = <0x0 0x100000>, <0x129000 0xb000>;
-                       clocks = <&CP110_LABEL(clk) 1 3>, <&CP110_LABEL(clk) 1 9>,
-                                <&CP110_LABEL(clk) 1 5>, <&CP110_LABEL(clk) 1 6>,
-                                <&CP110_LABEL(clk) 1 18>;
-                       clock-names = "pp_clk", "gop_clk",
-                                     "mg_clk", "mg_core_clk", "axi_clk";
-                       marvell,system-controller = <&CP110_LABEL(syscon0)>;
-                       status = "disabled";
-                       dma-coherent;
-
-                       CP110_LABEL(eth0): eth0 {
-                               interrupts = <39 IRQ_TYPE_LEVEL_HIGH>,
-                                       <43 IRQ_TYPE_LEVEL_HIGH>,
-                                       <47 IRQ_TYPE_LEVEL_HIGH>,
-                                       <51 IRQ_TYPE_LEVEL_HIGH>,
-                                       <55 IRQ_TYPE_LEVEL_HIGH>,
-                                       <59 IRQ_TYPE_LEVEL_HIGH>,
-                                       <63 IRQ_TYPE_LEVEL_HIGH>,
-                                       <67 IRQ_TYPE_LEVEL_HIGH>,
-                                       <71 IRQ_TYPE_LEVEL_HIGH>,
-                                       <129 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-names = "hif0", "hif1", "hif2",
-                                       "hif3", "hif4", "hif5", "hif6", "hif7",
-                                       "hif8", "link";
-                               port-id = <0>;
-                               gop-port-id = <0>;
-                               status = "disabled";
-                       };
-
-                       CP110_LABEL(eth1): eth1 {
-                               interrupts = <40 IRQ_TYPE_LEVEL_HIGH>,
-                                       <44 IRQ_TYPE_LEVEL_HIGH>,
-                                       <48 IRQ_TYPE_LEVEL_HIGH>,
-                                       <52 IRQ_TYPE_LEVEL_HIGH>,
-                                       <56 IRQ_TYPE_LEVEL_HIGH>,
-                                       <60 IRQ_TYPE_LEVEL_HIGH>,
-                                       <64 IRQ_TYPE_LEVEL_HIGH>,
-                                       <68 IRQ_TYPE_LEVEL_HIGH>,
-                                       <72 IRQ_TYPE_LEVEL_HIGH>,
-                                       <128 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-names = "hif0", "hif1", "hif2",
-                                       "hif3", "hif4", "hif5", "hif6", "hif7",
-                                       "hif8", "link";
-                               port-id = <1>;
-                               gop-port-id = <2>;
-                               status = "disabled";
-                       };
-
-                       CP110_LABEL(eth2): eth2 {
-                               interrupts = <41 IRQ_TYPE_LEVEL_HIGH>,
-                                       <45 IRQ_TYPE_LEVEL_HIGH>,
-                                       <49 IRQ_TYPE_LEVEL_HIGH>,
-                                       <53 IRQ_TYPE_LEVEL_HIGH>,
-                                       <57 IRQ_TYPE_LEVEL_HIGH>,
-                                       <61 IRQ_TYPE_LEVEL_HIGH>,
-                                       <65 IRQ_TYPE_LEVEL_HIGH>,
-                                       <69 IRQ_TYPE_LEVEL_HIGH>,
-                                       <73 IRQ_TYPE_LEVEL_HIGH>,
-                                       <127 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-names = "hif0", "hif1", "hif2",
-                                       "hif3", "hif4", "hif5", "hif6", "hif7",
-                                       "hif8", "link";
-                               port-id = <2>;
-                               gop-port-id = <3>;
-                               status = "disabled";
-                       };
-               };
-
-               CP110_LABEL(comphy): phy@120000 {
-                       compatible = "marvell,comphy-cp110";
-                       reg = <0x120000 0x6000>;
-                       marvell,system-controller = <&CP110_LABEL(syscon0)>;
-                       clocks = <&CP110_LABEL(clk) 1 5>, <&CP110_LABEL(clk) 1 6>,
-                                <&CP110_LABEL(clk) 1 18>;
-                       clock-names = "mg_clk", "mg_core_clk", "axi_clk";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       CP110_LABEL(comphy0): phy@0 {
-                               reg = <0>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy1): phy@1 {
-                               reg = <1>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy2): phy@2 {
-                               reg = <2>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy3): phy@3 {
-                               reg = <3>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy4): phy@4 {
-                               reg = <4>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy5): phy@5 {
-                               reg = <5>;
-                               #phy-cells = <1>;
-                       };
-               };
-
-               CP110_LABEL(mdio): mdio@12a200 {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       compatible = "marvell,orion-mdio";
-                       reg = <0x12a200 0x10>;
-                       clocks = <&CP110_LABEL(clk) 1 9>, <&CP110_LABEL(clk) 1 5>,
-                                <&CP110_LABEL(clk) 1 6>, <&CP110_LABEL(clk) 1 18>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(xmdio): mdio@12a600 {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       compatible = "marvell,xmdio";
-                       reg = <0x12a600 0x10>;
-                       clocks = <&CP110_LABEL(clk) 1 5>,
-                                <&CP110_LABEL(clk) 1 6>, <&CP110_LABEL(clk) 1 18>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(icu): interrupt-controller@1e0000 {
-                       compatible = "marvell,cp110-icu";
-                       reg = <0x1e0000 0x440>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       CP110_LABEL(icu_nsr): interrupt-controller@10 {
-                               compatible = "marvell,cp110-icu-nsr";
-                               reg = <0x10 0x20>;
-                               #interrupt-cells = <2>;
-                               interrupt-controller;
-                               msi-parent = <&gicp>;
-                       };
-
-                       CP110_LABEL(icu_sei): interrupt-controller@50 {
-                               compatible = "marvell,cp110-icu-sei";
-                               reg = <0x50 0x10>;
-                               #interrupt-cells = <2>;
-                               interrupt-controller;
-                               msi-parent = <&sei>;
-                       };
-               };
-
-               CP110_LABEL(rtc): rtc@284000 {
-                       compatible = "marvell,armada-8k-rtc";
-                       reg = <0x284000 0x20>, <0x284080 0x24>;
-                       reg-names = "rtc", "rtc-soc";
-                       interrupts = <77 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               CP110_LABEL(syscon0): system-controller@440000 {
-                       compatible = "syscon", "simple-mfd";
-                       reg = <0x440000 0x2000>;
-
-                       CP110_LABEL(clk): clock {
-                               compatible = "marvell,cp110-clock";
-                               #clock-cells = <2>;
-                       };
-
-                       CP110_LABEL(gpio1): gpio@100 {
-                               compatible = "marvell,armada-8k-gpio";
-                               offset = <0x100>;
-                               ngpios = <32>;
-                               gpio-controller;
-                               #gpio-cells = <2>;
-                               gpio-ranges = <&CP110_LABEL(pinctrl) 0 0 32>;
-                               interrupt-controller;
-                               interrupts = <86 IRQ_TYPE_LEVEL_HIGH>,
-                                       <85 IRQ_TYPE_LEVEL_HIGH>,
-                                       <84 IRQ_TYPE_LEVEL_HIGH>,
-                                       <83 IRQ_TYPE_LEVEL_HIGH>;
-                               #interrupt-cells = <2>;
-                               status = "disabled";
-                       };
-
-                       CP110_LABEL(gpio2): gpio@140 {
-                               compatible = "marvell,armada-8k-gpio";
-                               offset = <0x140>;
-                               ngpios = <31>;
-                               gpio-controller;
-                               #gpio-cells = <2>;
-                               gpio-ranges = <&CP110_LABEL(pinctrl) 0 32 31>;
-                               interrupt-controller;
-                               interrupts = <82 IRQ_TYPE_LEVEL_HIGH>,
-                                       <81 IRQ_TYPE_LEVEL_HIGH>,
-                                       <80 IRQ_TYPE_LEVEL_HIGH>,
-                                       <79 IRQ_TYPE_LEVEL_HIGH>;
-                               #interrupt-cells = <2>;
-                               status = "disabled";
-                       };
-               };
-
-               CP110_LABEL(syscon1): system-controller@400000 {
-                       compatible = "syscon", "simple-mfd";
-                       reg = <0x400000 0x1000>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       CP110_LABEL(thermal): thermal-sensor@70 {
-                               compatible = "marvell,armada-cp110-thermal";
-                               reg = <0x70 0x10>;
-                               interrupts-extended =
-                                       <&CP110_LABEL(icu_sei) 116 IRQ_TYPE_LEVEL_HIGH>;
-                               #thermal-sensor-cells = <1>;
-                       };
-               };
-
-               CP110_LABEL(usb3_0): usb3@500000 {
-                       compatible = "marvell,armada-8k-xhci",
-                       "generic-xhci";
-                       reg = <0x500000 0x4000>;
-                       dma-coherent;
-                       interrupts = <106 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 22>,
-                                <&CP110_LABEL(clk) 1 16>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(usb3_1): usb3@510000 {
-                       compatible = "marvell,armada-8k-xhci",
-                       "generic-xhci";
-                       reg = <0x510000 0x4000>;
-                       dma-coherent;
-                       interrupts = <105 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 23>,
-                                <&CP110_LABEL(clk) 1 16>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(sata0): sata@540000 {
-                       compatible = "marvell,armada-8k-ahci",
-                       "generic-ahci";
-                       reg = <0x540000 0x30000>;
-                       dma-coherent;
-                       interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&CP110_LABEL(clk) 1 15>,
-                                <&CP110_LABEL(clk) 1 16>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata-port@0 {
-                               reg = <0>;
-                       };
-
-                       sata-port@1 {
-                               reg = <1>;
-                       };
-               };
-
-               CP110_LABEL(xor0): xor@6a0000 {
-                       compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                       reg = <0x6a0000 0x1000>, <0x6b0000 0x1000>;
-                       dma-coherent;
-                       msi-parent = <&gic_v2m0>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 8>,
-                                <&CP110_LABEL(clk) 1 14>;
-               };
-
-               CP110_LABEL(xor1): xor@6c0000 {
-                       compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                       reg = <0x6c0000 0x1000>, <0x6d0000 0x1000>;
-                       dma-coherent;
-                       msi-parent = <&gic_v2m0>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 7>,
-                                <&CP110_LABEL(clk) 1 14>;
-               };
-
-               CP110_LABEL(spi0): spi@700600 {
-                       compatible = "marvell,armada-380-spi";
-                       reg = <0x700600 0x50>;
-                       #address-cells = <0x1>;
-                       #size-cells = <0x0>;
-                       clock-names = "core", "axi";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(spi1): spi@700680 {
-                       compatible = "marvell,armada-380-spi";
-                       reg = <0x700680 0x50>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       clock-names = "core", "axi";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(i2c0): i2c@701000 {
-                       compatible = "marvell,mv78230-i2c";
-                       reg = <0x701000 0x20>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       interrupts = <120 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(i2c1): i2c@701100 {
-                       compatible = "marvell,mv78230-i2c";
-                       reg = <0x701100 0x20>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       interrupts = <121 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(uart0): serial@702000 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x702000 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <122 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-io-width = <1>;
-                       clock-names = "baudclk", "apb_pclk";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(uart1): serial@702100 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x702100 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <123 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-io-width = <1>;
-                       clock-names = "baudclk", "apb_pclk";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(uart2): serial@702200 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x702200 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <124 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-io-width = <1>;
-                       clock-names = "baudclk", "apb_pclk";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(uart3): serial@702300 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x702300 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <125 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-io-width = <1>;
-                       clock-names = "baudclk", "apb_pclk";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(nand_controller): nand@720000 {
-                       /*
-                        * Due to the limitation of the pins available
-                        * this controller is only usable on the CPM
-                        * for A7K and on the CPS for A8K.
-                        */
-                       compatible = "marvell,armada-8k-nand-controller",
-                               "marvell,armada370-nand-controller";
-                       reg = <0x720000 0x54>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       interrupts = <115 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 2>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       marvell,system-controller = <&CP110_LABEL(syscon0)>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(trng): trng@760000 {
-                       compatible = "marvell,armada-8k-rng",
-                       "inside-secure,safexcel-eip76";
-                       reg = <0x760000 0x7d>;
-                       interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 25>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "okay";
-               };
-
-               CP110_LABEL(sdhci0): sdhci@780000 {
-                       compatible = "marvell,armada-cp110-sdhci";
-                       reg = <0x780000 0x300>;
-                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "axi";
-                       clocks = <&CP110_LABEL(clk) 1 4>, <&CP110_LABEL(clk) 1 18>;
-                       dma-coherent;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(crypto): crypto@800000 {
-                       compatible = "inside-secure,safexcel-eip197b";
-                       reg = <0x800000 0x200000>;
-                       interrupts = <87 IRQ_TYPE_LEVEL_HIGH>,
-                               <88 IRQ_TYPE_LEVEL_HIGH>,
-                               <89 IRQ_TYPE_LEVEL_HIGH>,
-                               <90 IRQ_TYPE_LEVEL_HIGH>,
-                               <91 IRQ_TYPE_LEVEL_HIGH>,
-                               <92 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "mem", "ring0", "ring1",
-                               "ring2", "ring3", "eip";
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 26>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       dma-coherent;
-               };
-       };
-
-       CP110_LABEL(pcie0): pcie@CP110_PCIE0_BASE {
-               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
-               reg = <0 ADDRESSIFY(CP110_PCIE0_BASE) 0 0x10000>,
-                     <0 CP110_PCIEx_CONF_BASE(0) 0 0x80000>;
-               reg-names = "ctrl", "config";
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               device_type = "pci";
-               dma-coherent;
-               msi-parent = <&gic_v2m0>;
-
-               bus-range = <0 0xff>;
-               ranges =
-               /* downstream I/O */
-               <0x81000000 0 CP110_PCIEx_IO_BASE(0) 0  CP110_PCIEx_IO_BASE(0) 0 0x10000
-               /* non-prefetchable memory */
-               0x82000000 0 CP110_PCIEx_MEM_BASE(0) 0  CP110_PCIEx_MEM_BASE(0) 0 0xf00000>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &CP110_LABEL(icu_nsr) 22 IRQ_TYPE_LEVEL_HIGH>;
-               interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
-               num-lanes = <1>;
-               clock-names = "core", "reg";
-               clocks = <&CP110_LABEL(clk) 1 13>, <&CP110_LABEL(clk) 1 14>;
-               status = "disabled";
-       };
-
-       CP110_LABEL(pcie1): pcie@CP110_PCIE1_BASE {
-               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
-               reg = <0 ADDRESSIFY(CP110_PCIE1_BASE) 0 0x10000>,
-                     <0 CP110_PCIEx_CONF_BASE(1) 0 0x80000>;
-               reg-names = "ctrl", "config";
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               device_type = "pci";
-               dma-coherent;
-               msi-parent = <&gic_v2m0>;
-
-               bus-range = <0 0xff>;
-               ranges =
-               /* downstream I/O */
-               <0x81000000 0 CP110_PCIEx_IO_BASE(1) 0  CP110_PCIEx_IO_BASE(1) 0 0x10000
-               /* non-prefetchable memory */
-               0x82000000 0 CP110_PCIEx_MEM_BASE(1) 0  CP110_PCIEx_MEM_BASE(1) 0 0xf00000>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &CP110_LABEL(icu_nsr) 24 IRQ_TYPE_LEVEL_HIGH>;
-               interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
-
-               num-lanes = <1>;
-               clock-names = "core", "reg";
-               clocks = <&CP110_LABEL(clk) 1 11>, <&CP110_LABEL(clk) 1 14>;
-               status = "disabled";
-       };
-
-       CP110_LABEL(pcie2): pcie@CP110_PCIE2_BASE {
-               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
-               reg = <0 ADDRESSIFY(CP110_PCIE2_BASE) 0 0x10000>,
-                     <0 CP110_PCIEx_CONF_BASE(2) 0 0x80000>;
-               reg-names = "ctrl", "config";
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               device_type = "pci";
-               dma-coherent;
-               msi-parent = <&gic_v2m0>;
-
-               bus-range = <0 0xff>;
-               ranges =
-               /* downstream I/O */
-               <0x81000000 0 CP110_PCIEx_IO_BASE(2) 0  CP110_PCIEx_IO_BASE(2) 0 0x10000
-               /* non-prefetchable memory */
-               0x82000000 0 CP110_PCIEx_MEM_BASE(2) 0  CP110_PCIEx_MEM_BASE(2) 0 0xf00000>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &CP110_LABEL(icu_nsr) 23 IRQ_TYPE_LEVEL_HIGH>;
-               interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
-
-               num-lanes = <1>;
-               clock-names = "core", "reg";
-               clocks = <&CP110_LABEL(clk) 1 12>, <&CP110_LABEL(clk) 1 14>;
-               status = "disabled";
-       };
-};
+#undef CP11X_TYPE
diff --git a/arch/arm64/boot/dts/marvell/armada-cp11x.dtsi b/arch/arm64/boot/dts/marvell/armada-cp11x.dtsi
new file mode 100644 (file)
index 0000000..3e77cf3
--- /dev/null
@@ -0,0 +1,579 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada CP11x.
+ */
+
+#include <dt-bindings/interrupt-controller/mvebu-icu.h>
+#include <dt-bindings/thermal/thermal.h>
+
+#include "armada-common.dtsi"
+
+#define CP11X_PCIEx_IO_BASE(iface)     (CP11X_PCIE_IO_BASE + (iface *  0x10000))
+#define CP11X_PCIEx_MEM_BASE(iface)    (CP11X_PCIE_MEM_BASE + (iface *  0x1000000))
+#define CP11X_PCIEx_CONF_BASE(iface)   (CP11X_PCIEx_MEM_BASE(iface) + 0xf00000)
+
+/ {
+       /*
+        * The contents of the node are defined below, in order to
+        * save one indentation level
+        */
+       CP11X_NAME: CP11X_NAME { };
+
+       /*
+        * CPs only have one sensor in the thermal IC.
+        *
+        * The cooling maps are empty as there are no cooling devices.
+        */
+       thermal-zones {
+               CP11X_LABEL(thermal_ic): CP11X_NODE_NAME(thermal-ic) {
+                       polling-delay-passive = <0>; /* Interrupt driven */
+                       polling-delay = <0>; /* Interrupt driven */
+
+                       thermal-sensors = <&CP11X_LABEL(thermal) 0>;
+
+                       trips {
+                               CP11X_LABEL(crit): crit {
+                                       temperature = <100000>; /* mC degrees */
+                                       hysteresis = <2000>; /* mC degrees */
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps { };
+               };
+       };
+};
+
+&CP11X_NAME {
+       #address-cells = <2>;
+       #size-cells = <2>;
+       compatible = "simple-bus";
+       interrupt-parent = <&CP11X_LABEL(icu_nsr)>;
+       ranges;
+
+       config-space@CP11X_BASE {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "simple-bus";
+               ranges = <0x0 0x0 ADDRESSIFY(CP11X_BASE) 0x2000000>;
+
+               CP11X_LABEL(ethernet): ethernet@0 {
+                       compatible = "marvell,armada-7k-pp22";
+                       reg = <0x0 0x100000>, <0x129000 0xb000>;
+                       clocks = <&CP11X_LABEL(clk) 1 3>, <&CP11X_LABEL(clk) 1 9>,
+                                <&CP11X_LABEL(clk) 1 5>, <&CP11X_LABEL(clk) 1 6>,
+                                <&CP11X_LABEL(clk) 1 18>;
+                       clock-names = "pp_clk", "gop_clk",
+                                     "mg_clk", "mg_core_clk", "axi_clk";
+                       marvell,system-controller = <&CP11X_LABEL(syscon0)>;
+                       status = "disabled";
+                       dma-coherent;
+
+                       CP11X_LABEL(eth0): eth0 {
+                               interrupts = <39 IRQ_TYPE_LEVEL_HIGH>,
+                                       <43 IRQ_TYPE_LEVEL_HIGH>,
+                                       <47 IRQ_TYPE_LEVEL_HIGH>,
+                                       <51 IRQ_TYPE_LEVEL_HIGH>,
+                                       <55 IRQ_TYPE_LEVEL_HIGH>,
+                                       <59 IRQ_TYPE_LEVEL_HIGH>,
+                                       <63 IRQ_TYPE_LEVEL_HIGH>,
+                                       <67 IRQ_TYPE_LEVEL_HIGH>,
+                                       <71 IRQ_TYPE_LEVEL_HIGH>,
+                                       <129 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "hif0", "hif1", "hif2",
+                                       "hif3", "hif4", "hif5", "hif6", "hif7",
+                                       "hif8", "link";
+                               port-id = <0>;
+                               gop-port-id = <0>;
+                               status = "disabled";
+                       };
+
+                       CP11X_LABEL(eth1): eth1 {
+                               interrupts = <40 IRQ_TYPE_LEVEL_HIGH>,
+                                       <44 IRQ_TYPE_LEVEL_HIGH>,
+                                       <48 IRQ_TYPE_LEVEL_HIGH>,
+                                       <52 IRQ_TYPE_LEVEL_HIGH>,
+                                       <56 IRQ_TYPE_LEVEL_HIGH>,
+                                       <60 IRQ_TYPE_LEVEL_HIGH>,
+                                       <64 IRQ_TYPE_LEVEL_HIGH>,
+                                       <68 IRQ_TYPE_LEVEL_HIGH>,
+                                       <72 IRQ_TYPE_LEVEL_HIGH>,
+                                       <128 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "hif0", "hif1", "hif2",
+                                       "hif3", "hif4", "hif5", "hif6", "hif7",
+                                       "hif8", "link";
+                               port-id = <1>;
+                               gop-port-id = <2>;
+                               status = "disabled";
+                       };
+
+                       CP11X_LABEL(eth2): eth2 {
+                               interrupts = <41 IRQ_TYPE_LEVEL_HIGH>,
+                                       <45 IRQ_TYPE_LEVEL_HIGH>,
+                                       <49 IRQ_TYPE_LEVEL_HIGH>,
+                                       <53 IRQ_TYPE_LEVEL_HIGH>,
+                                       <57 IRQ_TYPE_LEVEL_HIGH>,
+                                       <61 IRQ_TYPE_LEVEL_HIGH>,
+                                       <65 IRQ_TYPE_LEVEL_HIGH>,
+                                       <69 IRQ_TYPE_LEVEL_HIGH>,
+                                       <73 IRQ_TYPE_LEVEL_HIGH>,
+                                       <127 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "hif0", "hif1", "hif2",
+                                       "hif3", "hif4", "hif5", "hif6", "hif7",
+                                       "hif8", "link";
+                               port-id = <2>;
+                               gop-port-id = <3>;
+                               status = "disabled";
+                       };
+               };
+
+               CP11X_LABEL(comphy): phy@120000 {
+                       compatible = "marvell,comphy-cp110";
+                       reg = <0x120000 0x6000>;
+                       marvell,system-controller = <&CP11X_LABEL(syscon0)>;
+                       clocks = <&CP11X_LABEL(clk) 1 5>, <&CP11X_LABEL(clk) 1 6>,
+                                <&CP11X_LABEL(clk) 1 18>;
+                       clock-names = "mg_clk", "mg_core_clk", "axi_clk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       CP11X_LABEL(comphy0): phy@0 {
+                               reg = <0>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy1): phy@1 {
+                               reg = <1>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy2): phy@2 {
+                               reg = <2>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy3): phy@3 {
+                               reg = <3>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy4): phy@4 {
+                               reg = <4>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy5): phy@5 {
+                               reg = <5>;
+                               #phy-cells = <1>;
+                       };
+               };
+
+               CP11X_LABEL(mdio): mdio@12a200 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "marvell,orion-mdio";
+                       reg = <0x12a200 0x10>;
+                       clocks = <&CP11X_LABEL(clk) 1 9>, <&CP11X_LABEL(clk) 1 5>,
+                                <&CP11X_LABEL(clk) 1 6>, <&CP11X_LABEL(clk) 1 18>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(xmdio): mdio@12a600 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "marvell,xmdio";
+                       reg = <0x12a600 0x10>;
+                       clocks = <&CP11X_LABEL(clk) 1 5>,
+                                <&CP11X_LABEL(clk) 1 6>, <&CP11X_LABEL(clk) 1 18>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(icu): interrupt-controller@1e0000 {
+                       compatible = "marvell,cp110-icu";
+                       reg = <0x1e0000 0x440>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       CP11X_LABEL(icu_nsr): interrupt-controller@10 {
+                               compatible = "marvell,cp110-icu-nsr";
+                               reg = <0x10 0x20>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+                               msi-parent = <&gicp>;
+                       };
+
+                       CP11X_LABEL(icu_sei): interrupt-controller@50 {
+                               compatible = "marvell,cp110-icu-sei";
+                               reg = <0x50 0x10>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+                               msi-parent = <&sei>;
+                       };
+               };
+
+               CP11X_LABEL(rtc): rtc@284000 {
+                       compatible = "marvell,armada-8k-rtc";
+                       reg = <0x284000 0x20>, <0x284080 0x24>;
+                       reg-names = "rtc", "rtc-soc";
+                       interrupts = <77 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               CP11X_LABEL(syscon0): system-controller@440000 {
+                       compatible = "syscon", "simple-mfd";
+                       reg = <0x440000 0x2000>;
+
+                       CP11X_LABEL(clk): clock {
+                               compatible = "marvell,cp110-clock";
+                               #clock-cells = <2>;
+                       };
+
+                       CP11X_LABEL(gpio1): gpio@100 {
+                               compatible = "marvell,armada-8k-gpio";
+                               offset = <0x100>;
+                               ngpios = <32>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               gpio-ranges = <&CP11X_LABEL(pinctrl) 0 0 32>;
+                               interrupt-controller;
+                               interrupts = <86 IRQ_TYPE_LEVEL_HIGH>,
+                                       <85 IRQ_TYPE_LEVEL_HIGH>,
+                                       <84 IRQ_TYPE_LEVEL_HIGH>,
+                                       <83 IRQ_TYPE_LEVEL_HIGH>;
+                               #interrupt-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       CP11X_LABEL(gpio2): gpio@140 {
+                               compatible = "marvell,armada-8k-gpio";
+                               offset = <0x140>;
+                               ngpios = <31>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               gpio-ranges = <&CP11X_LABEL(pinctrl) 0 32 31>;
+                               interrupt-controller;
+                               interrupts = <82 IRQ_TYPE_LEVEL_HIGH>,
+                                       <81 IRQ_TYPE_LEVEL_HIGH>,
+                                       <80 IRQ_TYPE_LEVEL_HIGH>,
+                                       <79 IRQ_TYPE_LEVEL_HIGH>;
+                               #interrupt-cells = <2>;
+                               status = "disabled";
+                       };
+               };
+
+               CP11X_LABEL(syscon1): system-controller@400000 {
+                       compatible = "syscon", "simple-mfd";
+                       reg = <0x400000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       CP11X_LABEL(thermal): thermal-sensor@70 {
+                               compatible = "marvell,armada-cp110-thermal";
+                               reg = <0x70 0x10>;
+                               interrupts-extended =
+                                       <&CP11X_LABEL(icu_sei) 116 IRQ_TYPE_LEVEL_HIGH>;
+                               #thermal-sensor-cells = <1>;
+                       };
+               };
+
+               CP11X_LABEL(usb3_0): usb3@500000 {
+                       compatible = "marvell,armada-8k-xhci",
+                       "generic-xhci";
+                       reg = <0x500000 0x4000>;
+                       dma-coherent;
+                       interrupts = <106 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 22>,
+                                <&CP11X_LABEL(clk) 1 16>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(usb3_1): usb3@510000 {
+                       compatible = "marvell,armada-8k-xhci",
+                       "generic-xhci";
+                       reg = <0x510000 0x4000>;
+                       dma-coherent;
+                       interrupts = <105 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 23>,
+                                <&CP11X_LABEL(clk) 1 16>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(sata0): sata@540000 {
+                       compatible = "marvell,armada-8k-ahci",
+                       "generic-ahci";
+                       reg = <0x540000 0x30000>;
+                       dma-coherent;
+                       interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&CP11X_LABEL(clk) 1 15>,
+                                <&CP11X_LABEL(clk) 1 16>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+
+                       sata-port@0 {
+                               reg = <0>;
+                       };
+
+                       sata-port@1 {
+                               reg = <1>;
+                       };
+               };
+
+               CP11X_LABEL(xor0): xor@6a0000 {
+                       compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                       reg = <0x6a0000 0x1000>, <0x6b0000 0x1000>;
+                       dma-coherent;
+                       msi-parent = <&gic_v2m0>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 8>,
+                                <&CP11X_LABEL(clk) 1 14>;
+               };
+
+               CP11X_LABEL(xor1): xor@6c0000 {
+                       compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                       reg = <0x6c0000 0x1000>, <0x6d0000 0x1000>;
+                       dma-coherent;
+                       msi-parent = <&gic_v2m0>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 7>,
+                                <&CP11X_LABEL(clk) 1 14>;
+               };
+
+               CP11X_LABEL(spi0): spi@700600 {
+                       compatible = "marvell,armada-380-spi";
+                       reg = <0x700600 0x50>;
+                       #address-cells = <0x1>;
+                       #size-cells = <0x0>;
+                       clock-names = "core", "axi";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(spi1): spi@700680 {
+                       compatible = "marvell,armada-380-spi";
+                       reg = <0x700680 0x50>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-names = "core", "axi";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(i2c0): i2c@701000 {
+                       compatible = "marvell,mv78230-i2c";
+                       reg = <0x701000 0x20>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <120 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(i2c1): i2c@701100 {
+                       compatible = "marvell,mv78230-i2c";
+                       reg = <0x701100 0x20>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <121 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(uart0): serial@702000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x702000 0x100>;
+                       reg-shift = <2>;
+                       interrupts = <122 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-io-width = <1>;
+                       clock-names = "baudclk", "apb_pclk";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(uart1): serial@702100 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x702100 0x100>;
+                       reg-shift = <2>;
+                       interrupts = <123 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-io-width = <1>;
+                       clock-names = "baudclk", "apb_pclk";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(uart2): serial@702200 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x702200 0x100>;
+                       reg-shift = <2>;
+                       interrupts = <124 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-io-width = <1>;
+                       clock-names = "baudclk", "apb_pclk";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(uart3): serial@702300 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x702300 0x100>;
+                       reg-shift = <2>;
+                       interrupts = <125 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-io-width = <1>;
+                       clock-names = "baudclk", "apb_pclk";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(nand_controller): nand@720000 {
+                       /*
+                        * Due to the limitation of the pins available
+                        * this controller is only usable on the CPM
+                        * for A7K and on the CPS for A8K.
+                        */
+                       compatible = "marvell,armada-8k-nand-controller",
+                               "marvell,armada370-nand-controller";
+                       reg = <0x720000 0x54>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <115 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 2>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       marvell,system-controller = <&CP11X_LABEL(syscon0)>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(trng): trng@760000 {
+                       compatible = "marvell,armada-8k-rng",
+                       "inside-secure,safexcel-eip76";
+                       reg = <0x760000 0x7d>;
+                       interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 25>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "okay";
+               };
+
+               CP11X_LABEL(sdhci0): sdhci@780000 {
+                       compatible = "marvell,armada-cp110-sdhci";
+                       reg = <0x780000 0x300>;
+                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "axi";
+                       clocks = <&CP11X_LABEL(clk) 1 4>, <&CP11X_LABEL(clk) 1 18>;
+                       dma-coherent;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(crypto): crypto@800000 {
+                       compatible = "inside-secure,safexcel-eip197b";
+                       reg = <0x800000 0x200000>;
+                       interrupts = <87 IRQ_TYPE_LEVEL_HIGH>,
+                               <88 IRQ_TYPE_LEVEL_HIGH>,
+                               <89 IRQ_TYPE_LEVEL_HIGH>,
+                               <90 IRQ_TYPE_LEVEL_HIGH>,
+                               <91 IRQ_TYPE_LEVEL_HIGH>,
+                               <92 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mem", "ring0", "ring1",
+                               "ring2", "ring3", "eip";
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 26>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       dma-coherent;
+               };
+       };
+
+       CP11X_LABEL(pcie0): pcie@CP11X_PCIE0_BASE {
+               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
+               reg = <0 ADDRESSIFY(CP11X_PCIE0_BASE) 0 0x10000>,
+                     <0 CP11X_PCIEx_CONF_BASE(0) 0 0x80000>;
+               reg-names = "ctrl", "config";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               #interrupt-cells = <1>;
+               device_type = "pci";
+               dma-coherent;
+               msi-parent = <&gic_v2m0>;
+
+               bus-range = <0 0xff>;
+               ranges =
+               /* downstream I/O */
+               <0x81000000 0 CP11X_PCIEx_IO_BASE(0) 0  CP11X_PCIEx_IO_BASE(0) 0 0x10000
+               /* non-prefetchable memory */
+               0x82000000 0 CP11X_PCIEx_MEM_BASE(0) 0  CP11X_PCIEx_MEM_BASE(0) 0 0xf00000>;
+               interrupt-map-mask = <0 0 0 0>;
+               interrupt-map = <0 0 0 0 &CP11X_LABEL(icu_nsr) 22 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
+               num-lanes = <1>;
+               clock-names = "core", "reg";
+               clocks = <&CP11X_LABEL(clk) 1 13>, <&CP11X_LABEL(clk) 1 14>;
+               status = "disabled";
+       };
+
+       CP11X_LABEL(pcie1): pcie@CP11X_PCIE1_BASE {
+               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
+               reg = <0 ADDRESSIFY(CP11X_PCIE1_BASE) 0 0x10000>,
+                     <0 CP11X_PCIEx_CONF_BASE(1) 0 0x80000>;
+               reg-names = "ctrl", "config";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               #interrupt-cells = <1>;
+               device_type = "pci";
+               dma-coherent;
+               msi-parent = <&gic_v2m0>;
+
+               bus-range = <0 0xff>;
+               ranges =
+               /* downstream I/O */
+               <0x81000000 0 CP11X_PCIEx_IO_BASE(1) 0  CP11X_PCIEx_IO_BASE(1) 0 0x10000
+               /* non-prefetchable memory */
+               0x82000000 0 CP11X_PCIEx_MEM_BASE(1) 0  CP11X_PCIEx_MEM_BASE(1) 0 0xf00000>;
+               interrupt-map-mask = <0 0 0 0>;
+               interrupt-map = <0 0 0 0 &CP11X_LABEL(icu_nsr) 24 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+
+               num-lanes = <1>;
+               clock-names = "core", "reg";
+               clocks = <&CP11X_LABEL(clk) 1 11>, <&CP11X_LABEL(clk) 1 14>;
+               status = "disabled";
+       };
+
+       CP11X_LABEL(pcie2): pcie@CP11X_PCIE2_BASE {
+               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
+               reg = <0 ADDRESSIFY(CP11X_PCIE2_BASE) 0 0x10000>,
+                     <0 CP11X_PCIEx_CONF_BASE(2) 0 0x80000>;
+               reg-names = "ctrl", "config";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               #interrupt-cells = <1>;
+               device_type = "pci";
+               dma-coherent;
+               msi-parent = <&gic_v2m0>;
+
+               bus-range = <0 0xff>;
+               ranges =
+               /* downstream I/O */
+               <0x81000000 0 CP11X_PCIEx_IO_BASE(2) 0  CP11X_PCIEx_IO_BASE(2) 0 0x10000
+               /* non-prefetchable memory */
+               0x82000000 0 CP11X_PCIEx_MEM_BASE(2) 0  CP11X_PCIEx_MEM_BASE(2) 0 0xf00000>;
+               interrupt-map-mask = <0 0 0 0>;
+               interrupt-map = <0 0 0 0 &CP11X_LABEL(icu_nsr) 23 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
+
+               num-lanes = <1>;
+               clock-names = "core", "reg";
+               clocks = <&CP11X_LABEL(clk) 1 12>, <&CP11X_LABEL(clk) 1 14>;
+               status = "disabled";
+       };
+};