public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update
@ 2021-03-18 19:57 Marcin Wojtas
  2021-03-18 19:57 ` [edk2-non-osi PATCH 2/4] Marvell/Armada7k8k: Move device tree sources from edk2-platforms Marcin Wojtas
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Marcin Wojtas @ 2021-03-18 19:57 UTC (permalink / raw)
  To: devel; +Cc: leif, ard.biesheuvel, mw, jaz, kostap, upstream, jon

Hi,

This patchset updates the device tree sources for Marvell Armada 7k8k
and Octeon TX2 SoC families. The hardware description files
are based on Linux v5.11 with the necessary EDK2 adjustments,
i.e.
 * disabled SPI flash devices
 * fixed-clock tree
 * disabled RTC nodes
 * generic ECAM PCIE description for MacchiatoBin platform

Armada 7k8k files are moved to edk2-non-osi. Moreover the diff
for Octeon Tx2 is much more significant, as the original version
was a custom tree (at the time of merge the mainline Linux reference
version was non-existent).

First patch should be merged to edk2-platforms and the remaining
ones to the edk2-non-osi. The changes had to be sent together
due to their strict dependency.

The patches are also available in public branches:
https://github.com/semihalf-wojtas-marcin/edk2-platforms/commits/dt-upstream-r20210318
https://github.com/semihalf-wojtas-marcin/edk2-non-osi/commits/dt-upstream-r20210318

Any comments would be welcome.

Best regards,
Marcin

Marcin Wojtas (4):
  [edk2-platforms]
  Marvell/Armada7k8k: Remove device tree sources from edk2-platforms
  [edk2-non-osi]
  Marvell/Armada7k8k: Move device tree sources from edk2-platforms
  Marvell/Armada7k8k: Update device trees
  Marvell/OcteonTx: Update device trees

 Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf                                                 |  22 +
 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf                                                 |  22 +
 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf                                              |  22 +
 Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9130DbA.inf                                                  |   2 +-
 Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9131DbA.inf                                                  |   2 +-
 Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9132DbA.inf                                                  |   2 +-
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi                                                 |  16 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts                                               | 301 ++++++++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi                                                 |  40 ++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi                                                 |  64 ++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi                                                 |  26 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts                                               | 357 +++++++++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts                                            |  45 ++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dtsi                                           | 374 ++++++++++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi                                                 |  61 ++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi                                                 | 108 ++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi                                           |  61 ++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi                                           |  93 +++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi                                                |  30 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807-quad.dtsi                                           |  93 +++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807.dtsi                                                |  33 ++
 Silicon/Marvell/{OcteonTx/DeviceTree/T91/armada-ap806.dtsi => Armada7k8k/DeviceTree/armada-ap80x.dtsi} | 238 +++++++-
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi                                               |  11 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi                                                |  12 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp115.dtsi                                                |  12 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp11x.dtsi                                                | 627 ++++++++++++++++++++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806-quad.dtsi                                         |  43 --
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807-quad.dtsi                                         |  93 +++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807.dtsi                                              |  33 ++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap80x.dtsi                                              | 470 +++++++++++++++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-common.dtsi                                             |   3 +-
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp110.dtsi                                              | 552 -----------------
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp115.dtsi                                              |  12 +
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp11x.dtsi                                              | 622 +++++++++++++++++++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db-A.dts                                                | 185 ------
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db.dts                                                  | 402 +++++++++++++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130.dtsi                                                    | 143 +----
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db-A.dts                                                |  29 -
 Silicon/Marvell/OcteonTx/DeviceTree/T91/{cn9131-db.dtsi => cn9131-db.dts}                              |  93 +--
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db-A.dts                                                |  70 ---
 Silicon/Marvell/OcteonTx/DeviceTree/T91/{cn9132-db.dtsi => cn9132-db.dts}                              | 126 +++-
 41 files changed, 4470 insertions(+), 1080 deletions(-)
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807-quad.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807.dtsi
 rename Silicon/Marvell/{OcteonTx/DeviceTree/T91/armada-ap806.dtsi => Armada7k8k/DeviceTree/armada-ap80x.dtsi} (52%)
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp115.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp11x.dtsi
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806-quad.dtsi
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807-quad.dtsi
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807.dtsi
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap80x.dtsi
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp110.dtsi
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp115.dtsi
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp11x.dtsi
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db-A.dts
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db.dts
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db-A.dts
 rename Silicon/Marvell/OcteonTx/DeviceTree/T91/{cn9131-db.dtsi => cn9131-db.dts} (66%)
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db-A.dts
 rename Silicon/Marvell/OcteonTx/DeviceTree/T91/{cn9132-db.dtsi => cn9132-db.dts} (54%)

-- 
2.29.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [edk2-non-osi PATCH 2/4] Marvell/Armada7k8k: Move device tree sources from edk2-platforms
  2021-03-18 19:57 [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Marcin Wojtas
@ 2021-03-18 19:57 ` Marcin Wojtas
  2021-03-18 19:57 ` [edk2-platforms PATCH 1/4] Marvell/Armada7k8k: Remove " Marcin Wojtas
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Marcin Wojtas @ 2021-03-18 19:57 UTC (permalink / raw)
  To: devel; +Cc: leif, ard.biesheuvel, mw, jaz, kostap, upstream, jon

edk2-non-osi project is a more proper place for keeping
the device tree sources, so keep it here from now on.

Signed-off-by: Marcin Wojtas <mw@semihalf.com>
---
 Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf       |  22 +
 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf       |  22 +
 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf    |  22 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi       |  16 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts     | 267 ++++++++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi       |  16 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi       |  64 +++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi       |  26 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts     | 336 ++++++++++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts  | 377 +++++++++++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi       |  25 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi       | 108 ++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi |  31 ++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi |  43 ++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi      | 264 +++++++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi     |  10 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi      | 560 ++++++++++++++++++++
 17 files changed, 2209 insertions(+)
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi

diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf b/Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf
new file mode 100644
index 0000000..b533578
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf
@@ -0,0 +1,22 @@
+## @file
+#
+#  Device tree description of the Marvell Armada 7040 DB platform
+#
+#  Copyright (c) 2018, Marvell International Ltd. All rights reserved.
+#
+#  SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+  INF_VERSION    = 0x0001001A
+  BASE_NAME      = Armada70x0DbDeviceTree
+  FILE_GUID      = 25462CDA-221F-47DF-AC1D-259CFAA4E326 # gDtPlatformDefaultDtbFileGuid
+  MODULE_TYPE    = USER_DEFINED
+  VERSION_STRING = 1.0
+
+[Sources]
+  armada-7040-db.dts
+
+[Packages]
+  MdePkg/MdePkg.dec
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf b/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf
new file mode 100644
index 0000000..378fad2
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf
@@ -0,0 +1,22 @@
+## @file
+#
+#  Device tree description of the Marvell Armada 8040 DB platform
+#
+#  Copyright (c) 2018, Marvell International Ltd. All rights reserved.
+#
+#  SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+  INF_VERSION    = 0x0001001A
+  BASE_NAME      = Armada80x0DbDeviceTree
+  FILE_GUID      = 25462CDA-221F-47DF-AC1D-259CFAA4E326 # gDtPlatformDefaultDtbFileGuid
+  MODULE_TYPE    = USER_DEFINED
+  VERSION_STRING = 1.0
+
+[Sources]
+  armada-8040-db.dts
+
+[Packages]
+  MdePkg/MdePkg.dec
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf b/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf
new file mode 100644
index 0000000..540e1a7
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf
@@ -0,0 +1,22 @@
+## @file
+#
+#  Device tree description of the Marvell Armada 8040 MacchiatoBin platform
+#
+#  Copyright (c) 2018, Marvell International Ltd. All rights reserved.
+#
+#  SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+  INF_VERSION    = 0x0001001A
+  BASE_NAME      = Armada80x0McBinDeviceTree
+  FILE_GUID      = 25462CDA-221F-47DF-AC1D-259CFAA4E326 # gDtPlatformDefaultDtbFileGuid
+  MODULE_TYPE    = USER_DEFINED
+  VERSION_STRING = 1.0
+
+[Sources]
+  armada-8040-mcbin.dts
+
+[Packages]
+  MdePkg/MdePkg.dec
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi
new file mode 100644
index 0000000..e2edc26
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for the Armada 7020 SoC, made of an AP806 Dual and
+ * one CP110.
+ */
+
+#include "armada-ap806-dual.dtsi"
+#include "armada-70x0.dtsi"
+
+/ {
+        model = "Marvell Armada 7020";
+        compatible = "marvell,armada7020", "marvell,armada-ap806-dual",
+                     "marvell,armada-ap806";
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
new file mode 100644
index 0000000..f5878ef
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
@@ -0,0 +1,267 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada 7040 Development board platform
+ */
+
+#include "armada-7040.dtsi"
+
+#define GPIO_ACTIVE_HIGH 0
+#define GPIO_ACTIVE_LOW  1
+
+/ {
+        model = "Marvell Armada 7040 DB board";
+        compatible = "marvell,armada7040-db", "marvell,armada7040",
+                     "marvell,armada-ap806-quad", "marvell,armada-ap806";
+
+        chosen {
+                stdout-path = "serial0:115200n8";
+        };
+
+        memory@0 {
+                device_type = "memory";
+                reg = <0x0 0x0 0x0 0x80000000>;
+        };
+
+        aliases {
+                ethernet0 = &cp0_eth0;
+                ethernet1 = &cp0_eth1;
+                ethernet2 = &cp0_eth2;
+        };
+
+        cp0_reg_usb3_0_vbus: cp0-usb3-0-vbus {
+                compatible = "regulator-fixed";
+                regulator-name = "usb3h0-vbus";
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                enable-active-high;
+                gpio = <&expander0 0 GPIO_ACTIVE_HIGH>;
+        };
+
+        cp0_reg_usb3_1_vbus: cp0-usb3-1-vbus {
+                compatible = "regulator-fixed";
+                regulator-name = "usb3h1-vbus";
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                enable-active-high;
+                gpio = <&expander0 1 GPIO_ACTIVE_HIGH>;
+        };
+
+        cp0_usb3_0_phy: cp0-usb3-0-phy {
+                compatible = "usb-nop-xceiv";
+                vcc-supply = <&cp0_reg_usb3_0_vbus>;
+        };
+
+        cp0_usb3_1_phy: cp0-usb3-1-phy {
+                compatible = "usb-nop-xceiv";
+                vcc-supply = <&cp0_reg_usb3_1_vbus>;
+        };
+};
+
+&i2c0 {
+        status = "okay";
+        clock-frequency = <100000>;
+};
+
+&spi0 {
+        status = "okay";
+
+        spi-flash@0 {
+                #address-cells = <1>;
+                #size-cells = <1>;
+                compatible = "jedec,spi-nor";
+                reg = <0>;
+                spi-max-frequency = <10000000>;
+
+                partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "U-Boot";
+                                reg = <0 0x200000>;
+                        };
+                        partition@400000 {
+                                label = "Filesystem";
+                                reg = <0x200000 0xce0000>;
+                        };
+                };
+        };
+};
+
+&uart0 {
+        status = "okay";
+        pinctrl-0 = <&uart0_pins>;
+        pinctrl-names = "default";
+};
+
+
+&cp0_pcie2 {
+        status = "okay";
+};
+
+&cp0_i2c0 {
+        status = "okay";
+        clock-frequency = <100000>;
+
+        expander0: pca9555@21 {
+                compatible = "nxp,pca9555";
+                pinctrl-names = "default";
+                gpio-controller;
+                #gpio-cells = <2>;
+                reg = <0x21>;
+                /*
+                 * IO0_0: USB3_PWR_EN0        IO1_0: USB_3_1_Dev_Detect
+                 * IO0_1: USB3_PWR_EN1        IO1_1: USB2_1_current_limit
+                 * IO0_2: DDR3_4_Detect        IO1_2: Hcon_IO_RstN
+                 * IO0_3: USB2_DEVICE_DETECT
+                 * IO0_4: GPIO_0        IO1_4: SD_Status
+                 * IO0_5: GPIO_1        IO1_5: LDO_5V_Enable
+                 * IO0_6: IHB_5V_Enable        IO1_6: PWR_EN_eMMC
+                 * IO0_7:                IO1_7: SDIO_Vcntrl
+                 */
+        };
+};
+
+&cp0_nand_controller {
+        /*
+         * SPI on CPM and NAND have common pins on this board. We can
+         * use only one at a time. To enable the NAND (which will
+         * disable the SPI), the "status = "okay";" line have to be
+         * added here.
+         */
+        pinctrl-0 = <&nand_pins>, <&nand_rb>;
+        pinctrl-names = "default";
+
+        nand@0 {
+                reg = <0>;
+                label = "pxa3xx_nand-0";
+                nand-rb = <0>;
+                nand-on-flash-bbt;
+                nand-ecc-strength = <4>;
+                nand-ecc-step-size = <512>;
+
+                partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "U-Boot";
+                                reg = <0 0x200000>;
+                        };
+
+                        partition@200000 {
+                                label = "Linux";
+                                reg = <0x200000 0xe00000>;
+                        };
+
+                        partition@1000000 {
+                                label = "Filesystem";
+                                reg = <0x1000000 0x3f000000>;
+                        };
+
+                };
+        };
+};
+
+&cp0_spi1 {
+        status = "disabled";
+
+        spi-flash@0 {
+                #address-cells = <0x1>;
+                #size-cells = <0x1>;
+                compatible = "jedec,spi-nor";
+                reg = <0x0>;
+                spi-max-frequency = <20000000>;
+
+                partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "U-Boot";
+                                reg = <0x0 0x200000>;
+                        };
+
+                        partition@400000 {
+                                label = "Filesystem";
+                                reg = <0x200000 0xe00000>;
+                        };
+                };
+        };
+};
+
+&cp0_sata0 {
+        status = "okay";
+};
+
+&cp0_usb3_0 {
+        usb-phy = <&cp0_usb3_0_phy>;
+        status = "okay";
+};
+
+&cp0_usb3_1 {
+        usb-phy = <&cp0_usb3_1_phy>;
+        status = "okay";
+};
+
+&ap_sdhci0 {
+        status = "okay";
+        bus-width = <4>;
+        no-1-8-v;
+        non-removable;
+};
+
+&cp0_sdhci0 {
+        status = "okay";
+        bus-width = <4>;
+        no-1-8-v;
+        cd-gpios = <&expander0 12 GPIO_ACTIVE_LOW>;
+};
+
+&cp0_mdio {
+        status = "okay";
+
+        phy0: ethernet-phy@0 {
+                reg = <0>;
+        };
+        phy1: ethernet-phy@1 {
+                reg = <1>;
+        };
+};
+
+&cp0_ethernet {
+        status = "okay";
+};
+
+&cp0_eth0 {
+        status = "okay";
+        /* Network PHY */
+        phy-mode = "10gbase-kr";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp0_comphy2 0>;
+
+        fixed-link {
+                speed = <10000>;
+                full-duplex;
+        };
+};
+
+&cp0_eth1 {
+        status = "okay";
+        /* Network PHY */
+        phy = <&phy0>;
+        phy-mode = "sgmii";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp0_comphy0 1>;
+};
+
+&cp0_eth2 {
+        status = "okay";
+        phy = <&phy1>;
+        phy-mode = "rgmii-id";
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
new file mode 100644
index 0000000..03109b2
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for the Armada 7040 SoC, made of an AP806 Quad and
+ * one CP110.
+ */
+
+#include "armada-ap806-quad.dtsi"
+#include "armada-70x0.dtsi"
+
+/ {
+        model = "Marvell Armada 7040";
+        compatible = "marvell,armada7040", "marvell,armada-ap806-quad",
+                     "marvell,armada-ap806";
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
new file mode 100644
index 0000000..78f9d87
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2017 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for the Armada 70x0 SoC
+ */
+
+/ {
+        aliases {
+                gpio1 = &cp0_gpio1;
+                gpio2 = &cp0_gpio2;
+                spi1 = &cp0_spi0;
+                spi2 = &cp0_spi1;
+        };
+};
+
+/*
+ * 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
+
+#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
+
+&cp0_gpio1 {
+        status = "okay";
+};
+
+&cp0_gpio2 {
+        status = "okay";
+};
+
+&cp0_syscon0 {
+        cp0_pinctrl: pinctrl {
+                compatible = "marvell,armada-7k-pinctrl";
+
+                nand_pins: nand-pins {
+                        marvell,pins =
+                        "mpp15", "mpp16", "mpp17", "mpp18",
+                        "mpp19", "mpp20", "mpp21", "mpp22",
+                        "mpp23", "mpp24", "mpp25", "mpp26",
+                        "mpp27";
+                        marvell,function = "dev";
+                };
+
+                nand_rb: nand-rb {
+                        marvell,pins = "mpp13";
+                        marvell,function = "nf";
+                };
+        };
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi
new file mode 100644
index 0000000..5d76345
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi
@@ -0,0 +1,26 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for the Armada 8020 SoC, made of an AP806 Dual and
+ * two CP110.
+ */
+
+#include "armada-ap806-dual.dtsi"
+#include "armada-80x0.dtsi"
+
+/ {
+        model = "Marvell Armada 8020";
+        compatible = "marvell,armada8020", "marvell,armada-ap806-dual",
+                     "marvell,armada-ap806";
+};
+
+/* The RTC requires external oscillator. But on Aramda 80x0, the RTC clock
+ * in CP master is not connected (by package) to the oscillator. So
+ * disable it. However, the RTC clock in CP slave is connected to the
+ * oscillator so this one is let enabled.
+ */
+
+&cp0_rtc {
+        status = "disabled";
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
new file mode 100644
index 0000000..e813922
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
@@ -0,0 +1,336 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada 8040 Development board platform
+ */
+
+#include "armada-8040.dtsi"
+
+#define GPIO_ACTIVE_HIGH 0
+#define GPIO_ACTIVE_LOW  1
+
+/ {
+        model = "Marvell Armada 8040 DB board";
+        compatible = "marvell,armada8040-db", "marvell,armada8040",
+                     "marvell,armada-ap806-quad", "marvell,armada-ap806";
+
+        chosen {
+                stdout-path = "serial0:115200n8";
+        };
+
+        memory@0 {
+                device_type = "memory";
+                reg = <0x0 0x0 0x0 0x80000000>;
+        };
+
+        aliases {
+                ethernet0 = &cp0_eth0;
+                ethernet1 = &cp0_eth2;
+                ethernet2 = &cp1_eth0;
+                ethernet3 = &cp1_eth1;
+        };
+
+        cp0_reg_usb3_0_vbus: cp0-usb3-0-vbus {
+                compatible = "regulator-fixed";
+                regulator-name = "cp0-usb3h0-vbus";
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                enable-active-high;
+                gpio = <&expander0 0 GPIO_ACTIVE_HIGH>;
+        };
+
+        cp0_reg_usb3_1_vbus: cp0-usb3-1-vbus {
+                compatible = "regulator-fixed";
+                regulator-name = "cp0-usb3h1-vbus";
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                enable-active-high;
+                gpio = <&expander0 1 GPIO_ACTIVE_HIGH>;
+        };
+
+        cp0_usb3_0_phy: cp0-usb3-0-phy {
+                compatible = "usb-nop-xceiv";
+                vcc-supply = <&cp0_reg_usb3_0_vbus>;
+        };
+
+        cp0_usb3_1_phy: cp0-usb3-1-phy {
+                compatible = "usb-nop-xceiv";
+                vcc-supply = <&cp0_reg_usb3_1_vbus>;
+        };
+
+        cp1_reg_usb3_0_vbus: cp1-usb3-0-vbus {
+                compatible = "regulator-fixed";
+                regulator-name = "cp1-usb3h0-vbus";
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                enable-active-high;
+                gpio = <&expander1 0 GPIO_ACTIVE_HIGH>;
+        };
+
+        cp1_usb3_0_phy: cp1-usb3-0-phy {
+                compatible = "usb-nop-xceiv";
+                vcc-supply = <&cp1_reg_usb3_0_vbus>;
+        };
+};
+
+&i2c0 {
+        status = "okay";
+        clock-frequency = <100000>;
+};
+
+&spi0 {
+        status = "okay";
+
+        spi-flash@0 {
+                #address-cells = <1>;
+                #size-cells = <1>;
+                compatible = "jedec,spi-nor";
+                reg = <0>;
+                spi-max-frequency = <10000000>;
+
+                partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "U-Boot";
+                                reg = <0 0x200000>;
+                        };
+                        partition@400000 {
+                                label = "Filesystem";
+                                reg = <0x200000 0xce0000>;
+                        };
+                };
+        };
+};
+
+/* Accessible over the mini-USB CON9 connector on the main board */
+&uart0 {
+        status = "okay";
+        pinctrl-0 = <&uart0_pins>;
+        pinctrl-names = "default";
+};
+
+/* CON6 on CP0 expansion */
+&cp0_pcie0 {
+        status = "okay";
+};
+
+/* CON5 on CP0 expansion */
+&cp0_pcie2 {
+        status = "okay";
+};
+
+&cp0_i2c0 {
+        status = "okay";
+        clock-frequency = <100000>;
+
+        /* U31 */
+        expander0: pca9555@21 {
+                compatible = "nxp,pca9555";
+                pinctrl-names = "default";
+                gpio-controller;
+                #gpio-cells = <2>;
+                reg = <0x21>;
+        };
+
+        /* U25 */
+        expander1: pca9555@25 {
+                compatible = "nxp,pca9555";
+                pinctrl-names = "default";
+                gpio-controller;
+                #gpio-cells = <2>;
+                reg = <0x25>;
+        };
+
+};
+
+/* CON4 on CP0 expansion */
+&cp0_sata0 {
+        status = "okay";
+};
+
+/* CON9 on CP0 expansion */
+&cp0_usb3_0 {
+        usb-phy = <&cp0_usb3_0_phy>;
+        status = "okay";
+};
+
+/* CON10 on CP0 expansion */
+&cp0_usb3_1 {
+        usb-phy = <&cp0_usb3_1_phy>;
+        status = "okay";
+};
+
+&cp0_mdio {
+        status = "okay";
+
+        phy1: ethernet-phy@1 {
+                reg = <1>;
+        };
+};
+
+&cp0_ethernet {
+        status = "okay";
+};
+
+&cp0_eth0 {
+        status = "okay";
+        phy-mode = "10gbase-kr";
+
+        fixed-link {
+                speed = <10000>;
+                full-duplex;
+        };
+};
+
+&cp0_eth2 {
+        status = "okay";
+        phy = <&phy1>;
+        phy-mode = "rgmii-id";
+};
+
+/* CON6 on CP1 expansion */
+&cp1_pcie0 {
+        status = "okay";
+};
+
+/* CON7 on CP1 expansion */
+&cp1_pcie1 {
+        status = "okay";
+};
+
+/* CON5 on CP1 expansion */
+&cp1_pcie2 {
+        status = "okay";
+};
+
+&cp1_i2c0 {
+        status = "okay";
+        clock-frequency = <100000>;
+};
+
+&cp1_spi1 {
+        status = "disabled";
+
+        spi-flash@0 {
+                #address-cells = <0x1>;
+                #size-cells = <0x1>;
+                compatible = "jedec,spi-nor";
+                reg = <0x0>;
+                spi-max-frequency = <20000000>;
+
+                partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "Boot";
+                                reg = <0x0 0x200000>;
+                        };
+                        partition@200000 {
+                                label = "Filesystem";
+                                reg = <0x200000 0xd00000>;
+                        };
+                        partition@f00000 {
+                                label = "Boot_2nd";
+                                reg = <0xf00000 0x100000>;
+                        };
+                };
+        };
+};
+
+/*
+ * Proper NAND usage will require DPR-76 to be in position 1-2, which disables
+ * MDIO signal of CP1.
+ */
+&cp1_nand_controller {
+        pinctrl-0 = <&nand_pins>, <&nand_rb>;
+        pinctrl-names = "default";
+
+        nand@0 {
+                reg = <0>;
+                nand-rb = <0>;
+                nand-on-flash-bbt;
+                nand-ecc-strength = <4>;
+                nand-ecc-step-size = <512>;
+
+                partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "U-Boot";
+                                reg = <0 0x200000>;
+                        };
+                        partition@200000 {
+                                label = "Linux";
+                                reg = <0x200000 0xe00000>;
+                        };
+                        partition@1000000 {
+                                label = "Filesystem";
+                                reg = <0x1000000 0x3f000000>;
+                        };
+                };
+        };
+};
+
+/* CON4 on CP1 expansion */
+&cp1_sata0 {
+        status = "okay";
+};
+
+/* CON9 on CP1 expansion */
+&cp1_usb3_0 {
+        usb-phy = <&cp1_usb3_0_phy>;
+        status = "okay";
+};
+
+/* CON10 on CP1 expansion */
+&cp1_usb3_1 {
+        status = "okay";
+};
+
+&cp1_mdio {
+        status = "okay";
+
+        phy0: ethernet-phy@0 {
+                reg = <0>;
+        };
+};
+
+&cp1_ethernet {
+        status = "okay";
+};
+
+&cp1_eth0 {
+        status = "okay";
+        phy-mode = "10gbase-kr";
+
+        fixed-link {
+                speed = <10000>;
+                full-duplex;
+        };
+};
+
+&cp1_eth1 {
+        status = "okay";
+        phy = <&phy0>;
+        phy-mode = "rgmii-id";
+};
+
+&ap_sdhci0 {
+        status = "okay";
+        bus-width = <4>;
+        non-removable;
+};
+
+&cp0_sdhci0 {
+        status = "okay";
+        bus-width = <8>;
+        non-removable;
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
new file mode 100644
index 0000000..d9c9348
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
@@ -0,0 +1,377 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for MACCHIATOBin Armada 8040 community board platform
+ */
+
+#include "armada-8040.dtsi"
+
+#define GPIO_ACTIVE_HIGH 0
+#define GPIO_ACTIVE_LOW  1
+
+/ {
+        model = "Marvell 8040 MACCHIATOBin";
+        compatible = "marvell,armada8040-mcbin", "marvell,armada8040",
+                        "marvell,armada-ap806-quad", "marvell,armada-ap806";
+
+        chosen {
+                stdout-path = "serial0:115200n8";
+        };
+
+        memory@0 {
+                device_type = "memory";
+                reg = <0x0 0x0 0x0 0x80000000>;
+        };
+
+        aliases {
+                ethernet0 = &cp0_eth0;
+                ethernet1 = &cp1_eth0;
+                ethernet2 = &cp1_eth1;
+                ethernet3 = &cp1_eth2;
+        };
+
+        /* Regulator labels correspond with schematics */
+        v_3_3: regulator-3-3v {
+                compatible = "regulator-fixed";
+                regulator-name = "v_3_3";
+                regulator-min-microvolt = <3300000>;
+                regulator-max-microvolt = <3300000>;
+                regulator-always-on;
+                status = "okay";
+        };
+
+        v_vddo_h: regulator-1-8v {
+                compatible = "regulator-fixed";
+                regulator-name = "v_vddo_h";
+                regulator-min-microvolt = <1800000>;
+                regulator-max-microvolt = <1800000>;
+                regulator-always-on;
+                status = "okay";
+        };
+
+        v_5v0_usb3_hst_vbus: regulator-usb3-vbus0 {
+                compatible = "regulator-fixed";
+                enable-active-high;
+                gpio = <&cp0_gpio2 15 GPIO_ACTIVE_HIGH>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&cp0_xhci_vbus_pins>;
+                regulator-name = "v_5v0_usb3_hst_vbus";
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                status = "okay";
+        };
+
+        usb3h0_phy: usb3_phy0 {
+                compatible = "usb-nop-xceiv";
+                vcc-supply = <&v_5v0_usb3_hst_vbus>;
+        };
+
+        sfp_eth0: sfp-eth0 {
+                /* CON15,16 - CPM lane 4 */
+                compatible = "sff,sfp";
+                i2c-bus = <&sfpp0_i2c>;
+                los-gpio = <&cp1_gpio1 28 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&cp1_gpio1 27 GPIO_ACTIVE_LOW>;
+                tx-disable-gpio = <&cp1_gpio1 29 GPIO_ACTIVE_HIGH>;
+                tx-fault-gpio  = <&cp1_gpio1 26 GPIO_ACTIVE_HIGH>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&cp1_sfpp0_pins>;
+        };
+
+        sfp_eth1: sfp-eth1 {
+                /* CON17,18 - CPS lane 4 */
+                compatible = "sff,sfp";
+                i2c-bus = <&sfpp1_i2c>;
+                los-gpio = <&cp1_gpio1 8 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&cp1_gpio1 11 GPIO_ACTIVE_LOW>;
+                tx-disable-gpio = <&cp1_gpio1 10 GPIO_ACTIVE_HIGH>;
+                tx-fault-gpio = <&cp0_gpio2 30 GPIO_ACTIVE_HIGH>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&cp1_sfpp1_pins &cp0_sfpp1_pins>;
+        };
+
+        sfp_eth3: sfp-eth3 {
+                /* CON3,4 - CPS lane 5 */
+                compatible = "sff,sfp";
+                i2c-bus = <&sfp_1g_i2c>;
+                los-gpio = <&cp0_gpio2 22 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&cp0_gpio2 21 GPIO_ACTIVE_LOW>;
+                tx-disable-gpio = <&cp1_gpio1 24 GPIO_ACTIVE_HIGH>;
+                tx-fault-gpio = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&cp0_sfp_1g_pins &cp1_sfp_1g_pins>;
+        };
+};
+
+&uart0 {
+        status = "okay";
+        pinctrl-0 = <&uart0_pins>;
+        pinctrl-names = "default";
+};
+
+&ap_sdhci0 {
+        bus-width = <8>;
+        /*
+         * Not stable in HS modes - phy needs "more calibration", so add
+         * the "slow-mode" and disable SDR104, SDR50 and DDR50 modes.
+         */
+        marvell,xenon-phy-slow-mode;
+        no-1-8-v;
+        no-sd;
+        no-sdio;
+        non-removable;
+        status = "okay";
+        vqmmc-supply = <&v_vddo_h>;
+};
+
+&cp0_i2c0 {
+        clock-frequency = <100000>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_i2c0_pins>;
+        status = "okay";
+};
+
+&cp0_i2c1 {
+        clock-frequency = <100000>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_i2c1_pins>;
+        status = "okay";
+
+        i2c-switch@70 {
+                compatible = "nxp,pca9548";
+                #address-cells = <1>;
+                #size-cells = <0>;
+                reg = <0x70>;
+
+                sfpp0_i2c: i2c@0 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        reg = <0>;
+                };
+                sfpp1_i2c: i2c@1 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        reg = <1>;
+                };
+                sfp_1g_i2c: i2c@2 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        reg = <2>;
+                };
+        };
+};
+
+/* J25 UART header */
+&cp0_uart1 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_uart1_pins>;
+        status = "okay";
+};
+
+&cp0_mdio {
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_ge_mdio_pins>;
+        status = "okay";
+
+        ge_phy: ethernet-phy@0 {
+                reg = <0>;
+        };
+};
+
+&cp0_pcie0 {
+        compatible = "marvell,armada8k-pcie-ecam", "snps,dw-pcie-ecam";
+        reg = <0 0xe0000000 0 0xff00000>;
+        bus-range = <0 0xfe>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_pcie_pins>;
+        num-lanes = <4>;
+        num-viewport = <8>;
+        reset-gpio = <&cp0_gpio1 20 GPIO_ACTIVE_LOW>;
+        ranges = <0x1000000 0x0 0x00000000 0x0 0xeff00000 0x0 0x00010000>,
+                 <0x2000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x20000000>,
+                 <0x3000000 0x8 0x00000000 0x8 0x00000000 0x1 0x00000000>;
+        status = "okay";
+};
+
+&cp0_pinctrl {
+        cp0_ge_mdio_pins: ge-mdio-pins {
+                marvell,pins = "mpp32", "mpp34";
+                marvell,function = "ge";
+        };
+        cp0_i2c1_pins: i2c1-pins {
+                marvell,pins = "mpp35", "mpp36";
+                marvell,function = "i2c1";
+        };
+        cp0_i2c0_pins: i2c0-pins {
+                marvell,pins = "mpp37", "mpp38";
+                marvell,function = "i2c0";
+        };
+        cp0_uart1_pins: uart1-pins {
+                marvell,pins = "mpp40", "mpp41";
+                marvell,function = "uart1";
+        };
+        cp0_xhci_vbus_pins: xhci0-vbus-pins {
+                marvell,pins = "mpp47";
+                marvell,function = "gpio";
+        };
+        cp0_sfp_1g_pins: sfp-1g-pins {
+                marvell,pins = "mpp51", "mpp53", "mpp54";
+                marvell,function = "gpio";
+        };
+        cp0_pcie_pins: pcie-pins {
+                marvell,pins = "mpp52";
+                marvell,function = "gpio";
+        };
+        cp0_sdhci_pins: sdhci-pins {
+                marvell,pins = "mpp55", "mpp56", "mpp57", "mpp58", "mpp59",
+                               "mpp60", "mpp61";
+                marvell,function = "sdio";
+        };
+        cp0_sfpp1_pins: sfpp1-pins {
+                marvell,pins = "mpp62";
+                marvell,function = "gpio";
+        };
+};
+
+&cp0_xmdio {
+        status = "okay";
+
+        phy0: ethernet-phy@0 {
+                compatible = "ethernet-phy-ieee802.3-c45";
+                reg = <0>;
+                sfp = <&sfp_eth0>;
+        };
+
+        phy8: ethernet-phy@8 {
+                compatible = "ethernet-phy-ieee802.3-c45";
+                reg = <8>;
+                sfp = <&sfp_eth1>;
+        };
+};
+
+&cp0_ethernet {
+        status = "okay";
+};
+
+&cp0_eth0 {
+        status = "okay";
+        /* Network PHY */
+        phy = <&phy0>;
+        phy-mode = "10gbase-kr";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp0_comphy4 0>;
+};
+
+&cp0_sata0 {
+        /* CPM Lane 0 - U29 */
+        status = "okay";
+};
+
+&cp0_sdhci0 {
+        /* U6 */
+        broken-cd;
+        bus-width = <4>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_sdhci_pins>;
+        status = "okay";
+        vqmmc-supply = <&v_3_3>;
+};
+
+&cp0_usb3_0 {
+        /* J38? - USB2.0 only */
+        status = "okay";
+};
+
+&cp0_usb3_1 {
+        /* J38? - USB2.0 only */
+        status = "okay";
+};
+
+&cp1_ethernet {
+        status = "okay";
+};
+
+&cp1_eth0 {
+        status = "okay";
+        /* Network PHY */
+        phy = <&phy8>;
+        phy-mode = "10gbase-kr";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp1_comphy4 0>;
+};
+
+&cp1_eth1 {
+        /* CPS Lane 0 - J5 (Gigabit RJ45) */
+        status = "okay";
+        /* Network PHY */
+        phy = <&ge_phy>;
+        phy-mode = "sgmii";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp1_comphy0 1>;
+};
+
+&cp1_eth2 {
+        /* CPS Lane 5 */
+        status = "okay";
+        /* Network PHY */
+        phy-mode = "2500base-x";
+        managed = "in-band-status";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp1_comphy5 2>;
+        sfp = <&sfp_eth3>;
+};
+
+&cp1_pinctrl {
+        cp1_sfpp1_pins: sfpp1-pins {
+                marvell,pins = "mpp8", "mpp10", "mpp11";
+                marvell,function = "gpio";
+        };
+        cp1_spi1_pins: spi1-pins {
+                marvell,pins = "mpp12", "mpp13", "mpp14", "mpp15", "mpp16";
+                marvell,function = "spi1";
+        };
+        cp1_uart0_pins: uart0-pins {
+                marvell,pins = "mpp6", "mpp7";
+                marvell,function = "uart0";
+        };
+        cp1_sfp_1g_pins: sfp-1g-pins {
+                marvell,pins = "mpp24";
+                marvell,function = "gpio";
+        };
+        cp1_sfpp0_pins: sfpp0-pins {
+                marvell,pins = "mpp26", "mpp27", "mpp28", "mpp29";
+                marvell,function = "gpio";
+        };
+};
+
+/* J27 UART header */
+&cp1_uart0 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp1_uart0_pins>;
+        status = "okay";
+};
+
+&cp1_sata0 {
+        /* CPS Lane 1 - U32 */
+        /* CPS Lane 3 - U31 */
+        status = "okay";
+};
+
+&cp1_spi1 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp1_spi1_pins>;
+        status = "disabled";
+
+        spi-flash@0 {
+                compatible = "st,w25q32";
+                spi-max-frequency = <50000000>;
+                reg = <0>;
+        };
+};
+
+&cp1_usb3_0 {
+        /* CPS Lane 2 - CON7 */
+        usb-phy = <&usb3h0_phy>;
+        status = "okay";
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
new file mode 100644
index 0000000..784ef3f
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for the Armada 8040 SoC, made of an AP806 Quad and
+ * two CP110.
+ */
+
+#include "armada-ap806-quad.dtsi"
+#include "armada-80x0.dtsi"
+
+/ {
+        model = "Marvell Armada 8040";
+        compatible = "marvell,armada8040", "marvell,armada-ap806-quad",
+                     "marvell,armada-ap806";
+};
+
+/* The RTC requires external oscillator. But on Aramda 80x0, the RTC clock
+ * in CP master is not connected (by package) to the oscillator. So
+ * disable it. However, the RTC clock in CP slave is connected to the
+ * oscillator so this one is let enabled.
+ */
+&cp0_rtc {
+        status = "disabled";
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
new file mode 100644
index 0000000..81967e2
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
@@ -0,0 +1,108 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2017 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for the Armada 80x0 SoC family
+ */
+
+/ {
+        aliases {
+                gpio1 = &cp1_gpio1;
+                gpio2 = &cp0_gpio2;
+                spi1 = &cp0_spi0;
+                spi2 = &cp0_spi1;
+                spi3 = &cp1_spi0;
+                spi4 = &cp1_spi1;
+        };
+};
+
+/*
+ * 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
+
+#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
+
+/*
+ * 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
+
+#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
+
+/* The 80x0 has two CP blocks, but uses only one block from each. */
+&cp1_gpio1 {
+        status = "okay";
+};
+
+&cp0_gpio2 {
+        status = "okay";
+};
+
+&cp0_syscon0 {
+        cp0_pinctrl: pinctrl {
+                compatible = "marvell,armada-8k-cpm-pinctrl";
+        };
+};
+
+&cp1_syscon0 {
+        cp1_pinctrl: pinctrl {
+                compatible = "marvell,armada-8k-cps-pinctrl";
+
+                nand_pins: nand-pins {
+                        marvell,pins =
+                        "mpp0", "mpp1", "mpp2", "mpp3",
+                        "mpp4", "mpp5", "mpp6", "mpp7",
+                        "mpp8", "mpp9", "mpp10", "mpp11",
+                        "mpp15", "mpp16", "mpp17", "mpp18",
+                        "mpp19", "mpp20", "mpp21", "mpp22",
+                        "mpp23", "mpp24", "mpp25", "mpp26",
+                        "mpp27";
+                        marvell,function = "dev";
+                };
+
+                nand_rb: nand-rb {
+                        marvell,pins = "mpp13", "mpp12";
+                        marvell,function = "nf";
+                };
+        };
+};
+
+&cp1_crypto {
+        /*
+         * The cryptographic engine found on the cp110
+         * master is enabled by default at the SoC
+         * level. Because it is not possible as of now
+         * to enable two cryptographic engines in
+         * parallel, disable this one by default.
+         */
+        status = "disabled";
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
new file mode 100644
index 0000000..5985843
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada AP806.
+ */
+
+#include "armada-ap806.dtsi"
+
+/ {
+        model = "Marvell Armada AP806 Dual";
+        compatible = "marvell,armada-ap806-dual", "marvell,armada-ap806";
+
+        cpus {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                cpu@0 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72", "arm,armv8";
+                        reg = <0x000>;
+                        enable-method = "psci";
+                };
+                cpu@1 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72", "arm,armv8";
+                        reg = <0x001>;
+                        enable-method = "psci";
+                };
+        };
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
new file mode 100644
index 0000000..bae0ed9
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
@@ -0,0 +1,43 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada AP806.
+ */
+
+#include "armada-ap806.dtsi"
+
+/ {
+        model = "Marvell Armada AP806 Quad";
+        compatible = "marvell,armada-ap806-quad", "marvell,armada-ap806";
+
+        cpus {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                cpu@0 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72", "arm,armv8";
+                        reg = <0x000>;
+                        enable-method = "psci";
+                };
+                cpu@1 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72", "arm,armv8";
+                        reg = <0x001>;
+                        enable-method = "psci";
+                };
+                cpu@100 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72", "arm,armv8";
+                        reg = <0x100>;
+                        enable-method = "psci";
+                };
+                cpu@101 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72", "arm,armv8";
+                        reg = <0x101>;
+                        enable-method = "psci";
+                };
+        };
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
new file mode 100644
index 0000000..66124bf
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
@@ -0,0 +1,264 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada AP806.
+ */
+
+#define IRQ_TYPE_LEVEL_HIGH      (1 << 2)
+#define IRQ_TYPE_LEVEL_LOW       (1 << 3)
+
+#define GIC_SPI                  0
+#define GIC_PPI                  1
+
+#define GIC_CPU_MASK_RAW(x)      ((x) << 8)
+#define GIC_CPU_MASK_SIMPLE(num) GIC_CPU_MASK_RAW((1 << (num)) - 1)
+
+/dts-v1/;
+
+/ {
+        model = "Marvell Armada AP806";
+        compatible = "marvell,armada-ap806";
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        aliases {
+                serial0 = &uart0;
+                serial1 = &uart1;
+                gpio0 = &ap_gpio;
+                spi0 = &spi0;
+        };
+
+        psci {
+                compatible = "arm,psci-0.2";
+                method = "smc";
+        };
+
+        ap806 {
+                #address-cells = <2>;
+                #size-cells = <2>;
+                compatible = "simple-bus";
+                interrupt-parent = <&gic>;
+                ranges;
+
+                config-space@f0000000 {
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+                        compatible = "simple-bus";
+                        ranges = <0x0 0x0 0xf0000000 0x1000000>;
+
+                        gic: interrupt-controller@210000 {
+                                compatible = "arm,gic-400";
+                                #interrupt-cells = <3>;
+                                #address-cells = <1>;
+                                #size-cells = <1>;
+                                ranges;
+                                interrupt-controller;
+                                interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+                                reg = <0x210000 0x10000>,
+                                      <0x220000 0x20000>,
+                                      <0x240000 0x20000>,
+                                      <0x260000 0x20000>;
+
+                                gic_v2m0: v2m@280000 {
+                                        compatible = "arm,gic-v2m-frame";
+                                        msi-controller;
+                                        reg = <0x280000 0x1000>;
+                                        arm,msi-base-spi = <160>;
+                                        arm,msi-num-spis = <32>;
+                                };
+                                gic_v2m1: v2m@290000 {
+                                        compatible = "arm,gic-v2m-frame";
+                                        msi-controller;
+                                        reg = <0x290000 0x1000>;
+                                        arm,msi-base-spi = <192>;
+                                        arm,msi-num-spis = <32>;
+                                };
+                                gic_v2m2: v2m@2a0000 {
+                                        compatible = "arm,gic-v2m-frame";
+                                        msi-controller;
+                                        reg = <0x2a0000 0x1000>;
+                                        arm,msi-base-spi = <224>;
+                                        arm,msi-num-spis = <32>;
+                                };
+                                gic_v2m3: v2m@2b0000 {
+                                        compatible = "arm,gic-v2m-frame";
+                                        msi-controller;
+                                        reg = <0x2b0000 0x1000>;
+                                        arm,msi-base-spi = <256>;
+                                        arm,msi-num-spis = <32>;
+                                };
+                        };
+
+                        timer {
+                                compatible = "arm,armv8-timer";
+                                interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                                             <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                                             <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                                             <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+                        };
+
+                        pmu {
+                                compatible = "arm,cortex-a72-pmu";
+                                interrupt-parent = <&pic>;
+                                interrupts = <17>;
+                        };
+
+                        odmi: odmi@300000 {
+                                compatible = "marvell,odmi-controller";
+                                interrupt-controller;
+                                msi-controller;
+                                marvell,odmi-frames = <4>;
+                                reg = <0x300000 0x4000>,
+                                      <0x304000 0x4000>,
+                                      <0x308000 0x4000>,
+                                      <0x30C000 0x4000>;
+                                marvell,spi-base = <128>, <136>, <144>, <152>;
+                        };
+
+                        gicp: gicp@3f0040 {
+                                compatible = "marvell,ap806-gicp";
+                                reg = <0x3f0040 0x10>;
+                                marvell,spi-ranges = <64 64>, <288 64>;
+                                msi-controller;
+                        };
+
+                        pic: interrupt-controller@3f0100 {
+                                compatible = "marvell,armada-8k-pic";
+                                reg = <0x3f0100 0x10>;
+                                #interrupt-cells = <1>;
+                                interrupt-controller;
+                                interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
+                        };
+
+                        xor@400000 {
+                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                                reg = <0x400000 0x1000>,
+                                      <0x410000 0x1000>;
+                                msi-parent = <&gic_v2m0>;
+                                clocks = <&ap_clk 3>;
+                                dma-coherent;
+                        };
+
+                        xor@420000 {
+                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                                reg = <0x420000 0x1000>,
+                                      <0x430000 0x1000>;
+                                msi-parent = <&gic_v2m0>;
+                                clocks = <&ap_clk 3>;
+                                dma-coherent;
+                        };
+
+                        xor@440000 {
+                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                                reg = <0x440000 0x1000>,
+                                      <0x450000 0x1000>;
+                                msi-parent = <&gic_v2m0>;
+                                clocks = <&ap_clk 3>;
+                                dma-coherent;
+                        };
+
+                        xor@460000 {
+                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                                reg = <0x460000 0x1000>,
+                                      <0x470000 0x1000>;
+                                msi-parent = <&gic_v2m0>;
+                                clocks = <&ap_clk 3>;
+                                dma-coherent;
+                        };
+
+                        spi0: spi@510600 {
+                                compatible = "marvell,armada-380-spi";
+                                reg = <0x510600 0x50>;
+                                #address-cells = <1>;
+                                #size-cells = <0>;
+                                interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
+                                clocks = <&ap_clk 3>;
+                                status = "disabled";
+                        };
+
+                        i2c0: i2c@511000 {
+                                compatible = "marvell,mv78230-i2c";
+                                reg = <0x511000 0x20>;
+                                #address-cells = <1>;
+                                #size-cells = <0>;
+                                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
+                                timeout-ms = <1000>;
+                                clocks = <&ap_clk 3>;
+                                status = "disabled";
+                        };
+
+                        uart0: serial@512000 {
+                                compatible = "snps,dw-apb-uart";
+                                reg = <0x512000 0x100>;
+                                reg-shift = <2>;
+                                interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+                                reg-io-width = <1>;
+                                clocks = <&ap_clk 3>;
+                                status = "disabled";
+                        };
+
+                        uart1: serial@512100 {
+                                compatible = "snps,dw-apb-uart";
+                                reg = <0x512100 0x100>;
+                                reg-shift = <2>;
+                                interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                                reg-io-width = <1>;
+                                clocks = <&ap_clk 3>;
+                                status = "disabled";
+
+                        };
+
+                        watchdog: watchdog@610000 {
+                                compatible = "arm,sbsa-gwdt";
+                                reg = <0x610000 0x1000>, <0x600000 0x1000>;
+                                interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                        };
+
+                        ap_sdhci0: sdhci@6e0000 {
+                                compatible = "marvell,armada-ap806-sdhci";
+                                reg = <0x6e0000 0x300>;
+                                interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                                clock-names = "core";
+                                clocks = <&ap_clk 4>;
+                                dma-coherent;
+                                marvell,xenon-phy-slow-mode;
+                                status = "disabled";
+                        };
+
+                        ap_syscon: system-controller@6f4000 {
+                                compatible = "syscon", "simple-mfd";
+                                reg = <0x6f4000 0x2000>;
+
+                                ap_clk: clock {
+                                        compatible = "marvell,ap806-clock";
+                                        #clock-cells = <1>;
+                                };
+
+                                ap_pinctrl: pinctrl {
+                                        compatible = "marvell,ap806-pinctrl";
+
+                                        uart0_pins: uart0-pins {
+                                                marvell,pins = "mpp11", "mpp19";
+                                                marvell,function = "uart0";
+                                        };
+                                };
+
+                                ap_gpio: gpio@1040 {
+                                        compatible = "marvell,armada-8k-gpio";
+                                        offset = <0x1040>;
+                                        ngpios = <20>;
+                                        gpio-controller;
+                                        #gpio-cells = <2>;
+                                        gpio-ranges = <&ap_pinctrl 0 0 20>;
+                                };
+                        };
+
+                        ap_thermal: thermal@6f808c {
+                                compatible = "marvell,armada-ap806-thermal";
+                                reg = <0x6f808c 0x4>,
+                                      <0x6f8084 0x8>;
+                        };
+                };
+        };
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
new file mode 100644
index 0000000..8b610fd
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ */
+
+/* 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 ADDRESSIFY(addr) EVALUATOR(0x, addr)
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi
new file mode 100644
index 0000000..5e8e524
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi
@@ -0,0 +1,560 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada CP110.
+ */
+
+#include "armada-common.dtsi"
+
+#define ICU_GRP_NSR             0x0
+#define ICU_GRP_SR              0x1
+#define ICU_GRP_SEI             0x4
+#define ICU_GRP_REI             0x5
+
+#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 { };
+};
+
+&CP110_NAME {
+        #address-cells = <2>;
+        #size-cells = <2>;
+        compatible = "simple-bus";
+        interrupt-parent = <&CP110_LABEL(icu)>;
+        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(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
+                                 <&CP110_LABEL(ppv2_clk)>, <&CP110_LABEL(core_clk)>,
+                                 <&CP110_LABEL(core_clk)>;
+                        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 = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 43 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 47 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 51 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 55 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 129 IRQ_TYPE_LEVEL_HIGH>;
+                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
+                                        "tx-cpu3", "rx-shared", "link";
+                                port-id = <0>;
+                                gop-port-id = <0>;
+                                status = "disabled";
+                        };
+
+                        CP110_LABEL(eth1): eth1 {
+                                interrupts = <ICU_GRP_NSR 40 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 44 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 48 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 52 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 56 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 128 IRQ_TYPE_LEVEL_HIGH>;
+                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
+                                        "tx-cpu3", "rx-shared", "link";
+                                port-id = <1>;
+                                gop-port-id = <2>;
+                                status = "disabled";
+                        };
+
+                        CP110_LABEL(eth2): eth2 {
+                                interrupts = <ICU_GRP_NSR 41 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 45 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 49 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 53 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 57 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 127 IRQ_TYPE_LEVEL_HIGH>;
+                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
+                                        "tx-cpu3", "rx-shared", "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)>;
+                        #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(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
+                                 <&CP110_LABEL(core_clk)>, <&CP110_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(xmdio): mdio@12a600 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        compatible = "marvell,xmdio";
+                        reg = <0x12a600 0x10>;
+                        clocks = <&CP110_LABEL(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
+                                 <&CP110_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(icu): interrupt-controller@1e0000 {
+                        compatible = "marvell,cp110-icu";
+                        reg = <0x1e0000 0x440>;
+                        #interrupt-cells = <3>;
+                        interrupt-controller;
+                        msi-parent = <&gicp>;
+                };
+
+                CP110_LABEL(rtc): rtc@284000 {
+                        compatible = "marvell,armada-8k-rtc";
+                        reg = <0x284000 0x20>, <0x284080 0x24>;
+                        reg-names = "rtc", "rtc-soc";
+                        interrupts = <ICU_GRP_NSR 77 IRQ_TYPE_LEVEL_HIGH>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(thermal): thermal@400078 {
+                        compatible = "marvell,armada-cp110-thermal";
+                        reg = <0x400078 0x4>,
+                        <0x400070 0x8>;
+                };
+
+                CP110_LABEL(syscon0): system-controller@440000 {
+                        compatible = "syscon", "simple-mfd";
+                        reg = <0x440000 0x2000>;
+
+                        CP110_LABEL(clk): clock {
+                                compatible = "marvell,cp110-clock";
+                                status = "disabled";
+                                #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 = <ICU_GRP_NSR 86 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 85 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 84 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 83 IRQ_TYPE_LEVEL_HIGH>;
+                                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 = <ICU_GRP_NSR 82 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 81 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 80 IRQ_TYPE_LEVEL_HIGH>,
+                                        <ICU_GRP_NSR 79 IRQ_TYPE_LEVEL_HIGH>;
+                                status = "disabled";
+                        };
+                };
+
+                CP110_LABEL(usb3_0): usb3@500000 {
+                        compatible = "marvell,armada-8k-xhci",
+                        "generic-xhci";
+                        reg = <0x500000 0x4000>;
+                        dma-coherent;
+                        interrupts = <ICU_GRP_NSR 106 IRQ_TYPE_LEVEL_HIGH>;
+                        clock-names = "core", "reg";
+                        clocks = <&CP110_LABEL(core_clk)>,
+                                 <&CP110_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(usb3_1): usb3@510000 {
+                        compatible = "marvell,armada-8k-xhci",
+                        "generic-xhci";
+                        reg = <0x510000 0x4000>;
+                        dma-coherent;
+                        interrupts = <ICU_GRP_NSR 105 IRQ_TYPE_LEVEL_HIGH>;
+                        clock-names = "core", "reg";
+                        clocks = <&CP110_LABEL(core_clk)>,
+                                 <&CP110_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(sata0): sata@540000 {
+                        compatible = "marvell,armada-8k-ahci",
+                        "generic-ahci";
+                        reg = <0x540000 0x30000>;
+                        dma-coherent;
+                        interrupts = <ICU_GRP_NSR 107 IRQ_TYPE_LEVEL_HIGH>;
+                        clocks = <&CP110_LABEL(core_clk)>,
+                                 <&CP110_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                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(core_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                };
+
+                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(core_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                };
+
+                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(slow_io_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(i2c0): i2c@701000 {
+                        compatible = "marvell,mv78230-i2c";
+                        reg = <0x701000 0x20>;
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        interrupts = <ICU_GRP_NSR 120 IRQ_TYPE_LEVEL_HIGH>;
+                        clock-names = "core", "reg";
+                        clocks = <&CP110_LABEL(slow_io_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(i2c1): i2c@701100 {
+                        compatible = "marvell,mv78230-i2c";
+                        reg = <0x701100 0x20>;
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        interrupts = <ICU_GRP_NSR 121 IRQ_TYPE_LEVEL_HIGH>;
+                        clock-names = "core", "reg";
+                        clocks = <&CP110_LABEL(slow_io_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(uart0): serial@702000 {
+                        compatible = "snps,dw-apb-uart";
+                        reg = <0x702000 0x100>;
+                        reg-shift = <2>;
+                        interrupts = <ICU_GRP_NSR 122 IRQ_TYPE_LEVEL_HIGH>;
+                        reg-io-width = <1>;
+                        clock-names = "baudclk", "apb_pclk";
+                        clocks = <&CP110_LABEL(slow_io_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(uart1): serial@702100 {
+                        compatible = "snps,dw-apb-uart";
+                        reg = <0x702100 0x100>;
+                        reg-shift = <2>;
+                        interrupts = <ICU_GRP_NSR 123 IRQ_TYPE_LEVEL_HIGH>;
+                        reg-io-width = <1>;
+                        clock-names = "baudclk", "apb_pclk";
+                        clocks = <&CP110_LABEL(slow_io_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(uart2): serial@702200 {
+                        compatible = "snps,dw-apb-uart";
+                        reg = <0x702200 0x100>;
+                        reg-shift = <2>;
+                        interrupts = <ICU_GRP_NSR 124 IRQ_TYPE_LEVEL_HIGH>;
+                        reg-io-width = <1>;
+                        clock-names = "baudclk", "apb_pclk";
+                        clocks = <&CP110_LABEL(slow_io_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(uart3): serial@702300 {
+                        compatible = "snps,dw-apb-uart";
+                        reg = <0x702300 0x100>;
+                        reg-shift = <2>;
+                        interrupts = <ICU_GRP_NSR 125 IRQ_TYPE_LEVEL_HIGH>;
+                        reg-io-width = <1>;
+                        clock-names = "baudclk", "apb_pclk";
+                        clocks = <&CP110_LABEL(slow_io_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        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 = <ICU_GRP_NSR 115 IRQ_TYPE_LEVEL_HIGH>;
+                        clock-names = "core", "reg";
+                        clocks = <&CP110_LABEL(nand_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        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 = <ICU_GRP_NSR 95 IRQ_TYPE_LEVEL_HIGH>;
+                        clock-names = "core", "reg";
+                        clocks = <&CP110_LABEL(x2core_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        status = "okay";
+                };
+
+                CP110_LABEL(sdhci0): sdhci@780000 {
+                        compatible = "marvell,armada-cp110-sdhci";
+                        reg = <0x780000 0x300>;
+                        interrupts = <ICU_GRP_NSR 27 IRQ_TYPE_LEVEL_HIGH>;
+                        clock-names = "core", "axi";
+                        clocks = <&CP110_LABEL(sdio_clk)>, <&CP110_LABEL(core_clk)>;
+                        dma-coherent;
+                        status = "disabled";
+                };
+
+                CP110_LABEL(crypto): crypto@800000 {
+                        compatible = "inside-secure,safexcel-eip197";
+                        reg = <0x800000 0x200000>;
+                        interrupts = <ICU_GRP_NSR 87 IRQ_TYPE_LEVEL_HIGH>,
+                                <ICU_GRP_NSR 88 IRQ_TYPE_LEVEL_HIGH>,
+                                <ICU_GRP_NSR 89 IRQ_TYPE_LEVEL_HIGH>,
+                                <ICU_GRP_NSR 90 IRQ_TYPE_LEVEL_HIGH>,
+                                <ICU_GRP_NSR 91 IRQ_TYPE_LEVEL_HIGH>,
+                                <ICU_GRP_NSR 92 IRQ_TYPE_LEVEL_HIGH>;
+                        interrupt-names = "mem", "ring0", "ring1",
+                                "ring2", "ring3", "eip";
+                        clock-names = "core", "reg";
+                        clocks = <&CP110_LABEL(x2core_clk)>,
+                                 <&CP110_LABEL(x2core_clk)>;
+                        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) ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
+                interrupts = <ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
+                num-lanes = <1>;
+                clock-names = "core", "reg";
+                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
+                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) ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
+                interrupts = <ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
+
+                num-lanes = <1>;
+                clock-names = "core", "reg";
+                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
+                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) ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
+                interrupts = <ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
+
+                num-lanes = <1>;
+                clock-names = "core", "reg";
+                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
+                status = "disabled";
+        };
+
+        /* 1 GHz fixed main PLL */
+        CP110_LABEL(mainpll): CP110_LABEL(mainpll) {
+                compatible = "fixed-clock";
+                #clock-cells = <0>;
+                clock-frequency = <1000000000>;
+        };
+
+        CP110_LABEL(x2core_clk): CP110_LABEL(x2core_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP110_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <2>;
+        };
+
+        CP110_LABEL(core_clk): CP110_LABEL(core_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP110_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <2>;
+        };
+
+        CP110_LABEL(sdio_clk): CP110_LABEL(sdio_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP110_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <2>;
+                clock-div = <5>;
+        };
+
+        CP110_LABEL(nand_clk): CP110_LABEL(nand_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP110_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <2>;
+                clock-div = <5>;
+        };
+
+        CP110_LABEL(ppv2_clk): CP110_LABEL(ppv2_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP110_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <3>;
+        };
+
+        CP110_LABEL(slow_io_clk): CP110_LABEL(slow_io_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP110_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <4>;
+        };
+};
-- 
2.29.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [edk2-platforms PATCH 1/4] Marvell/Armada7k8k: Remove device tree sources from edk2-platforms
  2021-03-18 19:57 [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Marcin Wojtas
  2021-03-18 19:57 ` [edk2-non-osi PATCH 2/4] Marvell/Armada7k8k: Move device tree sources from edk2-platforms Marcin Wojtas
@ 2021-03-18 19:57 ` Marcin Wojtas
  2021-03-18 19:57 ` [edk2-non-osi PATCH 3/4] Marvell/Armada7k8k: Update device trees Marcin Wojtas
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Marcin Wojtas @ 2021-03-18 19:57 UTC (permalink / raw)
  To: devel; +Cc: leif, ard.biesheuvel, mw, jaz, kostap, upstream, jon

edk2-non-osi project is a more proper place for keeping
the device tree sources, so move it there. It is a preparation
for the DT upgrade for the Armada 7k8k SoC family.

Signed-off-by: Marcin Wojtas <mw@semihalf.com>
---
 Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf       |  22 -
 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf       |  22 -
 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf    |  22 -
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi       |  16 -
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts     | 267 ----------
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi       |  16 -
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi       |  64 ---
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi       |  26 -
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts     | 336 ------------
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts  | 377 -------------
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi       |  25 -
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi       | 108 ----
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi |  31 --
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi |  43 --
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi      | 264 ---------
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi     |  10 -
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi      | 560 --------------------
 17 files changed, 2209 deletions(-)
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
 delete mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi

diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf b/Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf
deleted file mode 100644
index b533578a89..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/Armada70x0Db.inf
+++ /dev/null
@@ -1,22 +0,0 @@
-## @file
-#
-#  Device tree description of the Marvell Armada 7040 DB platform
-#
-#  Copyright (c) 2018, Marvell International Ltd. All rights reserved.
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
-  INF_VERSION    = 0x0001001A
-  BASE_NAME      = Armada70x0DbDeviceTree
-  FILE_GUID      = 25462CDA-221F-47DF-AC1D-259CFAA4E326 # gDtPlatformDefaultDtbFileGuid
-  MODULE_TYPE    = USER_DEFINED
-  VERSION_STRING = 1.0
-
-[Sources]
-  armada-7040-db.dts
-
-[Packages]
-  MdePkg/MdePkg.dec
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf b/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf
deleted file mode 100644
index 378fad240b..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0Db.inf
+++ /dev/null
@@ -1,22 +0,0 @@
-## @file
-#
-#  Device tree description of the Marvell Armada 8040 DB platform
-#
-#  Copyright (c) 2018, Marvell International Ltd. All rights reserved.
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
-  INF_VERSION    = 0x0001001A
-  BASE_NAME      = Armada80x0DbDeviceTree
-  FILE_GUID      = 25462CDA-221F-47DF-AC1D-259CFAA4E326 # gDtPlatformDefaultDtbFileGuid
-  MODULE_TYPE    = USER_DEFINED
-  VERSION_STRING = 1.0
-
-[Sources]
-  armada-8040-db.dts
-
-[Packages]
-  MdePkg/MdePkg.dec
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf b/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf
deleted file mode 100644
index 540e1a79f3..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/Armada80x0McBin.inf
+++ /dev/null
@@ -1,22 +0,0 @@
-## @file
-#
-#  Device tree description of the Marvell Armada 8040 MacchiatoBin platform
-#
-#  Copyright (c) 2018, Marvell International Ltd. All rights reserved.
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
-  INF_VERSION    = 0x0001001A
-  BASE_NAME      = Armada80x0McBinDeviceTree
-  FILE_GUID      = 25462CDA-221F-47DF-AC1D-259CFAA4E326 # gDtPlatformDefaultDtbFileGuid
-  MODULE_TYPE    = USER_DEFINED
-  VERSION_STRING = 1.0
-
-[Sources]
-  armada-8040-mcbin.dts
-
-[Packages]
-  MdePkg/MdePkg.dec
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi
deleted file mode 100644
index e2edc26271..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7020.dtsi
+++ /dev/null
@@ -1,16 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for the Armada 7020 SoC, made of an AP806 Dual and
- * one CP110.
- */
-
-#include "armada-ap806-dual.dtsi"
-#include "armada-70x0.dtsi"
-
-/ {
-        model = "Marvell Armada 7020";
-        compatible = "marvell,armada7020", "marvell,armada-ap806-dual",
-                     "marvell,armada-ap806";
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
deleted file mode 100644
index f5878efc06..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
+++ /dev/null
@@ -1,267 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for Marvell Armada 7040 Development board platform
- */
-
-#include "armada-7040.dtsi"
-
-#define GPIO_ACTIVE_HIGH 0
-#define GPIO_ACTIVE_LOW  1
-
-/ {
-        model = "Marvell Armada 7040 DB board";
-        compatible = "marvell,armada7040-db", "marvell,armada7040",
-                     "marvell,armada-ap806-quad", "marvell,armada-ap806";
-
-        chosen {
-                stdout-path = "serial0:115200n8";
-        };
-
-        memory@0 {
-                device_type = "memory";
-                reg = <0x0 0x0 0x0 0x80000000>;
-        };
-
-        aliases {
-                ethernet0 = &cp0_eth0;
-                ethernet1 = &cp0_eth1;
-                ethernet2 = &cp0_eth2;
-        };
-
-        cp0_reg_usb3_0_vbus: cp0-usb3-0-vbus {
-                compatible = "regulator-fixed";
-                regulator-name = "usb3h0-vbus";
-                regulator-min-microvolt = <5000000>;
-                regulator-max-microvolt = <5000000>;
-                enable-active-high;
-                gpio = <&expander0 0 GPIO_ACTIVE_HIGH>;
-        };
-
-        cp0_reg_usb3_1_vbus: cp0-usb3-1-vbus {
-                compatible = "regulator-fixed";
-                regulator-name = "usb3h1-vbus";
-                regulator-min-microvolt = <5000000>;
-                regulator-max-microvolt = <5000000>;
-                enable-active-high;
-                gpio = <&expander0 1 GPIO_ACTIVE_HIGH>;
-        };
-
-        cp0_usb3_0_phy: cp0-usb3-0-phy {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&cp0_reg_usb3_0_vbus>;
-        };
-
-        cp0_usb3_1_phy: cp0-usb3-1-phy {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&cp0_reg_usb3_1_vbus>;
-        };
-};
-
-&i2c0 {
-        status = "okay";
-        clock-frequency = <100000>;
-};
-
-&spi0 {
-        status = "okay";
-
-        spi-flash@0 {
-                #address-cells = <1>;
-                #size-cells = <1>;
-                compatible = "jedec,spi-nor";
-                reg = <0>;
-                spi-max-frequency = <10000000>;
-
-                partitions {
-                        compatible = "fixed-partitions";
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-
-                        partition@0 {
-                                label = "U-Boot";
-                                reg = <0 0x200000>;
-                        };
-                        partition@400000 {
-                                label = "Filesystem";
-                                reg = <0x200000 0xce0000>;
-                        };
-                };
-        };
-};
-
-&uart0 {
-        status = "okay";
-        pinctrl-0 = <&uart0_pins>;
-        pinctrl-names = "default";
-};
-
-
-&cp0_pcie2 {
-        status = "okay";
-};
-
-&cp0_i2c0 {
-        status = "okay";
-        clock-frequency = <100000>;
-
-        expander0: pca9555@21 {
-                compatible = "nxp,pca9555";
-                pinctrl-names = "default";
-                gpio-controller;
-                #gpio-cells = <2>;
-                reg = <0x21>;
-                /*
-                 * IO0_0: USB3_PWR_EN0        IO1_0: USB_3_1_Dev_Detect
-                 * IO0_1: USB3_PWR_EN1        IO1_1: USB2_1_current_limit
-                 * IO0_2: DDR3_4_Detect        IO1_2: Hcon_IO_RstN
-                 * IO0_3: USB2_DEVICE_DETECT
-                 * IO0_4: GPIO_0        IO1_4: SD_Status
-                 * IO0_5: GPIO_1        IO1_5: LDO_5V_Enable
-                 * IO0_6: IHB_5V_Enable        IO1_6: PWR_EN_eMMC
-                 * IO0_7:                IO1_7: SDIO_Vcntrl
-                 */
-        };
-};
-
-&cp0_nand_controller {
-        /*
-         * SPI on CPM and NAND have common pins on this board. We can
-         * use only one at a time. To enable the NAND (which will
-         * disable the SPI), the "status = "okay";" line have to be
-         * added here.
-         */
-        pinctrl-0 = <&nand_pins>, <&nand_rb>;
-        pinctrl-names = "default";
-
-        nand@0 {
-                reg = <0>;
-                label = "pxa3xx_nand-0";
-                nand-rb = <0>;
-                nand-on-flash-bbt;
-                nand-ecc-strength = <4>;
-                nand-ecc-step-size = <512>;
-
-                partitions {
-                        compatible = "fixed-partitions";
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-
-                        partition@0 {
-                                label = "U-Boot";
-                                reg = <0 0x200000>;
-                        };
-
-                        partition@200000 {
-                                label = "Linux";
-                                reg = <0x200000 0xe00000>;
-                        };
-
-                        partition@1000000 {
-                                label = "Filesystem";
-                                reg = <0x1000000 0x3f000000>;
-                        };
-
-                };
-        };
-};
-
-&cp0_spi1 {
-        status = "disabled";
-
-        spi-flash@0 {
-                #address-cells = <0x1>;
-                #size-cells = <0x1>;
-                compatible = "jedec,spi-nor";
-                reg = <0x0>;
-                spi-max-frequency = <20000000>;
-
-                partitions {
-                        compatible = "fixed-partitions";
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-
-                        partition@0 {
-                                label = "U-Boot";
-                                reg = <0x0 0x200000>;
-                        };
-
-                        partition@400000 {
-                                label = "Filesystem";
-                                reg = <0x200000 0xe00000>;
-                        };
-                };
-        };
-};
-
-&cp0_sata0 {
-        status = "okay";
-};
-
-&cp0_usb3_0 {
-        usb-phy = <&cp0_usb3_0_phy>;
-        status = "okay";
-};
-
-&cp0_usb3_1 {
-        usb-phy = <&cp0_usb3_1_phy>;
-        status = "okay";
-};
-
-&ap_sdhci0 {
-        status = "okay";
-        bus-width = <4>;
-        no-1-8-v;
-        non-removable;
-};
-
-&cp0_sdhci0 {
-        status = "okay";
-        bus-width = <4>;
-        no-1-8-v;
-        cd-gpios = <&expander0 12 GPIO_ACTIVE_LOW>;
-};
-
-&cp0_mdio {
-        status = "okay";
-
-        phy0: ethernet-phy@0 {
-                reg = <0>;
-        };
-        phy1: ethernet-phy@1 {
-                reg = <1>;
-        };
-};
-
-&cp0_ethernet {
-        status = "okay";
-};
-
-&cp0_eth0 {
-        status = "okay";
-        /* Network PHY */
-        phy-mode = "10gbase-kr";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp0_comphy2 0>;
-
-        fixed-link {
-                speed = <10000>;
-                full-duplex;
-        };
-};
-
-&cp0_eth1 {
-        status = "okay";
-        /* Network PHY */
-        phy = <&phy0>;
-        phy-mode = "sgmii";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp0_comphy0 1>;
-};
-
-&cp0_eth2 {
-        status = "okay";
-        phy = <&phy1>;
-        phy-mode = "rgmii-id";
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
deleted file mode 100644
index 03109b2bb7..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
+++ /dev/null
@@ -1,16 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for the Armada 7040 SoC, made of an AP806 Quad and
- * one CP110.
- */
-
-#include "armada-ap806-quad.dtsi"
-#include "armada-70x0.dtsi"
-
-/ {
-        model = "Marvell Armada 7040";
-        compatible = "marvell,armada7040", "marvell,armada-ap806-quad",
-                     "marvell,armada-ap806";
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
deleted file mode 100644
index 78f9d874c6..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
+++ /dev/null
@@ -1,64 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2017 Marvell Technology Group Ltd.
- *
- * Device Tree file for the Armada 70x0 SoC
- */
-
-/ {
-        aliases {
-                gpio1 = &cp0_gpio1;
-                gpio2 = &cp0_gpio2;
-                spi1 = &cp0_spi0;
-                spi2 = &cp0_spi1;
-        };
-};
-
-/*
- * 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
-
-#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
-
-&cp0_gpio1 {
-        status = "okay";
-};
-
-&cp0_gpio2 {
-        status = "okay";
-};
-
-&cp0_syscon0 {
-        cp0_pinctrl: pinctrl {
-                compatible = "marvell,armada-7k-pinctrl";
-
-                nand_pins: nand-pins {
-                        marvell,pins =
-                        "mpp15", "mpp16", "mpp17", "mpp18",
-                        "mpp19", "mpp20", "mpp21", "mpp22",
-                        "mpp23", "mpp24", "mpp25", "mpp26",
-                        "mpp27";
-                        marvell,function = "dev";
-                };
-
-                nand_rb: nand-rb {
-                        marvell,pins = "mpp13";
-                        marvell,function = "nf";
-                };
-        };
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi
deleted file mode 100644
index 5d763450c5..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8020.dtsi
+++ /dev/null
@@ -1,26 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for the Armada 8020 SoC, made of an AP806 Dual and
- * two CP110.
- */
-
-#include "armada-ap806-dual.dtsi"
-#include "armada-80x0.dtsi"
-
-/ {
-        model = "Marvell Armada 8020";
-        compatible = "marvell,armada8020", "marvell,armada-ap806-dual",
-                     "marvell,armada-ap806";
-};
-
-/* The RTC requires external oscillator. But on Aramda 80x0, the RTC clock
- * in CP master is not connected (by package) to the oscillator. So
- * disable it. However, the RTC clock in CP slave is connected to the
- * oscillator so this one is let enabled.
- */
-
-&cp0_rtc {
-        status = "disabled";
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
deleted file mode 100644
index e81392241c..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
+++ /dev/null
@@ -1,336 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for Marvell Armada 8040 Development board platform
- */
-
-#include "armada-8040.dtsi"
-
-#define GPIO_ACTIVE_HIGH 0
-#define GPIO_ACTIVE_LOW  1
-
-/ {
-        model = "Marvell Armada 8040 DB board";
-        compatible = "marvell,armada8040-db", "marvell,armada8040",
-                     "marvell,armada-ap806-quad", "marvell,armada-ap806";
-
-        chosen {
-                stdout-path = "serial0:115200n8";
-        };
-
-        memory@0 {
-                device_type = "memory";
-                reg = <0x0 0x0 0x0 0x80000000>;
-        };
-
-        aliases {
-                ethernet0 = &cp0_eth0;
-                ethernet1 = &cp0_eth2;
-                ethernet2 = &cp1_eth0;
-                ethernet3 = &cp1_eth1;
-        };
-
-        cp0_reg_usb3_0_vbus: cp0-usb3-0-vbus {
-                compatible = "regulator-fixed";
-                regulator-name = "cp0-usb3h0-vbus";
-                regulator-min-microvolt = <5000000>;
-                regulator-max-microvolt = <5000000>;
-                enable-active-high;
-                gpio = <&expander0 0 GPIO_ACTIVE_HIGH>;
-        };
-
-        cp0_reg_usb3_1_vbus: cp0-usb3-1-vbus {
-                compatible = "regulator-fixed";
-                regulator-name = "cp0-usb3h1-vbus";
-                regulator-min-microvolt = <5000000>;
-                regulator-max-microvolt = <5000000>;
-                enable-active-high;
-                gpio = <&expander0 1 GPIO_ACTIVE_HIGH>;
-        };
-
-        cp0_usb3_0_phy: cp0-usb3-0-phy {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&cp0_reg_usb3_0_vbus>;
-        };
-
-        cp0_usb3_1_phy: cp0-usb3-1-phy {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&cp0_reg_usb3_1_vbus>;
-        };
-
-        cp1_reg_usb3_0_vbus: cp1-usb3-0-vbus {
-                compatible = "regulator-fixed";
-                regulator-name = "cp1-usb3h0-vbus";
-                regulator-min-microvolt = <5000000>;
-                regulator-max-microvolt = <5000000>;
-                enable-active-high;
-                gpio = <&expander1 0 GPIO_ACTIVE_HIGH>;
-        };
-
-        cp1_usb3_0_phy: cp1-usb3-0-phy {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&cp1_reg_usb3_0_vbus>;
-        };
-};
-
-&i2c0 {
-        status = "okay";
-        clock-frequency = <100000>;
-};
-
-&spi0 {
-        status = "okay";
-
-        spi-flash@0 {
-                #address-cells = <1>;
-                #size-cells = <1>;
-                compatible = "jedec,spi-nor";
-                reg = <0>;
-                spi-max-frequency = <10000000>;
-
-                partitions {
-                        compatible = "fixed-partitions";
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-
-                        partition@0 {
-                                label = "U-Boot";
-                                reg = <0 0x200000>;
-                        };
-                        partition@400000 {
-                                label = "Filesystem";
-                                reg = <0x200000 0xce0000>;
-                        };
-                };
-        };
-};
-
-/* Accessible over the mini-USB CON9 connector on the main board */
-&uart0 {
-        status = "okay";
-        pinctrl-0 = <&uart0_pins>;
-        pinctrl-names = "default";
-};
-
-/* CON6 on CP0 expansion */
-&cp0_pcie0 {
-        status = "okay";
-};
-
-/* CON5 on CP0 expansion */
-&cp0_pcie2 {
-        status = "okay";
-};
-
-&cp0_i2c0 {
-        status = "okay";
-        clock-frequency = <100000>;
-
-        /* U31 */
-        expander0: pca9555@21 {
-                compatible = "nxp,pca9555";
-                pinctrl-names = "default";
-                gpio-controller;
-                #gpio-cells = <2>;
-                reg = <0x21>;
-        };
-
-        /* U25 */
-        expander1: pca9555@25 {
-                compatible = "nxp,pca9555";
-                pinctrl-names = "default";
-                gpio-controller;
-                #gpio-cells = <2>;
-                reg = <0x25>;
-        };
-
-};
-
-/* CON4 on CP0 expansion */
-&cp0_sata0 {
-        status = "okay";
-};
-
-/* CON9 on CP0 expansion */
-&cp0_usb3_0 {
-        usb-phy = <&cp0_usb3_0_phy>;
-        status = "okay";
-};
-
-/* CON10 on CP0 expansion */
-&cp0_usb3_1 {
-        usb-phy = <&cp0_usb3_1_phy>;
-        status = "okay";
-};
-
-&cp0_mdio {
-        status = "okay";
-
-        phy1: ethernet-phy@1 {
-                reg = <1>;
-        };
-};
-
-&cp0_ethernet {
-        status = "okay";
-};
-
-&cp0_eth0 {
-        status = "okay";
-        phy-mode = "10gbase-kr";
-
-        fixed-link {
-                speed = <10000>;
-                full-duplex;
-        };
-};
-
-&cp0_eth2 {
-        status = "okay";
-        phy = <&phy1>;
-        phy-mode = "rgmii-id";
-};
-
-/* CON6 on CP1 expansion */
-&cp1_pcie0 {
-        status = "okay";
-};
-
-/* CON7 on CP1 expansion */
-&cp1_pcie1 {
-        status = "okay";
-};
-
-/* CON5 on CP1 expansion */
-&cp1_pcie2 {
-        status = "okay";
-};
-
-&cp1_i2c0 {
-        status = "okay";
-        clock-frequency = <100000>;
-};
-
-&cp1_spi1 {
-        status = "disabled";
-
-        spi-flash@0 {
-                #address-cells = <0x1>;
-                #size-cells = <0x1>;
-                compatible = "jedec,spi-nor";
-                reg = <0x0>;
-                spi-max-frequency = <20000000>;
-
-                partitions {
-                        compatible = "fixed-partitions";
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-
-                        partition@0 {
-                                label = "Boot";
-                                reg = <0x0 0x200000>;
-                        };
-                        partition@200000 {
-                                label = "Filesystem";
-                                reg = <0x200000 0xd00000>;
-                        };
-                        partition@f00000 {
-                                label = "Boot_2nd";
-                                reg = <0xf00000 0x100000>;
-                        };
-                };
-        };
-};
-
-/*
- * Proper NAND usage will require DPR-76 to be in position 1-2, which disables
- * MDIO signal of CP1.
- */
-&cp1_nand_controller {
-        pinctrl-0 = <&nand_pins>, <&nand_rb>;
-        pinctrl-names = "default";
-
-        nand@0 {
-                reg = <0>;
-                nand-rb = <0>;
-                nand-on-flash-bbt;
-                nand-ecc-strength = <4>;
-                nand-ecc-step-size = <512>;
-
-                partitions {
-                        compatible = "fixed-partitions";
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-
-                        partition@0 {
-                                label = "U-Boot";
-                                reg = <0 0x200000>;
-                        };
-                        partition@200000 {
-                                label = "Linux";
-                                reg = <0x200000 0xe00000>;
-                        };
-                        partition@1000000 {
-                                label = "Filesystem";
-                                reg = <0x1000000 0x3f000000>;
-                        };
-                };
-        };
-};
-
-/* CON4 on CP1 expansion */
-&cp1_sata0 {
-        status = "okay";
-};
-
-/* CON9 on CP1 expansion */
-&cp1_usb3_0 {
-        usb-phy = <&cp1_usb3_0_phy>;
-        status = "okay";
-};
-
-/* CON10 on CP1 expansion */
-&cp1_usb3_1 {
-        status = "okay";
-};
-
-&cp1_mdio {
-        status = "okay";
-
-        phy0: ethernet-phy@0 {
-                reg = <0>;
-        };
-};
-
-&cp1_ethernet {
-        status = "okay";
-};
-
-&cp1_eth0 {
-        status = "okay";
-        phy-mode = "10gbase-kr";
-
-        fixed-link {
-                speed = <10000>;
-                full-duplex;
-        };
-};
-
-&cp1_eth1 {
-        status = "okay";
-        phy = <&phy0>;
-        phy-mode = "rgmii-id";
-};
-
-&ap_sdhci0 {
-        status = "okay";
-        bus-width = <4>;
-        non-removable;
-};
-
-&cp0_sdhci0 {
-        status = "okay";
-        bus-width = <8>;
-        non-removable;
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
deleted file mode 100644
index d9c9348b53..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
+++ /dev/null
@@ -1,377 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for MACCHIATOBin Armada 8040 community board platform
- */
-
-#include "armada-8040.dtsi"
-
-#define GPIO_ACTIVE_HIGH 0
-#define GPIO_ACTIVE_LOW  1
-
-/ {
-        model = "Marvell 8040 MACCHIATOBin";
-        compatible = "marvell,armada8040-mcbin", "marvell,armada8040",
-                        "marvell,armada-ap806-quad", "marvell,armada-ap806";
-
-        chosen {
-                stdout-path = "serial0:115200n8";
-        };
-
-        memory@0 {
-                device_type = "memory";
-                reg = <0x0 0x0 0x0 0x80000000>;
-        };
-
-        aliases {
-                ethernet0 = &cp0_eth0;
-                ethernet1 = &cp1_eth0;
-                ethernet2 = &cp1_eth1;
-                ethernet3 = &cp1_eth2;
-        };
-
-        /* Regulator labels correspond with schematics */
-        v_3_3: regulator-3-3v {
-                compatible = "regulator-fixed";
-                regulator-name = "v_3_3";
-                regulator-min-microvolt = <3300000>;
-                regulator-max-microvolt = <3300000>;
-                regulator-always-on;
-                status = "okay";
-        };
-
-        v_vddo_h: regulator-1-8v {
-                compatible = "regulator-fixed";
-                regulator-name = "v_vddo_h";
-                regulator-min-microvolt = <1800000>;
-                regulator-max-microvolt = <1800000>;
-                regulator-always-on;
-                status = "okay";
-        };
-
-        v_5v0_usb3_hst_vbus: regulator-usb3-vbus0 {
-                compatible = "regulator-fixed";
-                enable-active-high;
-                gpio = <&cp0_gpio2 15 GPIO_ACTIVE_HIGH>;
-                pinctrl-names = "default";
-                pinctrl-0 = <&cp0_xhci_vbus_pins>;
-                regulator-name = "v_5v0_usb3_hst_vbus";
-                regulator-min-microvolt = <5000000>;
-                regulator-max-microvolt = <5000000>;
-                status = "okay";
-        };
-
-        usb3h0_phy: usb3_phy0 {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&v_5v0_usb3_hst_vbus>;
-        };
-
-        sfp_eth0: sfp-eth0 {
-                /* CON15,16 - CPM lane 4 */
-                compatible = "sff,sfp";
-                i2c-bus = <&sfpp0_i2c>;
-                los-gpio = <&cp1_gpio1 28 GPIO_ACTIVE_HIGH>;
-                mod-def0-gpio = <&cp1_gpio1 27 GPIO_ACTIVE_LOW>;
-                tx-disable-gpio = <&cp1_gpio1 29 GPIO_ACTIVE_HIGH>;
-                tx-fault-gpio  = <&cp1_gpio1 26 GPIO_ACTIVE_HIGH>;
-                pinctrl-names = "default";
-                pinctrl-0 = <&cp1_sfpp0_pins>;
-        };
-
-        sfp_eth1: sfp-eth1 {
-                /* CON17,18 - CPS lane 4 */
-                compatible = "sff,sfp";
-                i2c-bus = <&sfpp1_i2c>;
-                los-gpio = <&cp1_gpio1 8 GPIO_ACTIVE_HIGH>;
-                mod-def0-gpio = <&cp1_gpio1 11 GPIO_ACTIVE_LOW>;
-                tx-disable-gpio = <&cp1_gpio1 10 GPIO_ACTIVE_HIGH>;
-                tx-fault-gpio = <&cp0_gpio2 30 GPIO_ACTIVE_HIGH>;
-                pinctrl-names = "default";
-                pinctrl-0 = <&cp1_sfpp1_pins &cp0_sfpp1_pins>;
-        };
-
-        sfp_eth3: sfp-eth3 {
-                /* CON3,4 - CPS lane 5 */
-                compatible = "sff,sfp";
-                i2c-bus = <&sfp_1g_i2c>;
-                los-gpio = <&cp0_gpio2 22 GPIO_ACTIVE_HIGH>;
-                mod-def0-gpio = <&cp0_gpio2 21 GPIO_ACTIVE_LOW>;
-                tx-disable-gpio = <&cp1_gpio1 24 GPIO_ACTIVE_HIGH>;
-                tx-fault-gpio = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>;
-                pinctrl-names = "default";
-                pinctrl-0 = <&cp0_sfp_1g_pins &cp1_sfp_1g_pins>;
-        };
-};
-
-&uart0 {
-        status = "okay";
-        pinctrl-0 = <&uart0_pins>;
-        pinctrl-names = "default";
-};
-
-&ap_sdhci0 {
-        bus-width = <8>;
-        /*
-         * Not stable in HS modes - phy needs "more calibration", so add
-         * the "slow-mode" and disable SDR104, SDR50 and DDR50 modes.
-         */
-        marvell,xenon-phy-slow-mode;
-        no-1-8-v;
-        no-sd;
-        no-sdio;
-        non-removable;
-        status = "okay";
-        vqmmc-supply = <&v_vddo_h>;
-};
-
-&cp0_i2c0 {
-        clock-frequency = <100000>;
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_i2c0_pins>;
-        status = "okay";
-};
-
-&cp0_i2c1 {
-        clock-frequency = <100000>;
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_i2c1_pins>;
-        status = "okay";
-
-        i2c-switch@70 {
-                compatible = "nxp,pca9548";
-                #address-cells = <1>;
-                #size-cells = <0>;
-                reg = <0x70>;
-
-                sfpp0_i2c: i2c@0 {
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        reg = <0>;
-                };
-                sfpp1_i2c: i2c@1 {
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        reg = <1>;
-                };
-                sfp_1g_i2c: i2c@2 {
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        reg = <2>;
-                };
-        };
-};
-
-/* J25 UART header */
-&cp0_uart1 {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_uart1_pins>;
-        status = "okay";
-};
-
-&cp0_mdio {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_ge_mdio_pins>;
-        status = "okay";
-
-        ge_phy: ethernet-phy@0 {
-                reg = <0>;
-        };
-};
-
-&cp0_pcie0 {
-        compatible = "marvell,armada8k-pcie-ecam", "snps,dw-pcie-ecam";
-        reg = <0 0xe0000000 0 0xff00000>;
-        bus-range = <0 0xfe>;
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_pcie_pins>;
-        num-lanes = <4>;
-        num-viewport = <8>;
-        reset-gpio = <&cp0_gpio1 20 GPIO_ACTIVE_LOW>;
-        ranges = <0x1000000 0x0 0x00000000 0x0 0xeff00000 0x0 0x00010000>,
-                 <0x2000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x20000000>,
-                 <0x3000000 0x8 0x00000000 0x8 0x00000000 0x1 0x00000000>;
-        status = "okay";
-};
-
-&cp0_pinctrl {
-        cp0_ge_mdio_pins: ge-mdio-pins {
-                marvell,pins = "mpp32", "mpp34";
-                marvell,function = "ge";
-        };
-        cp0_i2c1_pins: i2c1-pins {
-                marvell,pins = "mpp35", "mpp36";
-                marvell,function = "i2c1";
-        };
-        cp0_i2c0_pins: i2c0-pins {
-                marvell,pins = "mpp37", "mpp38";
-                marvell,function = "i2c0";
-        };
-        cp0_uart1_pins: uart1-pins {
-                marvell,pins = "mpp40", "mpp41";
-                marvell,function = "uart1";
-        };
-        cp0_xhci_vbus_pins: xhci0-vbus-pins {
-                marvell,pins = "mpp47";
-                marvell,function = "gpio";
-        };
-        cp0_sfp_1g_pins: sfp-1g-pins {
-                marvell,pins = "mpp51", "mpp53", "mpp54";
-                marvell,function = "gpio";
-        };
-        cp0_pcie_pins: pcie-pins {
-                marvell,pins = "mpp52";
-                marvell,function = "gpio";
-        };
-        cp0_sdhci_pins: sdhci-pins {
-                marvell,pins = "mpp55", "mpp56", "mpp57", "mpp58", "mpp59",
-                               "mpp60", "mpp61";
-                marvell,function = "sdio";
-        };
-        cp0_sfpp1_pins: sfpp1-pins {
-                marvell,pins = "mpp62";
-                marvell,function = "gpio";
-        };
-};
-
-&cp0_xmdio {
-        status = "okay";
-
-        phy0: ethernet-phy@0 {
-                compatible = "ethernet-phy-ieee802.3-c45";
-                reg = <0>;
-                sfp = <&sfp_eth0>;
-        };
-
-        phy8: ethernet-phy@8 {
-                compatible = "ethernet-phy-ieee802.3-c45";
-                reg = <8>;
-                sfp = <&sfp_eth1>;
-        };
-};
-
-&cp0_ethernet {
-        status = "okay";
-};
-
-&cp0_eth0 {
-        status = "okay";
-        /* Network PHY */
-        phy = <&phy0>;
-        phy-mode = "10gbase-kr";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp0_comphy4 0>;
-};
-
-&cp0_sata0 {
-        /* CPM Lane 0 - U29 */
-        status = "okay";
-};
-
-&cp0_sdhci0 {
-        /* U6 */
-        broken-cd;
-        bus-width = <4>;
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_sdhci_pins>;
-        status = "okay";
-        vqmmc-supply = <&v_3_3>;
-};
-
-&cp0_usb3_0 {
-        /* J38? - USB2.0 only */
-        status = "okay";
-};
-
-&cp0_usb3_1 {
-        /* J38? - USB2.0 only */
-        status = "okay";
-};
-
-&cp1_ethernet {
-        status = "okay";
-};
-
-&cp1_eth0 {
-        status = "okay";
-        /* Network PHY */
-        phy = <&phy8>;
-        phy-mode = "10gbase-kr";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp1_comphy4 0>;
-};
-
-&cp1_eth1 {
-        /* CPS Lane 0 - J5 (Gigabit RJ45) */
-        status = "okay";
-        /* Network PHY */
-        phy = <&ge_phy>;
-        phy-mode = "sgmii";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp1_comphy0 1>;
-};
-
-&cp1_eth2 {
-        /* CPS Lane 5 */
-        status = "okay";
-        /* Network PHY */
-        phy-mode = "2500base-x";
-        managed = "in-band-status";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp1_comphy5 2>;
-        sfp = <&sfp_eth3>;
-};
-
-&cp1_pinctrl {
-        cp1_sfpp1_pins: sfpp1-pins {
-                marvell,pins = "mpp8", "mpp10", "mpp11";
-                marvell,function = "gpio";
-        };
-        cp1_spi1_pins: spi1-pins {
-                marvell,pins = "mpp12", "mpp13", "mpp14", "mpp15", "mpp16";
-                marvell,function = "spi1";
-        };
-        cp1_uart0_pins: uart0-pins {
-                marvell,pins = "mpp6", "mpp7";
-                marvell,function = "uart0";
-        };
-        cp1_sfp_1g_pins: sfp-1g-pins {
-                marvell,pins = "mpp24";
-                marvell,function = "gpio";
-        };
-        cp1_sfpp0_pins: sfpp0-pins {
-                marvell,pins = "mpp26", "mpp27", "mpp28", "mpp29";
-                marvell,function = "gpio";
-        };
-};
-
-/* J27 UART header */
-&cp1_uart0 {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp1_uart0_pins>;
-        status = "okay";
-};
-
-&cp1_sata0 {
-        /* CPS Lane 1 - U32 */
-        /* CPS Lane 3 - U31 */
-        status = "okay";
-};
-
-&cp1_spi1 {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp1_spi1_pins>;
-        status = "disabled";
-
-        spi-flash@0 {
-                compatible = "st,w25q32";
-                spi-max-frequency = <50000000>;
-                reg = <0>;
-        };
-};
-
-&cp1_usb3_0 {
-        /* CPS Lane 2 - CON7 */
-        usb-phy = <&usb3h0_phy>;
-        status = "okay";
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
deleted file mode 100644
index 784ef3f311..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
+++ /dev/null
@@ -1,25 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for the Armada 8040 SoC, made of an AP806 Quad and
- * two CP110.
- */
-
-#include "armada-ap806-quad.dtsi"
-#include "armada-80x0.dtsi"
-
-/ {
-        model = "Marvell Armada 8040";
-        compatible = "marvell,armada8040", "marvell,armada-ap806-quad",
-                     "marvell,armada-ap806";
-};
-
-/* The RTC requires external oscillator. But on Aramda 80x0, the RTC clock
- * in CP master is not connected (by package) to the oscillator. So
- * disable it. However, the RTC clock in CP slave is connected to the
- * oscillator so this one is let enabled.
- */
-&cp0_rtc {
-        status = "disabled";
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
deleted file mode 100644
index 81967e20d3..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
+++ /dev/null
@@ -1,108 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2017 Marvell Technology Group Ltd.
- *
- * Device Tree file for the Armada 80x0 SoC family
- */
-
-/ {
-        aliases {
-                gpio1 = &cp1_gpio1;
-                gpio2 = &cp0_gpio2;
-                spi1 = &cp0_spi0;
-                spi2 = &cp0_spi1;
-                spi3 = &cp1_spi0;
-                spi4 = &cp1_spi1;
-        };
-};
-
-/*
- * 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
-
-#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
-
-/*
- * 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
-
-#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
-
-/* The 80x0 has two CP blocks, but uses only one block from each. */
-&cp1_gpio1 {
-        status = "okay";
-};
-
-&cp0_gpio2 {
-        status = "okay";
-};
-
-&cp0_syscon0 {
-        cp0_pinctrl: pinctrl {
-                compatible = "marvell,armada-8k-cpm-pinctrl";
-        };
-};
-
-&cp1_syscon0 {
-        cp1_pinctrl: pinctrl {
-                compatible = "marvell,armada-8k-cps-pinctrl";
-
-                nand_pins: nand-pins {
-                        marvell,pins =
-                        "mpp0", "mpp1", "mpp2", "mpp3",
-                        "mpp4", "mpp5", "mpp6", "mpp7",
-                        "mpp8", "mpp9", "mpp10", "mpp11",
-                        "mpp15", "mpp16", "mpp17", "mpp18",
-                        "mpp19", "mpp20", "mpp21", "mpp22",
-                        "mpp23", "mpp24", "mpp25", "mpp26",
-                        "mpp27";
-                        marvell,function = "dev";
-                };
-
-                nand_rb: nand-rb {
-                        marvell,pins = "mpp13", "mpp12";
-                        marvell,function = "nf";
-                };
-        };
-};
-
-&cp1_crypto {
-        /*
-         * The cryptographic engine found on the cp110
-         * master is enabled by default at the SoC
-         * level. Because it is not possible as of now
-         * to enable two cryptographic engines in
-         * parallel, disable this one by default.
-         */
-        status = "disabled";
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
deleted file mode 100644
index 5985843fcc..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
+++ /dev/null
@@ -1,31 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for Marvell Armada AP806.
- */
-
-#include "armada-ap806.dtsi"
-
-/ {
-        model = "Marvell Armada AP806 Dual";
-        compatible = "marvell,armada-ap806-dual", "marvell,armada-ap806";
-
-        cpus {
-                #address-cells = <1>;
-                #size-cells = <0>;
-
-                cpu@0 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x000>;
-                        enable-method = "psci";
-                };
-                cpu@1 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x001>;
-                        enable-method = "psci";
-                };
-        };
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
deleted file mode 100644
index bae0ed9ca7..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
+++ /dev/null
@@ -1,43 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for Marvell Armada AP806.
- */
-
-#include "armada-ap806.dtsi"
-
-/ {
-        model = "Marvell Armada AP806 Quad";
-        compatible = "marvell,armada-ap806-quad", "marvell,armada-ap806";
-
-        cpus {
-                #address-cells = <1>;
-                #size-cells = <0>;
-
-                cpu@0 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x000>;
-                        enable-method = "psci";
-                };
-                cpu@1 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x001>;
-                        enable-method = "psci";
-                };
-                cpu@100 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x100>;
-                        enable-method = "psci";
-                };
-                cpu@101 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x101>;
-                        enable-method = "psci";
-                };
-        };
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
deleted file mode 100644
index 66124bf483..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
+++ /dev/null
@@ -1,264 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for Marvell Armada AP806.
- */
-
-#define IRQ_TYPE_LEVEL_HIGH      (1 << 2)
-#define IRQ_TYPE_LEVEL_LOW       (1 << 3)
-
-#define GIC_SPI                  0
-#define GIC_PPI                  1
-
-#define GIC_CPU_MASK_RAW(x)      ((x) << 8)
-#define GIC_CPU_MASK_SIMPLE(num) GIC_CPU_MASK_RAW((1 << (num)) - 1)
-
-/dts-v1/;
-
-/ {
-        model = "Marvell Armada AP806";
-        compatible = "marvell,armada-ap806";
-        #address-cells = <2>;
-        #size-cells = <2>;
-
-        aliases {
-                serial0 = &uart0;
-                serial1 = &uart1;
-                gpio0 = &ap_gpio;
-                spi0 = &spi0;
-        };
-
-        psci {
-                compatible = "arm,psci-0.2";
-                method = "smc";
-        };
-
-        ap806 {
-                #address-cells = <2>;
-                #size-cells = <2>;
-                compatible = "simple-bus";
-                interrupt-parent = <&gic>;
-                ranges;
-
-                config-space@f0000000 {
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-                        compatible = "simple-bus";
-                        ranges = <0x0 0x0 0xf0000000 0x1000000>;
-
-                        gic: interrupt-controller@210000 {
-                                compatible = "arm,gic-400";
-                                #interrupt-cells = <3>;
-                                #address-cells = <1>;
-                                #size-cells = <1>;
-                                ranges;
-                                interrupt-controller;
-                                interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
-                                reg = <0x210000 0x10000>,
-                                      <0x220000 0x20000>,
-                                      <0x240000 0x20000>,
-                                      <0x260000 0x20000>;
-
-                                gic_v2m0: v2m@280000 {
-                                        compatible = "arm,gic-v2m-frame";
-                                        msi-controller;
-                                        reg = <0x280000 0x1000>;
-                                        arm,msi-base-spi = <160>;
-                                        arm,msi-num-spis = <32>;
-                                };
-                                gic_v2m1: v2m@290000 {
-                                        compatible = "arm,gic-v2m-frame";
-                                        msi-controller;
-                                        reg = <0x290000 0x1000>;
-                                        arm,msi-base-spi = <192>;
-                                        arm,msi-num-spis = <32>;
-                                };
-                                gic_v2m2: v2m@2a0000 {
-                                        compatible = "arm,gic-v2m-frame";
-                                        msi-controller;
-                                        reg = <0x2a0000 0x1000>;
-                                        arm,msi-base-spi = <224>;
-                                        arm,msi-num-spis = <32>;
-                                };
-                                gic_v2m3: v2m@2b0000 {
-                                        compatible = "arm,gic-v2m-frame";
-                                        msi-controller;
-                                        reg = <0x2b0000 0x1000>;
-                                        arm,msi-base-spi = <256>;
-                                        arm,msi-num-spis = <32>;
-                                };
-                        };
-
-                        timer {
-                                compatible = "arm,armv8-timer";
-                                interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                                             <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                                             <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                                             <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
-                        };
-
-                        pmu {
-                                compatible = "arm,cortex-a72-pmu";
-                                interrupt-parent = <&pic>;
-                                interrupts = <17>;
-                        };
-
-                        odmi: odmi@300000 {
-                                compatible = "marvell,odmi-controller";
-                                interrupt-controller;
-                                msi-controller;
-                                marvell,odmi-frames = <4>;
-                                reg = <0x300000 0x4000>,
-                                      <0x304000 0x4000>,
-                                      <0x308000 0x4000>,
-                                      <0x30C000 0x4000>;
-                                marvell,spi-base = <128>, <136>, <144>, <152>;
-                        };
-
-                        gicp: gicp@3f0040 {
-                                compatible = "marvell,ap806-gicp";
-                                reg = <0x3f0040 0x10>;
-                                marvell,spi-ranges = <64 64>, <288 64>;
-                                msi-controller;
-                        };
-
-                        pic: interrupt-controller@3f0100 {
-                                compatible = "marvell,armada-8k-pic";
-                                reg = <0x3f0100 0x10>;
-                                #interrupt-cells = <1>;
-                                interrupt-controller;
-                                interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
-                        };
-
-                        xor@400000 {
-                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                                reg = <0x400000 0x1000>,
-                                      <0x410000 0x1000>;
-                                msi-parent = <&gic_v2m0>;
-                                clocks = <&ap_clk 3>;
-                                dma-coherent;
-                        };
-
-                        xor@420000 {
-                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                                reg = <0x420000 0x1000>,
-                                      <0x430000 0x1000>;
-                                msi-parent = <&gic_v2m0>;
-                                clocks = <&ap_clk 3>;
-                                dma-coherent;
-                        };
-
-                        xor@440000 {
-                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                                reg = <0x440000 0x1000>,
-                                      <0x450000 0x1000>;
-                                msi-parent = <&gic_v2m0>;
-                                clocks = <&ap_clk 3>;
-                                dma-coherent;
-                        };
-
-                        xor@460000 {
-                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                                reg = <0x460000 0x1000>,
-                                      <0x470000 0x1000>;
-                                msi-parent = <&gic_v2m0>;
-                                clocks = <&ap_clk 3>;
-                                dma-coherent;
-                        };
-
-                        spi0: spi@510600 {
-                                compatible = "marvell,armada-380-spi";
-                                reg = <0x510600 0x50>;
-                                #address-cells = <1>;
-                                #size-cells = <0>;
-                                interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
-                                clocks = <&ap_clk 3>;
-                                status = "disabled";
-                        };
-
-                        i2c0: i2c@511000 {
-                                compatible = "marvell,mv78230-i2c";
-                                reg = <0x511000 0x20>;
-                                #address-cells = <1>;
-                                #size-cells = <0>;
-                                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
-                                timeout-ms = <1000>;
-                                clocks = <&ap_clk 3>;
-                                status = "disabled";
-                        };
-
-                        uart0: serial@512000 {
-                                compatible = "snps,dw-apb-uart";
-                                reg = <0x512000 0x100>;
-                                reg-shift = <2>;
-                                interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
-                                reg-io-width = <1>;
-                                clocks = <&ap_clk 3>;
-                                status = "disabled";
-                        };
-
-                        uart1: serial@512100 {
-                                compatible = "snps,dw-apb-uart";
-                                reg = <0x512100 0x100>;
-                                reg-shift = <2>;
-                                interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
-                                reg-io-width = <1>;
-                                clocks = <&ap_clk 3>;
-                                status = "disabled";
-
-                        };
-
-                        watchdog: watchdog@610000 {
-                                compatible = "arm,sbsa-gwdt";
-                                reg = <0x610000 0x1000>, <0x600000 0x1000>;
-                                interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
-                        };
-
-                        ap_sdhci0: sdhci@6e0000 {
-                                compatible = "marvell,armada-ap806-sdhci";
-                                reg = <0x6e0000 0x300>;
-                                interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
-                                clock-names = "core";
-                                clocks = <&ap_clk 4>;
-                                dma-coherent;
-                                marvell,xenon-phy-slow-mode;
-                                status = "disabled";
-                        };
-
-                        ap_syscon: system-controller@6f4000 {
-                                compatible = "syscon", "simple-mfd";
-                                reg = <0x6f4000 0x2000>;
-
-                                ap_clk: clock {
-                                        compatible = "marvell,ap806-clock";
-                                        #clock-cells = <1>;
-                                };
-
-                                ap_pinctrl: pinctrl {
-                                        compatible = "marvell,ap806-pinctrl";
-
-                                        uart0_pins: uart0-pins {
-                                                marvell,pins = "mpp11", "mpp19";
-                                                marvell,function = "uart0";
-                                        };
-                                };
-
-                                ap_gpio: gpio@1040 {
-                                        compatible = "marvell,armada-8k-gpio";
-                                        offset = <0x1040>;
-                                        ngpios = <20>;
-                                        gpio-controller;
-                                        #gpio-cells = <2>;
-                                        gpio-ranges = <&ap_pinctrl 0 0 20>;
-                                };
-                        };
-
-                        ap_thermal: thermal@6f808c {
-                                compatible = "marvell,armada-ap806-thermal";
-                                reg = <0x6f808c 0x4>,
-                                      <0x6f8084 0x8>;
-                        };
-                };
-        };
-};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
deleted file mode 100644
index 8b610fd2b3..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
+++ /dev/null
@@ -1,10 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- */
-
-/* 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 ADDRESSIFY(addr) EVALUATOR(0x, addr)
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi
deleted file mode 100644
index 5e8e524cf7..0000000000
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi
+++ /dev/null
@@ -1,560 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for Marvell Armada CP110.
- */
-
-#include "armada-common.dtsi"
-
-#define ICU_GRP_NSR             0x0
-#define ICU_GRP_SR              0x1
-#define ICU_GRP_SEI             0x4
-#define ICU_GRP_REI             0x5
-
-#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 { };
-};
-
-&CP110_NAME {
-        #address-cells = <2>;
-        #size-cells = <2>;
-        compatible = "simple-bus";
-        interrupt-parent = <&CP110_LABEL(icu)>;
-        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(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
-                                 <&CP110_LABEL(ppv2_clk)>, <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        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 = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 43 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 47 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 51 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 55 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 129 IRQ_TYPE_LEVEL_HIGH>;
-                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
-                                        "tx-cpu3", "rx-shared", "link";
-                                port-id = <0>;
-                                gop-port-id = <0>;
-                                status = "disabled";
-                        };
-
-                        CP110_LABEL(eth1): eth1 {
-                                interrupts = <ICU_GRP_NSR 40 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 44 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 48 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 52 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 56 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 128 IRQ_TYPE_LEVEL_HIGH>;
-                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
-                                        "tx-cpu3", "rx-shared", "link";
-                                port-id = <1>;
-                                gop-port-id = <2>;
-                                status = "disabled";
-                        };
-
-                        CP110_LABEL(eth2): eth2 {
-                                interrupts = <ICU_GRP_NSR 41 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 45 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 49 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 53 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 57 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 127 IRQ_TYPE_LEVEL_HIGH>;
-                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
-                                        "tx-cpu3", "rx-shared", "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)>;
-                        #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(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
-                                 <&CP110_LABEL(core_clk)>, <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(xmdio): mdio@12a600 {
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        compatible = "marvell,xmdio";
-                        reg = <0x12a600 0x10>;
-                        clocks = <&CP110_LABEL(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(icu): interrupt-controller@1e0000 {
-                        compatible = "marvell,cp110-icu";
-                        reg = <0x1e0000 0x440>;
-                        #interrupt-cells = <3>;
-                        interrupt-controller;
-                        msi-parent = <&gicp>;
-                };
-
-                CP110_LABEL(rtc): rtc@284000 {
-                        compatible = "marvell,armada-8k-rtc";
-                        reg = <0x284000 0x20>, <0x284080 0x24>;
-                        reg-names = "rtc", "rtc-soc";
-                        interrupts = <ICU_GRP_NSR 77 IRQ_TYPE_LEVEL_HIGH>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(thermal): thermal@400078 {
-                        compatible = "marvell,armada-cp110-thermal";
-                        reg = <0x400078 0x4>,
-                        <0x400070 0x8>;
-                };
-
-                CP110_LABEL(syscon0): system-controller@440000 {
-                        compatible = "syscon", "simple-mfd";
-                        reg = <0x440000 0x2000>;
-
-                        CP110_LABEL(clk): clock {
-                                compatible = "marvell,cp110-clock";
-                                status = "disabled";
-                                #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 = <ICU_GRP_NSR 86 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 85 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 84 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 83 IRQ_TYPE_LEVEL_HIGH>;
-                                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 = <ICU_GRP_NSR 82 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 81 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 80 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 79 IRQ_TYPE_LEVEL_HIGH>;
-                                status = "disabled";
-                        };
-                };
-
-                CP110_LABEL(usb3_0): usb3@500000 {
-                        compatible = "marvell,armada-8k-xhci",
-                        "generic-xhci";
-                        reg = <0x500000 0x4000>;
-                        dma-coherent;
-                        interrupts = <ICU_GRP_NSR 106 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(usb3_1): usb3@510000 {
-                        compatible = "marvell,armada-8k-xhci",
-                        "generic-xhci";
-                        reg = <0x510000 0x4000>;
-                        dma-coherent;
-                        interrupts = <ICU_GRP_NSR 105 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(sata0): sata@540000 {
-                        compatible = "marvell,armada-8k-ahci",
-                        "generic-ahci";
-                        reg = <0x540000 0x30000>;
-                        dma-coherent;
-                        interrupts = <ICU_GRP_NSR 107 IRQ_TYPE_LEVEL_HIGH>;
-                        clocks = <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                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(core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                };
-
-                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(core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                };
-
-                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(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(i2c0): i2c@701000 {
-                        compatible = "marvell,mv78230-i2c";
-                        reg = <0x701000 0x20>;
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        interrupts = <ICU_GRP_NSR 120 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(i2c1): i2c@701100 {
-                        compatible = "marvell,mv78230-i2c";
-                        reg = <0x701100 0x20>;
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        interrupts = <ICU_GRP_NSR 121 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart0): serial@702000 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702000 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 122 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart1): serial@702100 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702100 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 123 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart2): serial@702200 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702200 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 124 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart3): serial@702300 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702300 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 125 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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 = <ICU_GRP_NSR 115 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(nand_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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 = <ICU_GRP_NSR 95 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(x2core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "okay";
-                };
-
-                CP110_LABEL(sdhci0): sdhci@780000 {
-                        compatible = "marvell,armada-cp110-sdhci";
-                        reg = <0x780000 0x300>;
-                        interrupts = <ICU_GRP_NSR 27 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "axi";
-                        clocks = <&CP110_LABEL(sdio_clk)>, <&CP110_LABEL(core_clk)>;
-                        dma-coherent;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(crypto): crypto@800000 {
-                        compatible = "inside-secure,safexcel-eip197";
-                        reg = <0x800000 0x200000>;
-                        interrupts = <ICU_GRP_NSR 87 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 88 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 89 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 90 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 91 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 92 IRQ_TYPE_LEVEL_HIGH>;
-                        interrupt-names = "mem", "ring0", "ring1",
-                                "ring2", "ring3", "eip";
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(x2core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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) ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
-                interrupts = <ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
-                num-lanes = <1>;
-                clock-names = "core", "reg";
-                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
-                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) ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
-                interrupts = <ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
-
-                num-lanes = <1>;
-                clock-names = "core", "reg";
-                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
-                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) ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
-                interrupts = <ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
-
-                num-lanes = <1>;
-                clock-names = "core", "reg";
-                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
-                status = "disabled";
-        };
-
-        /* 1 GHz fixed main PLL */
-        CP110_LABEL(mainpll): CP110_LABEL(mainpll) {
-                compatible = "fixed-clock";
-                #clock-cells = <0>;
-                clock-frequency = <1000000000>;
-        };
-
-        CP110_LABEL(x2core_clk): CP110_LABEL(x2core_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <2>;
-        };
-
-        CP110_LABEL(core_clk): CP110_LABEL(core_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <2>;
-        };
-
-        CP110_LABEL(sdio_clk): CP110_LABEL(sdio_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <2>;
-                clock-div = <5>;
-        };
-
-        CP110_LABEL(nand_clk): CP110_LABEL(nand_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <2>;
-                clock-div = <5>;
-        };
-
-        CP110_LABEL(ppv2_clk): CP110_LABEL(ppv2_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <3>;
-        };
-
-        CP110_LABEL(slow_io_clk): CP110_LABEL(slow_io_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <4>;
-        };
-};
-- 
2.29.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [edk2-non-osi PATCH 3/4] Marvell/Armada7k8k: Update device trees
  2021-03-18 19:57 [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Marcin Wojtas
  2021-03-18 19:57 ` [edk2-non-osi PATCH 2/4] Marvell/Armada7k8k: Move device tree sources from edk2-platforms Marcin Wojtas
  2021-03-18 19:57 ` [edk2-platforms PATCH 1/4] Marvell/Armada7k8k: Remove " Marcin Wojtas
@ 2021-03-18 19:57 ` Marcin Wojtas
  2021-03-18 19:57 ` [edk2-non-osi PATCH 4/4] Marvell/OcteonTx: " Marcin Wojtas
  2021-04-15 19:00 ` [edk2-devel] [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Ard Biesheuvel
  4 siblings, 0 replies; 7+ messages in thread
From: Marcin Wojtas @ 2021-03-18 19:57 UTC (permalink / raw)
  To: devel; +Cc: leif, ard.biesheuvel, mw, jaz, kostap, upstream, jon

This patch updates the Armada7k8k device trees to the version
found in Linux v5.11. All previous modifications, compared
to vanilla files, are kept, i.e. disabled SPI flashes & RTC,
fixed clock tree and generic PCIE for MacchiatoBin board.

Signed-off-by: Marcin Wojtas <mw@semihalf.com>
---
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts     |  72 ++-
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi       |  24 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi       |  28 +-
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts     |  57 +-
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts  | 344 +----------
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dtsi | 374 ++++++++++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi       |  36 ++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi       |  56 +-
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi |  38 +-
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi |  66 ++-
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi      | 262 +-------
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807-quad.dtsi |  93 +++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807.dtsi      |  33 ++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap80x.dtsi      | 470 +++++++++++++++
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi     |   3 +-
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi      | 556 +----------------
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp115.dtsi      |  12 +
 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp11x.dtsi      | 627 ++++++++++++++++++++
 18 files changed, 1921 insertions(+), 1230 deletions(-)
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807-quad.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap80x.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp115.dtsi
 create mode 100644 Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp11x.dtsi

diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
index f5878ef..a578b5a 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040-db.dts
@@ -7,9 +7,6 @@
 
 #include "armada-7040.dtsi"
 
-#define GPIO_ACTIVE_HIGH 0
-#define GPIO_ACTIVE_LOW  1
-
 / {
         model = "Marvell Armada 7040 DB board";
         compatible = "marvell,armada7040-db", "marvell,armada7040",
@@ -30,6 +27,32 @@
                 ethernet2 = &cp0_eth2;
         };
 
+        cp0_exp_usb3_0_current_regulator: gpio-regulator {
+                compatible = "regulator-gpio";
+                regulator-name = "cp0-usb3-0-current-regulator";
+                regulator-type = "current";
+                regulator-min-microamp = <500000>;
+                regulator-max-microamp = <900000>;
+                gpios = <&expander0 4 GPIO_ACTIVE_HIGH>;
+                states = <500000 0x0
+                          900000 0x1>;
+                enable-active-high;
+                gpios-states = <0>;
+        };
+
+        cp0_exp_usb3_1_current_regulator: gpio-regulator {
+                compatible = "regulator-gpio";
+                regulator-name = "cp0-usb3-1-current-regulator";
+                regulator-type = "current";
+                regulator-min-microamp = <500000>;
+                regulator-max-microamp = <900000>;
+                gpios = <&expander0 5 GPIO_ACTIVE_HIGH>;
+                states = <500000 0x0
+                          900000 0x1>;
+                enable-active-high;
+                gpios-states = <0>;
+        };
+
         cp0_reg_usb3_0_vbus: cp0-usb3-0-vbus {
                 compatible = "regulator-fixed";
                 regulator-name = "usb3h0-vbus";
@@ -37,6 +60,7 @@
                 regulator-max-microvolt = <5000000>;
                 enable-active-high;
                 gpio = <&expander0 0 GPIO_ACTIVE_HIGH>;
+                vin-supply = <&cp0_exp_usb3_0_current_regulator>;
         };
 
         cp0_reg_usb3_1_vbus: cp0-usb3-1-vbus {
@@ -46,16 +70,7 @@
                 regulator-max-microvolt = <5000000>;
                 enable-active-high;
                 gpio = <&expander0 1 GPIO_ACTIVE_HIGH>;
-        };
-
-        cp0_usb3_0_phy: cp0-usb3-0-phy {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&cp0_reg_usb3_0_vbus>;
-        };
-
-        cp0_usb3_1_phy: cp0-usb3-1-phy {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&cp0_reg_usb3_1_vbus>;
+                vin-supply = <&cp0_exp_usb3_1_current_regulator>;
         };
 };
 
@@ -68,8 +83,6 @@
         status = "okay";
 
         spi-flash@0 {
-                #address-cells = <1>;
-                #size-cells = <1>;
                 compatible = "jedec,spi-nor";
                 reg = <0>;
                 spi-max-frequency = <10000000>;
@@ -100,6 +113,8 @@
 
 &cp0_pcie2 {
         status = "okay";
+        phys = <&cp0_comphy5 2>;
+        phy-names = "cp0-pcie2-x1-phy";
 };
 
 &cp0_i2c0 {
@@ -171,8 +186,6 @@
         status = "disabled";
 
         spi-flash@0 {
-                #address-cells = <0x1>;
-                #size-cells = <0x1>;
                 compatible = "jedec,spi-nor";
                 reg = <0x0>;
                 spi-max-frequency = <20000000>;
@@ -197,15 +210,36 @@
 
 &cp0_sata0 {
         status = "okay";
+
+        sata-port@1 {
+                phys = <&cp0_comphy3 1>;
+                phy-names = "cp0-sata0-1-phy";
+        };
+};
+
+&cp0_comphy1 {
+        cp0_usbh0_con: connector {
+                compatible = "usb-a-connector";
+                phy-supply = <&cp0_reg_usb3_0_vbus>;
+        };
 };
 
 &cp0_usb3_0 {
-        usb-phy = <&cp0_usb3_0_phy>;
+        phys = <&cp0_comphy1 0>;
+        phy-names = "cp0-usb3h0-comphy";
         status = "okay";
 };
 
+&cp0_comphy4 {
+        cp0_usbh1_con: connector {
+                compatible = "usb-a-connector";
+                phy-supply = <&cp0_reg_usb3_1_vbus>;
+        };
+};
+
 &cp0_usb3_1 {
-        usb-phy = <&cp0_usb3_1_phy>;
+        phys = <&cp0_comphy4 1>;
+        phy-names = "cp0-usb3h1-comphy";
         status = "okay";
 };
 
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
index 03109b2..30c2e4e 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-7040.dtsi
@@ -14,3 +14,27 @@
         compatible = "marvell,armada7040", "marvell,armada-ap806-quad",
                      "marvell,armada-ap806";
 };
+
+&cp0_pcie0 {
+        iommu-map =
+                <0x0   &smmu 0x480 0x20>,
+                <0x100 &smmu 0x4a0 0x20>,
+                <0x200 &smmu 0x4c0 0x20>;
+        iommu-map-mask = <0x031f>;
+};
+
+&cp0_sata0 {
+        iommus = <&smmu 0x444>;
+};
+
+&cp0_sdhci0 {
+        iommus = <&smmu 0x445>;
+};
+
+&cp0_usb3_0 {
+        iommus = <&smmu 0x440>;
+};
+
+&cp0_usb3_1 {
+        iommus = <&smmu 0x441>;
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
index 78f9d87..0fdcb35 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-70x0.dtsi
@@ -17,23 +17,23 @@
 /*
  * 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_PCIEx_MEM_BASE(iface) (0xf6000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#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_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
 
 &cp0_gpio1 {
         status = "okay";
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
index e813922..9fea84f 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-db.dts
@@ -7,9 +7,6 @@
 
 #include "armada-8040.dtsi"
 
-#define GPIO_ACTIVE_HIGH 0
-#define GPIO_ACTIVE_LOW  1
-
 / {
         model = "Marvell Armada 8040 DB board";
         compatible = "marvell,armada8040-db", "marvell,armada8040",
@@ -29,6 +26,8 @@
                 ethernet1 = &cp0_eth2;
                 ethernet2 = &cp1_eth0;
                 ethernet3 = &cp1_eth1;
+                i2c1 = &cp0_i2c0;
+                i2c2 = &cp1_i2c0;
         };
 
         cp0_reg_usb3_0_vbus: cp0-usb3-0-vbus {
@@ -54,11 +53,6 @@
                 vcc-supply = <&cp0_reg_usb3_0_vbus>;
         };
 
-        cp0_usb3_1_phy: cp0-usb3-1-phy {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&cp0_reg_usb3_1_vbus>;
-        };
-
         cp1_reg_usb3_0_vbus: cp1-usb3-0-vbus {
                 compatible = "regulator-fixed";
                 regulator-name = "cp1-usb3h0-vbus";
@@ -74,17 +68,10 @@
         };
 };
 
-&i2c0 {
-        status = "okay";
-        clock-frequency = <100000>;
-};
-
 &spi0 {
         status = "okay";
 
         spi-flash@0 {
-                #address-cells = <1>;
-                #size-cells = <1>;
                 compatible = "jedec,spi-nor";
                 reg = <0>;
                 spi-max-frequency = <10000000>;
@@ -115,11 +102,15 @@
 
 /* CON6 on CP0 expansion */
 &cp0_pcie0 {
+        phys = <&cp0_comphy0 0>;
+        phy-names = "cp0-pcie0-x1-phy";
         status = "okay";
 };
 
 /* CON5 on CP0 expansion */
 &cp0_pcie2 {
+        phys = <&cp0_comphy5 2>;
+        phy-names = "cp0-pcie2-x1-phy";
         status = "okay";
 };
 
@@ -150,6 +141,15 @@
 /* CON4 on CP0 expansion */
 &cp0_sata0 {
         status = "okay";
+
+        sata-port@0 {
+                phys = <&cp0_comphy1 0>;
+                phy-names = "cp0-sata0-0-phy";
+        };
+        sata-port@1 {
+                phys = <&cp0_comphy3 1>;
+                phy-names = "cp0-sata0-1-phy";
+        };
 };
 
 /* CON9 on CP0 expansion */
@@ -158,9 +158,17 @@
         status = "okay";
 };
 
+&cp0_comphy4 {
+        cp0_usbh1_con: connector {
+                compatible = "usb-a-connector";
+                phy-supply = <&cp0_reg_usb3_1_vbus>;
+        };
+};
+
 /* CON10 on CP0 expansion */
 &cp0_usb3_1 {
-        usb-phy = <&cp0_usb3_1_phy>;
+        phys = <&cp0_comphy4 1>;
+        phy-names = "cp0-usb3h1-comphy";
         status = "okay";
 };
 
@@ -194,16 +202,22 @@
 
 /* CON6 on CP1 expansion */
 &cp1_pcie0 {
+        phys = <&cp1_comphy0 0>;
+        phy-names = "cp1-pcie0-x1-phy";
         status = "okay";
 };
 
 /* CON7 on CP1 expansion */
 &cp1_pcie1 {
+        phys = <&cp1_comphy4 1>;
+        phy-names = "cp1-pcie1-x1-phy";
         status = "okay";
 };
 
 /* CON5 on CP1 expansion */
 &cp1_pcie2 {
+        phys = <&cp1_comphy5 2>;
+        phy-names = "cp1-pcie2-x1-phy";
         status = "okay";
 };
 
@@ -216,8 +230,6 @@
         status = "disabled";
 
         spi-flash@0 {
-                #address-cells = <0x1>;
-                #size-cells = <0x1>;
                 compatible = "jedec,spi-nor";
                 reg = <0x0>;
                 spi-max-frequency = <20000000>;
@@ -282,6 +294,15 @@
 /* CON4 on CP1 expansion */
 &cp1_sata0 {
         status = "okay";
+
+        sata-port@0 {
+                phys = <&cp1_comphy1 0>;
+                phy-names = "cp1-sata0-0-phy";
+        };
+        sata-port@1 {
+                phys = <&cp1_comphy3 1>;
+                phy-names = "cp1-sata0-1-phy";
+        };
 };
 
 /* CON9 on CP1 expansion */
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
index d9c9348..740bdaf 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dts
@@ -5,233 +5,13 @@
  * Device Tree file for MACCHIATOBin Armada 8040 community board platform
  */
 
-#include "armada-8040.dtsi"
-
-#define GPIO_ACTIVE_HIGH 0
-#define GPIO_ACTIVE_LOW  1
+#include "armada-8040-mcbin.dtsi"
 
 / {
-        model = "Marvell 8040 MACCHIATOBin";
-        compatible = "marvell,armada8040-mcbin", "marvell,armada8040",
+        model = "Marvell 8040 MACCHIATOBin Double-shot";
+        compatible = "marvell,armada8040-mcbin-doubleshot",
+                        "marvell,armada8040-mcbin", "marvell,armada8040",
                         "marvell,armada-ap806-quad", "marvell,armada-ap806";
-
-        chosen {
-                stdout-path = "serial0:115200n8";
-        };
-
-        memory@0 {
-                device_type = "memory";
-                reg = <0x0 0x0 0x0 0x80000000>;
-        };
-
-        aliases {
-                ethernet0 = &cp0_eth0;
-                ethernet1 = &cp1_eth0;
-                ethernet2 = &cp1_eth1;
-                ethernet3 = &cp1_eth2;
-        };
-
-        /* Regulator labels correspond with schematics */
-        v_3_3: regulator-3-3v {
-                compatible = "regulator-fixed";
-                regulator-name = "v_3_3";
-                regulator-min-microvolt = <3300000>;
-                regulator-max-microvolt = <3300000>;
-                regulator-always-on;
-                status = "okay";
-        };
-
-        v_vddo_h: regulator-1-8v {
-                compatible = "regulator-fixed";
-                regulator-name = "v_vddo_h";
-                regulator-min-microvolt = <1800000>;
-                regulator-max-microvolt = <1800000>;
-                regulator-always-on;
-                status = "okay";
-        };
-
-        v_5v0_usb3_hst_vbus: regulator-usb3-vbus0 {
-                compatible = "regulator-fixed";
-                enable-active-high;
-                gpio = <&cp0_gpio2 15 GPIO_ACTIVE_HIGH>;
-                pinctrl-names = "default";
-                pinctrl-0 = <&cp0_xhci_vbus_pins>;
-                regulator-name = "v_5v0_usb3_hst_vbus";
-                regulator-min-microvolt = <5000000>;
-                regulator-max-microvolt = <5000000>;
-                status = "okay";
-        };
-
-        usb3h0_phy: usb3_phy0 {
-                compatible = "usb-nop-xceiv";
-                vcc-supply = <&v_5v0_usb3_hst_vbus>;
-        };
-
-        sfp_eth0: sfp-eth0 {
-                /* CON15,16 - CPM lane 4 */
-                compatible = "sff,sfp";
-                i2c-bus = <&sfpp0_i2c>;
-                los-gpio = <&cp1_gpio1 28 GPIO_ACTIVE_HIGH>;
-                mod-def0-gpio = <&cp1_gpio1 27 GPIO_ACTIVE_LOW>;
-                tx-disable-gpio = <&cp1_gpio1 29 GPIO_ACTIVE_HIGH>;
-                tx-fault-gpio  = <&cp1_gpio1 26 GPIO_ACTIVE_HIGH>;
-                pinctrl-names = "default";
-                pinctrl-0 = <&cp1_sfpp0_pins>;
-        };
-
-        sfp_eth1: sfp-eth1 {
-                /* CON17,18 - CPS lane 4 */
-                compatible = "sff,sfp";
-                i2c-bus = <&sfpp1_i2c>;
-                los-gpio = <&cp1_gpio1 8 GPIO_ACTIVE_HIGH>;
-                mod-def0-gpio = <&cp1_gpio1 11 GPIO_ACTIVE_LOW>;
-                tx-disable-gpio = <&cp1_gpio1 10 GPIO_ACTIVE_HIGH>;
-                tx-fault-gpio = <&cp0_gpio2 30 GPIO_ACTIVE_HIGH>;
-                pinctrl-names = "default";
-                pinctrl-0 = <&cp1_sfpp1_pins &cp0_sfpp1_pins>;
-        };
-
-        sfp_eth3: sfp-eth3 {
-                /* CON3,4 - CPS lane 5 */
-                compatible = "sff,sfp";
-                i2c-bus = <&sfp_1g_i2c>;
-                los-gpio = <&cp0_gpio2 22 GPIO_ACTIVE_HIGH>;
-                mod-def0-gpio = <&cp0_gpio2 21 GPIO_ACTIVE_LOW>;
-                tx-disable-gpio = <&cp1_gpio1 24 GPIO_ACTIVE_HIGH>;
-                tx-fault-gpio = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>;
-                pinctrl-names = "default";
-                pinctrl-0 = <&cp0_sfp_1g_pins &cp1_sfp_1g_pins>;
-        };
-};
-
-&uart0 {
-        status = "okay";
-        pinctrl-0 = <&uart0_pins>;
-        pinctrl-names = "default";
-};
-
-&ap_sdhci0 {
-        bus-width = <8>;
-        /*
-         * Not stable in HS modes - phy needs "more calibration", so add
-         * the "slow-mode" and disable SDR104, SDR50 and DDR50 modes.
-         */
-        marvell,xenon-phy-slow-mode;
-        no-1-8-v;
-        no-sd;
-        no-sdio;
-        non-removable;
-        status = "okay";
-        vqmmc-supply = <&v_vddo_h>;
-};
-
-&cp0_i2c0 {
-        clock-frequency = <100000>;
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_i2c0_pins>;
-        status = "okay";
-};
-
-&cp0_i2c1 {
-        clock-frequency = <100000>;
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_i2c1_pins>;
-        status = "okay";
-
-        i2c-switch@70 {
-                compatible = "nxp,pca9548";
-                #address-cells = <1>;
-                #size-cells = <0>;
-                reg = <0x70>;
-
-                sfpp0_i2c: i2c@0 {
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        reg = <0>;
-                };
-                sfpp1_i2c: i2c@1 {
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        reg = <1>;
-                };
-                sfp_1g_i2c: i2c@2 {
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        reg = <2>;
-                };
-        };
-};
-
-/* J25 UART header */
-&cp0_uart1 {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_uart1_pins>;
-        status = "okay";
-};
-
-&cp0_mdio {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_ge_mdio_pins>;
-        status = "okay";
-
-        ge_phy: ethernet-phy@0 {
-                reg = <0>;
-        };
-};
-
-&cp0_pcie0 {
-        compatible = "marvell,armada8k-pcie-ecam", "snps,dw-pcie-ecam";
-        reg = <0 0xe0000000 0 0xff00000>;
-        bus-range = <0 0xfe>;
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_pcie_pins>;
-        num-lanes = <4>;
-        num-viewport = <8>;
-        reset-gpio = <&cp0_gpio1 20 GPIO_ACTIVE_LOW>;
-        ranges = <0x1000000 0x0 0x00000000 0x0 0xeff00000 0x0 0x00010000>,
-                 <0x2000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x20000000>,
-                 <0x3000000 0x8 0x00000000 0x8 0x00000000 0x1 0x00000000>;
-        status = "okay";
-};
-
-&cp0_pinctrl {
-        cp0_ge_mdio_pins: ge-mdio-pins {
-                marvell,pins = "mpp32", "mpp34";
-                marvell,function = "ge";
-        };
-        cp0_i2c1_pins: i2c1-pins {
-                marvell,pins = "mpp35", "mpp36";
-                marvell,function = "i2c1";
-        };
-        cp0_i2c0_pins: i2c0-pins {
-                marvell,pins = "mpp37", "mpp38";
-                marvell,function = "i2c0";
-        };
-        cp0_uart1_pins: uart1-pins {
-                marvell,pins = "mpp40", "mpp41";
-                marvell,function = "uart1";
-        };
-        cp0_xhci_vbus_pins: xhci0-vbus-pins {
-                marvell,pins = "mpp47";
-                marvell,function = "gpio";
-        };
-        cp0_sfp_1g_pins: sfp-1g-pins {
-                marvell,pins = "mpp51", "mpp53", "mpp54";
-                marvell,function = "gpio";
-        };
-        cp0_pcie_pins: pcie-pins {
-                marvell,pins = "mpp52";
-                marvell,function = "gpio";
-        };
-        cp0_sdhci_pins: sdhci-pins {
-                marvell,pins = "mpp55", "mpp56", "mpp57", "mpp58", "mpp59",
-                               "mpp60", "mpp61";
-                marvell,function = "sdio";
-        };
-        cp0_sfpp1_pins: sfpp1-pins {
-                marvell,pins = "mpp62";
-                marvell,function = "gpio";
-        };
 };
 
 &cp0_xmdio {
@@ -250,128 +30,16 @@
         };
 };
 
-&cp0_ethernet {
-        status = "okay";
-};
-
 &cp0_eth0 {
         status = "okay";
         /* Network PHY */
         phy = <&phy0>;
-        phy-mode = "10gbase-kr";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp0_comphy4 0>;
-};
-
-&cp0_sata0 {
-        /* CPM Lane 0 - U29 */
-        status = "okay";
-};
-
-&cp0_sdhci0 {
-        /* U6 */
-        broken-cd;
-        bus-width = <4>;
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_sdhci_pins>;
-        status = "okay";
-        vqmmc-supply = <&v_3_3>;
-};
-
-&cp0_usb3_0 {
-        /* J38? - USB2.0 only */
-        status = "okay";
-};
-
-&cp0_usb3_1 {
-        /* J38? - USB2.0 only */
-        status = "okay";
-};
-
-&cp1_ethernet {
-        status = "okay";
+        phy-mode = "10gbase-r";
 };
 
 &cp1_eth0 {
         status = "okay";
         /* Network PHY */
         phy = <&phy8>;
-        phy-mode = "10gbase-kr";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp1_comphy4 0>;
-};
-
-&cp1_eth1 {
-        /* CPS Lane 0 - J5 (Gigabit RJ45) */
-        status = "okay";
-        /* Network PHY */
-        phy = <&ge_phy>;
-        phy-mode = "sgmii";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp1_comphy0 1>;
-};
-
-&cp1_eth2 {
-        /* CPS Lane 5 */
-        status = "okay";
-        /* Network PHY */
-        phy-mode = "2500base-x";
-        managed = "in-band-status";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp1_comphy5 2>;
-        sfp = <&sfp_eth3>;
-};
-
-&cp1_pinctrl {
-        cp1_sfpp1_pins: sfpp1-pins {
-                marvell,pins = "mpp8", "mpp10", "mpp11";
-                marvell,function = "gpio";
-        };
-        cp1_spi1_pins: spi1-pins {
-                marvell,pins = "mpp12", "mpp13", "mpp14", "mpp15", "mpp16";
-                marvell,function = "spi1";
-        };
-        cp1_uart0_pins: uart0-pins {
-                marvell,pins = "mpp6", "mpp7";
-                marvell,function = "uart0";
-        };
-        cp1_sfp_1g_pins: sfp-1g-pins {
-                marvell,pins = "mpp24";
-                marvell,function = "gpio";
-        };
-        cp1_sfpp0_pins: sfpp0-pins {
-                marvell,pins = "mpp26", "mpp27", "mpp28", "mpp29";
-                marvell,function = "gpio";
-        };
-};
-
-/* J27 UART header */
-&cp1_uart0 {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp1_uart0_pins>;
-        status = "okay";
-};
-
-&cp1_sata0 {
-        /* CPS Lane 1 - U32 */
-        /* CPS Lane 3 - U31 */
-        status = "okay";
-};
-
-&cp1_spi1 {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp1_spi1_pins>;
-        status = "disabled";
-
-        spi-flash@0 {
-                compatible = "st,w25q32";
-                spi-max-frequency = <50000000>;
-                reg = <0>;
-        };
-};
-
-&cp1_usb3_0 {
-        /* CPS Lane 2 - CON7 */
-        usb-phy = <&usb3h0_phy>;
-        status = "okay";
+        phy-mode = "10gbase-r";
 };
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dtsi
new file mode 100644
index 0000000..970e875
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040-mcbin.dtsi
@@ -0,0 +1,374 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for MACCHIATOBin Armada 8040 community board platform
+ */
+
+#include "armada-8040.dtsi"
+
+/ {
+        model = "Marvell 8040 MACCHIATOBin";
+        compatible = "marvell,armada8040-mcbin", "marvell,armada8040",
+                        "marvell,armada-ap806-quad", "marvell,armada-ap806";
+
+        chosen {
+                stdout-path = "serial0:115200n8";
+        };
+
+        memory@0 {
+                device_type = "memory";
+                reg = <0x0 0x0 0x0 0x80000000>;
+        };
+
+        aliases {
+                ethernet0 = &cp0_eth0;
+                ethernet1 = &cp1_eth0;
+                ethernet2 = &cp1_eth1;
+                ethernet3 = &cp1_eth2;
+        };
+
+        /* Regulator labels correspond with schematics */
+        v_3_3: regulator-3-3v {
+                compatible = "regulator-fixed";
+                regulator-name = "v_3_3";
+                regulator-min-microvolt = <3300000>;
+                regulator-max-microvolt = <3300000>;
+                regulator-always-on;
+                status = "okay";
+        };
+
+        v_vddo_h: regulator-1-8v {
+                compatible = "regulator-fixed";
+                regulator-name = "v_vddo_h";
+                regulator-min-microvolt = <1800000>;
+                regulator-max-microvolt = <1800000>;
+                regulator-always-on;
+                status = "okay";
+        };
+
+        v_5v0_usb3_hst_vbus: regulator-usb3-vbus0 {
+                compatible = "regulator-fixed";
+                enable-active-high;
+                gpio = <&cp0_gpio2 15 GPIO_ACTIVE_HIGH>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&cp0_xhci_vbus_pins>;
+                regulator-name = "v_5v0_usb3_hst_vbus";
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                status = "okay";
+        };
+
+        sfp_eth0: sfp-eth0 {
+                /* CON15,16 - CPM lane 4 */
+                compatible = "sff,sfp";
+                i2c-bus = <&sfpp0_i2c>;
+                los-gpio = <&cp1_gpio1 28 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&cp1_gpio1 27 GPIO_ACTIVE_LOW>;
+                tx-disable-gpio = <&cp1_gpio1 29 GPIO_ACTIVE_HIGH>;
+                tx-fault-gpio  = <&cp1_gpio1 26 GPIO_ACTIVE_HIGH>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&cp1_sfpp0_pins>;
+                maximum-power-milliwatt = <2000>;
+        };
+
+        sfp_eth1: sfp-eth1 {
+                /* CON17,18 - CPS lane 4 */
+                compatible = "sff,sfp";
+                i2c-bus = <&sfpp1_i2c>;
+                los-gpio = <&cp1_gpio1 8 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&cp1_gpio1 11 GPIO_ACTIVE_LOW>;
+                tx-disable-gpio = <&cp1_gpio1 10 GPIO_ACTIVE_HIGH>;
+                tx-fault-gpio = <&cp0_gpio2 30 GPIO_ACTIVE_HIGH>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&cp1_sfpp1_pins &cp0_sfpp1_pins>;
+                maximum-power-milliwatt = <2000>;
+        };
+
+        sfp_eth3: sfp-eth3 {
+                /* CON13,14 - CPS lane 5 */
+                compatible = "sff,sfp";
+                i2c-bus = <&sfp_1g_i2c>;
+                los-gpio = <&cp0_gpio2 22 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&cp0_gpio2 21 GPIO_ACTIVE_LOW>;
+                tx-disable-gpio = <&cp1_gpio1 24 GPIO_ACTIVE_HIGH>;
+                tx-fault-gpio = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&cp0_sfp_1g_pins &cp1_sfp_1g_pins>;
+                maximum-power-milliwatt = <2000>;
+        };
+};
+
+&uart0 {
+        status = "okay";
+        pinctrl-0 = <&uart0_pins>;
+        pinctrl-names = "default";
+};
+
+&ap_sdhci0 {
+        bus-width = <8>;
+        /*
+         * Not stable in HS modes - phy needs "more calibration", so add
+         * the "slow-mode" and disable SDR104, SDR50 and DDR50 modes.
+         */
+        marvell,xenon-phy-slow-mode;
+        no-1-8-v;
+        no-sd;
+        no-sdio;
+        non-removable;
+        status = "okay";
+        vqmmc-supply = <&v_vddo_h>;
+};
+
+&cp0_i2c0 {
+        clock-frequency = <100000>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_i2c0_pins>;
+        status = "okay";
+};
+
+&cp0_i2c1 {
+        clock-frequency = <100000>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_i2c1_pins>;
+        status = "okay";
+
+        i2c-switch@70 {
+                compatible = "nxp,pca9548";
+                #address-cells = <1>;
+                #size-cells = <0>;
+                reg = <0x70>;
+
+                sfpp0_i2c: i2c@0 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        reg = <0>;
+                };
+                sfpp1_i2c: i2c@1 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        reg = <1>;
+                };
+                sfp_1g_i2c: i2c@2 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        reg = <2>;
+                };
+        };
+};
+
+/* J25 UART header */
+&cp0_uart1 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_uart1_pins>;
+        status = "okay";
+};
+
+&cp0_mdio {
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_ge_mdio_pins>;
+        status = "okay";
+
+        ge_phy: ethernet-phy@0 {
+                reg = <0>;
+        };
+};
+
+&cp0_pcie0 {
+        compatible = "marvell,armada8k-pcie-ecam", "pci-host-ecam-generic";
+        reg = <0 0xe0000000 0 0xff00000>;
+        bus-range = <0 0xfe>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_pcie_pins>;
+        num-lanes = <4>;
+        num-viewport = <8>;
+        reset-gpios = <&cp0_gpio2 20 GPIO_ACTIVE_LOW>;
+        ranges = <0x1000000 0x0 0x00000000 0x0 0xeff00000 0x0 0x00010000>,
+                 <0x2000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x20000000>,
+                 <0x3000000 0x8 0x00000000 0x8 0x00000000 0x1 0x00000000>;
+        phys = <&cp0_comphy0 0>, <&cp0_comphy1 0>,
+               <&cp0_comphy2 0>, <&cp0_comphy3 0>;
+        phy-names = "cp0-pcie0-x4-lane0-phy", "cp0-pcie0-x4-lane1-phy",
+                    "cp0-pcie0-x4-lane2-phy", "cp0-pcie0-x4-lane3-phy";
+        status = "okay";
+};
+
+&cp0_pinctrl {
+        cp0_ge_mdio_pins: ge-mdio-pins {
+                marvell,pins = "mpp32", "mpp34";
+                marvell,function = "ge";
+        };
+        cp0_i2c1_pins: i2c1-pins {
+                marvell,pins = "mpp35", "mpp36";
+                marvell,function = "i2c1";
+        };
+        cp0_i2c0_pins: i2c0-pins {
+                marvell,pins = "mpp37", "mpp38";
+                marvell,function = "i2c0";
+        };
+        cp0_uart1_pins: uart1-pins {
+                marvell,pins = "mpp40", "mpp41";
+                marvell,function = "uart1";
+        };
+        cp0_xhci_vbus_pins: xhci0-vbus-pins {
+                marvell,pins = "mpp47";
+                marvell,function = "gpio";
+        };
+        cp0_sfp_1g_pins: sfp-1g-pins {
+                marvell,pins = "mpp51", "mpp53", "mpp54";
+                marvell,function = "gpio";
+        };
+        cp0_pcie_pins: pcie-pins {
+                marvell,pins = "mpp52";
+                marvell,function = "gpio";
+        };
+        cp0_sdhci_pins: sdhci-pins {
+                marvell,pins = "mpp55", "mpp56", "mpp57", "mpp58", "mpp59",
+                               "mpp60", "mpp61";
+                marvell,function = "sdio";
+        };
+        cp0_sfpp1_pins: sfpp1-pins {
+                marvell,pins = "mpp62";
+                marvell,function = "gpio";
+        };
+};
+
+&cp0_ethernet {
+        status = "okay";
+};
+
+&cp0_eth0 {
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp0_comphy4 0>;
+};
+
+&cp0_sata0 {
+        status = "okay";
+
+        /* CPM Lane 5 - U29 */
+        sata-port@1 {
+                phys = <&cp0_comphy5 1>;
+                phy-names = "cp0-sata0-1-phy";
+        };
+};
+
+&cp0_sdhci0 {
+        /* U6 */
+        broken-cd;
+        bus-width = <4>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_sdhci_pins>;
+        status = "okay";
+        vqmmc-supply = <&v_3_3>;
+};
+
+&cp0_usb3_0 {
+        /* J38? - USB2.0 only */
+        status = "okay";
+};
+
+&cp0_usb3_1 {
+        /* J38? - USB2.0 only */
+        status = "okay";
+};
+
+&cp1_ethernet {
+        status = "okay";
+};
+
+&cp1_eth0 {
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp1_comphy4 0>;
+};
+
+&cp1_eth1 {
+        /* CPS Lane 0 - J5 (Gigabit RJ45) */
+        status = "okay";
+        /* Network PHY */
+        phy = <&ge_phy>;
+        phy-mode = "sgmii";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp1_comphy0 1>;
+};
+
+&cp1_eth2 {
+        /* CPS Lane 5 */
+        status = "okay";
+        /* Network PHY */
+        phy-mode = "2500base-x";
+        managed = "in-band-status";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp1_comphy5 2>;
+        sfp = <&sfp_eth3>;
+};
+
+&cp1_pinctrl {
+        cp1_sfpp1_pins: sfpp1-pins {
+                marvell,pins = "mpp8", "mpp10", "mpp11";
+                marvell,function = "gpio";
+        };
+        cp1_spi1_pins: spi1-pins {
+                marvell,pins = "mpp12", "mpp13", "mpp14", "mpp15", "mpp16";
+                marvell,function = "spi1";
+        };
+        cp1_uart0_pins: uart0-pins {
+                marvell,pins = "mpp6", "mpp7";
+                marvell,function = "uart0";
+        };
+        cp1_sfp_1g_pins: sfp-1g-pins {
+                marvell,pins = "mpp24";
+                marvell,function = "gpio";
+        };
+        cp1_sfpp0_pins: sfpp0-pins {
+                marvell,pins = "mpp26", "mpp27", "mpp28", "mpp29";
+                marvell,function = "gpio";
+        };
+};
+
+/* J27 UART header */
+&cp1_uart0 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp1_uart0_pins>;
+        status = "okay";
+};
+
+&cp1_sata0 {
+        status = "okay";
+
+        /* CPS Lane 1 - U32 */
+        sata-port@0 {
+                phys = <&cp1_comphy1 0>;
+                phy-names = "cp1-sata0-0-phy";
+        };
+
+        /* CPS Lane 3 - U31 */
+        sata-port@1 {
+                phys = <&cp1_comphy3 1>;
+                phy-names = "cp1-sata0-1-phy";
+        };
+};
+
+&cp1_spi1 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp1_spi1_pins>;
+
+        spi-flash@0 {
+                compatible = "st,w25q32";
+                spi-max-frequency = <50000000>;
+                reg = <0>;
+        };
+};
+
+&cp1_comphy2 {
+        cp1_usbh0_con: connector {
+                compatible = "usb-a-connector";
+                phy-supply = <&v_5v0_usb3_hst_vbus>;
+        };
+};
+
+&cp1_usb3_0 {
+        /* CPS Lane 2 - CON7 */
+        phys = <&cp1_comphy2 0>;
+        phy-names = "cp1-usb3h0-comphy";
+        status = "okay";
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
index 784ef3f..0a676df 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-8040.dtsi
@@ -15,6 +15,14 @@
                      "marvell,armada-ap806";
 };
 
+&cp0_pcie0 {
+        iommu-map =
+                <0x0   &smmu 0x480 0x20>,
+                <0x100 &smmu 0x4a0 0x20>,
+                <0x200 &smmu 0x4c0 0x20>;
+        iommu-map-mask = <0x031f>;
+};
+
 /* The RTC requires external oscillator. But on Aramda 80x0, the RTC clock
  * in CP master is not connected (by package) to the oscillator. So
  * disable it. However, the RTC clock in CP slave is connected to the
@@ -23,3 +31,31 @@
 &cp0_rtc {
         status = "disabled";
 };
+
+&cp0_sata0 {
+        iommus = <&smmu 0x444>;
+};
+
+&cp0_sdhci0 {
+        iommus = <&smmu 0x445>;
+};
+
+&cp0_usb3_0 {
+        iommus = <&smmu 0x440>;
+};
+
+&cp0_usb3_1 {
+        iommus = <&smmu 0x441>;
+};
+
+&cp1_sata0 {
+        iommus = <&smmu 0x454>;
+};
+
+&cp1_usb3_0 {
+        iommus = <&smmu 0x450>;
+};
+
+&cp1_usb3_1 {
+        iommus = <&smmu 0x451>;
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
index 81967e2..2ee35fa 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-80x0.dtsi
@@ -19,44 +19,44 @@
 /*
  * 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_PCIEx_MEM_BASE(iface) (0xf6000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#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_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#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_PCIEx_MEM_BASE(iface) (0xfa000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#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_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#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 {
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
index 5985843..0cd8e7e 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-dual.dtsi
@@ -15,17 +15,47 @@
                 #address-cells = <1>;
                 #size-cells = <0>;
 
-                cpu@0 {
+                cpu0: cpu@0 {
                         device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
+                        compatible = "arm,cortex-a72";
                         reg = <0x000>;
                         enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 0>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2>;
                 };
-                cpu@1 {
+                cpu1: cpu@1 {
                         device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
+                        compatible = "arm,cortex-a72";
                         reg = <0x001>;
                         enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 0>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2>;
                 };
+
+                l2: l2-cache {
+                        compatible = "cache";
+                        cache-size = <0x80000>;
+                        cache-line-size = <64>;
+                        cache-sets = <512>;
+                };
+        };
+
+        thermal-zones {
+                /delete-node/ ap-thermal-cpu2;
+                /delete-node/ ap-thermal-cpu3;
         };
 };
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
index bae0ed9..3b48a13 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806-quad.dtsi
@@ -15,29 +15,79 @@
                 #address-cells = <1>;
                 #size-cells = <0>;
 
-                cpu@0 {
+                cpu0: cpu@0 {
                         device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
+                        compatible = "arm,cortex-a72";
                         reg = <0x000>;
                         enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 0>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_0>;
                 };
-                cpu@1 {
+                cpu1: cpu@1 {
                         device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
+                        compatible = "arm,cortex-a72";
                         reg = <0x001>;
                         enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 0>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_0>;
                 };
-                cpu@100 {
+                cpu2: cpu@100 {
                         device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
+                        compatible = "arm,cortex-a72";
                         reg = <0x100>;
                         enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 1>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_1>;
                 };
-                cpu@101 {
+                cpu3: cpu@101 {
                         device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
+                        compatible = "arm,cortex-a72";
                         reg = <0x101>;
                         enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 1>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_1>;
+                };
+
+                l2_0: l2-cache0 {
+                        compatible = "cache";
+                        cache-size = <0x80000>;
+                        cache-line-size = <64>;
+                        cache-sets = <512>;
+                };
+
+                l2_1: l2-cache1 {
+                        compatible = "cache";
+                        cache-size = <0x80000>;
+                        cache-line-size = <64>;
+                        cache-sets = <512>;
                 };
         };
 };
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
index 66124bf..59641de 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap806.dtsi
@@ -5,260 +5,26 @@
  * Device Tree file for Marvell Armada AP806.
  */
 
-#define IRQ_TYPE_LEVEL_HIGH      (1 << 2)
-#define IRQ_TYPE_LEVEL_LOW       (1 << 3)
-
-#define GIC_SPI                  0
-#define GIC_PPI                  1
-
-#define GIC_CPU_MASK_RAW(x)      ((x) << 8)
-#define GIC_CPU_MASK_SIMPLE(num) GIC_CPU_MASK_RAW((1 << (num)) - 1)
-
-/dts-v1/;
+#define AP_NAME                ap806
+#include "armada-ap80x.dtsi"
 
 / {
         model = "Marvell Armada AP806";
         compatible = "marvell,armada-ap806";
-        #address-cells = <2>;
-        #size-cells = <2>;
-
-        aliases {
-                serial0 = &uart0;
-                serial1 = &uart1;
-                gpio0 = &ap_gpio;
-                spi0 = &spi0;
-        };
+};
 
-        psci {
-                compatible = "arm,psci-0.2";
-                method = "smc";
+&ap_syscon0 {
+        ap_clk: clock {
+                compatible = "marvell,ap806-clock";
+                #clock-cells = <1>;
         };
+};
 
-        ap806 {
-                #address-cells = <2>;
-                #size-cells = <2>;
-                compatible = "simple-bus";
-                interrupt-parent = <&gic>;
-                ranges;
-
-                config-space@f0000000 {
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-                        compatible = "simple-bus";
-                        ranges = <0x0 0x0 0xf0000000 0x1000000>;
-
-                        gic: interrupt-controller@210000 {
-                                compatible = "arm,gic-400";
-                                #interrupt-cells = <3>;
-                                #address-cells = <1>;
-                                #size-cells = <1>;
-                                ranges;
-                                interrupt-controller;
-                                interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
-                                reg = <0x210000 0x10000>,
-                                      <0x220000 0x20000>,
-                                      <0x240000 0x20000>,
-                                      <0x260000 0x20000>;
-
-                                gic_v2m0: v2m@280000 {
-                                        compatible = "arm,gic-v2m-frame";
-                                        msi-controller;
-                                        reg = <0x280000 0x1000>;
-                                        arm,msi-base-spi = <160>;
-                                        arm,msi-num-spis = <32>;
-                                };
-                                gic_v2m1: v2m@290000 {
-                                        compatible = "arm,gic-v2m-frame";
-                                        msi-controller;
-                                        reg = <0x290000 0x1000>;
-                                        arm,msi-base-spi = <192>;
-                                        arm,msi-num-spis = <32>;
-                                };
-                                gic_v2m2: v2m@2a0000 {
-                                        compatible = "arm,gic-v2m-frame";
-                                        msi-controller;
-                                        reg = <0x2a0000 0x1000>;
-                                        arm,msi-base-spi = <224>;
-                                        arm,msi-num-spis = <32>;
-                                };
-                                gic_v2m3: v2m@2b0000 {
-                                        compatible = "arm,gic-v2m-frame";
-                                        msi-controller;
-                                        reg = <0x2b0000 0x1000>;
-                                        arm,msi-base-spi = <256>;
-                                        arm,msi-num-spis = <32>;
-                                };
-                        };
-
-                        timer {
-                                compatible = "arm,armv8-timer";
-                                interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                                             <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                                             <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                                             <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
-                        };
-
-                        pmu {
-                                compatible = "arm,cortex-a72-pmu";
-                                interrupt-parent = <&pic>;
-                                interrupts = <17>;
-                        };
-
-                        odmi: odmi@300000 {
-                                compatible = "marvell,odmi-controller";
-                                interrupt-controller;
-                                msi-controller;
-                                marvell,odmi-frames = <4>;
-                                reg = <0x300000 0x4000>,
-                                      <0x304000 0x4000>,
-                                      <0x308000 0x4000>,
-                                      <0x30C000 0x4000>;
-                                marvell,spi-base = <128>, <136>, <144>, <152>;
-                        };
-
-                        gicp: gicp@3f0040 {
-                                compatible = "marvell,ap806-gicp";
-                                reg = <0x3f0040 0x10>;
-                                marvell,spi-ranges = <64 64>, <288 64>;
-                                msi-controller;
-                        };
-
-                        pic: interrupt-controller@3f0100 {
-                                compatible = "marvell,armada-8k-pic";
-                                reg = <0x3f0100 0x10>;
-                                #interrupt-cells = <1>;
-                                interrupt-controller;
-                                interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
-                        };
-
-                        xor@400000 {
-                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                                reg = <0x400000 0x1000>,
-                                      <0x410000 0x1000>;
-                                msi-parent = <&gic_v2m0>;
-                                clocks = <&ap_clk 3>;
-                                dma-coherent;
-                        };
-
-                        xor@420000 {
-                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                                reg = <0x420000 0x1000>,
-                                      <0x430000 0x1000>;
-                                msi-parent = <&gic_v2m0>;
-                                clocks = <&ap_clk 3>;
-                                dma-coherent;
-                        };
-
-                        xor@440000 {
-                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                                reg = <0x440000 0x1000>,
-                                      <0x450000 0x1000>;
-                                msi-parent = <&gic_v2m0>;
-                                clocks = <&ap_clk 3>;
-                                dma-coherent;
-                        };
-
-                        xor@460000 {
-                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                                reg = <0x460000 0x1000>,
-                                      <0x470000 0x1000>;
-                                msi-parent = <&gic_v2m0>;
-                                clocks = <&ap_clk 3>;
-                                dma-coherent;
-                        };
-
-                        spi0: spi@510600 {
-                                compatible = "marvell,armada-380-spi";
-                                reg = <0x510600 0x50>;
-                                #address-cells = <1>;
-                                #size-cells = <0>;
-                                interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
-                                clocks = <&ap_clk 3>;
-                                status = "disabled";
-                        };
-
-                        i2c0: i2c@511000 {
-                                compatible = "marvell,mv78230-i2c";
-                                reg = <0x511000 0x20>;
-                                #address-cells = <1>;
-                                #size-cells = <0>;
-                                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
-                                timeout-ms = <1000>;
-                                clocks = <&ap_clk 3>;
-                                status = "disabled";
-                        };
-
-                        uart0: serial@512000 {
-                                compatible = "snps,dw-apb-uart";
-                                reg = <0x512000 0x100>;
-                                reg-shift = <2>;
-                                interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
-                                reg-io-width = <1>;
-                                clocks = <&ap_clk 3>;
-                                status = "disabled";
-                        };
-
-                        uart1: serial@512100 {
-                                compatible = "snps,dw-apb-uart";
-                                reg = <0x512100 0x100>;
-                                reg-shift = <2>;
-                                interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
-                                reg-io-width = <1>;
-                                clocks = <&ap_clk 3>;
-                                status = "disabled";
-
-                        };
-
-                        watchdog: watchdog@610000 {
-                                compatible = "arm,sbsa-gwdt";
-                                reg = <0x610000 0x1000>, <0x600000 0x1000>;
-                                interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
-                        };
-
-                        ap_sdhci0: sdhci@6e0000 {
-                                compatible = "marvell,armada-ap806-sdhci";
-                                reg = <0x6e0000 0x300>;
-                                interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
-                                clock-names = "core";
-                                clocks = <&ap_clk 4>;
-                                dma-coherent;
-                                marvell,xenon-phy-slow-mode;
-                                status = "disabled";
-                        };
-
-                        ap_syscon: system-controller@6f4000 {
-                                compatible = "syscon", "simple-mfd";
-                                reg = <0x6f4000 0x2000>;
-
-                                ap_clk: clock {
-                                        compatible = "marvell,ap806-clock";
-                                        #clock-cells = <1>;
-                                };
-
-                                ap_pinctrl: pinctrl {
-                                        compatible = "marvell,ap806-pinctrl";
-
-                                        uart0_pins: uart0-pins {
-                                                marvell,pins = "mpp11", "mpp19";
-                                                marvell,function = "uart0";
-                                        };
-                                };
-
-                                ap_gpio: gpio@1040 {
-                                        compatible = "marvell,armada-8k-gpio";
-                                        offset = <0x1040>;
-                                        ngpios = <20>;
-                                        gpio-controller;
-                                        #gpio-cells = <2>;
-                                        gpio-ranges = <&ap_pinctrl 0 0 20>;
-                                };
-                        };
-
-                        ap_thermal: thermal@6f808c {
-                                compatible = "marvell,armada-ap806-thermal";
-                                reg = <0x6f808c 0x4>,
-                                      <0x6f8084 0x8>;
-                        };
-                };
+&ap_syscon1 {
+        cpu_clk: clock-cpu@278 {
+                compatible = "marvell,ap806-cpu-clock";
+                clocks = <&ap_clk 0>, <&ap_clk 1>;
+                #clock-cells = <1>;
+                reg = <0x278 0xa30>;
         };
 };
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807-quad.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807-quad.dtsi
new file mode 100644
index 0000000..6222569
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807-quad.dtsi
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Marvell Armada AP807 Quad
+ *
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ */
+
+#include "armada-ap807.dtsi"
+
+/ {
+        model = "Marvell Armada AP807 Quad";
+        compatible = "marvell,armada-ap807-quad", "marvell,armada-ap807";
+
+        cpus {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                cpu0: cpu@0 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72";
+                        reg = <0x000>;
+                        enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 0>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_0>;
+                };
+                cpu1: cpu@1 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72";
+                        reg = <0x001>;
+                        enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 0>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_0>;
+                };
+                cpu2: cpu@100 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72";
+                        reg = <0x100>;
+                        enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 1>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_1>;
+                };
+                cpu3: cpu@101 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72";
+                        reg = <0x101>;
+                        enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 1>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_1>;
+                };
+
+                l2_0: l2-cache0 {
+                        compatible = "cache";
+                        cache-size = <0x80000>;
+                        cache-line-size = <64>;
+                        cache-sets = <512>;
+                };
+
+                l2_1: l2-cache1 {
+                        compatible = "cache";
+                        cache-size = <0x80000>;
+                        cache-line-size = <64>;
+                        cache-sets = <512>;
+                };
+        };
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807.dtsi
new file mode 100644
index 0000000..b42dc3a
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap807.dtsi
@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Marvell Armada AP807
+ *
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ */
+
+#define AP_NAME                ap807
+#include "armada-ap80x.dtsi"
+
+/ {
+        model = "Marvell Armada AP807";
+        compatible = "marvell,armada-ap807";
+};
+
+&ap_syscon0 {
+        ap_clk: clock {
+                compatible = "marvell,ap807-clock";
+                #clock-cells = <1>;
+        };
+};
+
+&ap_syscon1 {
+        cpu_clk: clock-cpu {
+                compatible = "marvell,ap807-cpu-clock";
+                clocks = <&ap_clk 0>, <&ap_clk 1>;
+                #clock-cells = <1>;
+        };
+};
+
+&ap_sdhci0 {
+        compatible = "marvell,armada-ap807-sdhci";
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap80x.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap80x.dtsi
new file mode 100644
index 0000000..c2a7cef
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-ap80x.dtsi
@@ -0,0 +1,470 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada AP80x.
+ */
+
+#define IRQ_TYPE_LEVEL_HIGH      (1 << 2)
+#define IRQ_TYPE_LEVEL_LOW       (1 << 3)
+
+#define GIC_SPI                  0
+#define GIC_PPI                  1
+
+#define GIC_CPU_MASK_RAW(x)      ((x) << 8)
+#define GIC_CPU_MASK_SIMPLE(num) GIC_CPU_MASK_RAW((1 << (num)) - 1)
+
+#define GPIO_ACTIVE_HIGH 0
+#define GPIO_ACTIVE_LOW  1
+
+/dts-v1/;
+
+/ {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        aliases {
+                serial0 = &uart0;
+                serial1 = &uart1;
+                gpio0 = &ap_gpio;
+                spi0 = &spi0;
+        };
+
+        psci {
+                compatible = "arm,psci-0.2";
+                method = "smc";
+        };
+
+        reserved-memory {
+                #address-cells = <2>;
+                #size-cells = <2>;
+                ranges;
+
+                /*
+                 * This area matches the mapping done with a
+                 * mainline U-Boot, and should be updated by the
+                 * bootloader.
+                 */
+
+                psci-area@4000000 {
+                        reg = <0x0 0x4000000 0x0 0x200000>;
+                        no-map;
+                };
+        };
+
+        AP_NAME {
+                #address-cells = <2>;
+                #size-cells = <2>;
+                compatible = "simple-bus";
+                interrupt-parent = <&gic>;
+                ranges;
+
+                config-space@f0000000 {
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+                        compatible = "simple-bus";
+                        ranges = <0x0 0x0 0xf0000000 0x1000000>;
+
+                        smmu: iommu@5000000 {
+                                compatible = "marvell,ap806-smmu-500", "arm,mmu-500";
+                                reg = <0x100000 0x100000>;
+                                dma-coherent;
+                                #iommu-cells = <1>;
+                                #global-interrupts = <1>;
+                                interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                                status = "disabled";
+                        };
+
+                        gic: interrupt-controller@210000 {
+                                compatible = "arm,gic-400";
+                                #interrupt-cells = <3>;
+                                #address-cells = <1>;
+                                #size-cells = <1>;
+                                ranges;
+                                interrupt-controller;
+                                interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+                                reg = <0x210000 0x10000>,
+                                      <0x220000 0x20000>,
+                                      <0x240000 0x20000>,
+                                      <0x260000 0x20000>;
+
+                                gic_v2m0: v2m@280000 {
+                                        compatible = "arm,gic-v2m-frame";
+                                        msi-controller;
+                                        reg = <0x280000 0x1000>;
+                                        arm,msi-base-spi = <160>;
+                                        arm,msi-num-spis = <32>;
+                                };
+                                gic_v2m1: v2m@290000 {
+                                        compatible = "arm,gic-v2m-frame";
+                                        msi-controller;
+                                        reg = <0x290000 0x1000>;
+                                        arm,msi-base-spi = <192>;
+                                        arm,msi-num-spis = <32>;
+                                };
+                                gic_v2m2: v2m@2a0000 {
+                                        compatible = "arm,gic-v2m-frame";
+                                        msi-controller;
+                                        reg = <0x2a0000 0x1000>;
+                                        arm,msi-base-spi = <224>;
+                                        arm,msi-num-spis = <32>;
+                                };
+                                gic_v2m3: v2m@2b0000 {
+                                        compatible = "arm,gic-v2m-frame";
+                                        msi-controller;
+                                        reg = <0x2b0000 0x1000>;
+                                        arm,msi-base-spi = <256>;
+                                        arm,msi-num-spis = <32>;
+                                };
+                        };
+
+                        timer {
+                                compatible = "arm,armv8-timer";
+                                interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                                             <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                                             <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                                             <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+                        };
+
+                        pmu {
+                                compatible = "arm,cortex-a72-pmu";
+                                interrupt-parent = <&pic>;
+                                interrupts = <17>;
+                        };
+
+                        odmi: odmi@300000 {
+                                compatible = "marvell,odmi-controller";
+                                interrupt-controller;
+                                msi-controller;
+                                marvell,odmi-frames = <4>;
+                                reg = <0x300000 0x4000>,
+                                      <0x304000 0x4000>,
+                                      <0x308000 0x4000>,
+                                      <0x30C000 0x4000>;
+                                marvell,spi-base = <128>, <136>, <144>, <152>;
+                        };
+
+                        gicp: gicp@3f0040 {
+                                compatible = "marvell,ap806-gicp";
+                                reg = <0x3f0040 0x10>;
+                                marvell,spi-ranges = <64 64>, <288 64>;
+                                msi-controller;
+                        };
+
+                        pic: interrupt-controller@3f0100 {
+                                compatible = "marvell,armada-8k-pic";
+                                reg = <0x3f0100 0x10>;
+                                #interrupt-cells = <1>;
+                                interrupt-controller;
+                                interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
+                        };
+
+                        sei: interrupt-controller@3f0200 {
+                                compatible = "marvell,ap806-sei";
+                                reg = <0x3f0200 0x40>;
+                                interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+                                #interrupt-cells = <1>;
+                                interrupt-controller;
+                                msi-controller;
+                        };
+
+                        xor@400000 {
+                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                                reg = <0x400000 0x1000>,
+                                      <0x410000 0x1000>;
+                                msi-parent = <&gic_v2m0>;
+                                clocks = <&ap_clk 3>;
+                                dma-coherent;
+                        };
+
+                        xor@420000 {
+                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                                reg = <0x420000 0x1000>,
+                                      <0x430000 0x1000>;
+                                msi-parent = <&gic_v2m0>;
+                                clocks = <&ap_clk 3>;
+                                dma-coherent;
+                        };
+
+                        xor@440000 {
+                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                                reg = <0x440000 0x1000>,
+                                      <0x450000 0x1000>;
+                                msi-parent = <&gic_v2m0>;
+                                clocks = <&ap_clk 3>;
+                                dma-coherent;
+                        };
+
+                        xor@460000 {
+                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                                reg = <0x460000 0x1000>,
+                                      <0x470000 0x1000>;
+                                msi-parent = <&gic_v2m0>;
+                                clocks = <&ap_clk 3>;
+                                dma-coherent;
+                        };
+
+                        spi0: spi@510600 {
+                                compatible = "marvell,armada-380-spi";
+                                reg = <0x510600 0x50>;
+                                #address-cells = <1>;
+                                #size-cells = <0>;
+                                interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
+                                clocks = <&ap_clk 3>;
+                                status = "disabled";
+                        };
+
+                        i2c0: i2c@511000 {
+                                compatible = "marvell,mv78230-i2c";
+                                reg = <0x511000 0x20>;
+                                #address-cells = <1>;
+                                #size-cells = <0>;
+                                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
+                                clocks = <&ap_clk 3>;
+                                status = "disabled";
+                        };
+
+                        uart0: serial@512000 {
+                                compatible = "snps,dw-apb-uart";
+                                reg = <0x512000 0x100>;
+                                reg-shift = <2>;
+                                interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+                                reg-io-width = <1>;
+                                clocks = <&ap_clk 3>;
+                                status = "disabled";
+                        };
+
+                        uart1: serial@512100 {
+                                compatible = "snps,dw-apb-uart";
+                                reg = <0x512100 0x100>;
+                                reg-shift = <2>;
+                                interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                                reg-io-width = <1>;
+                                clocks = <&ap_clk 3>;
+                                status = "disabled";
+
+                        };
+
+                        watchdog: watchdog@610000 {
+                                compatible = "arm,sbsa-gwdt";
+                                reg = <0x610000 0x1000>, <0x600000 0x1000>;
+                                interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                        };
+
+                        ap_sdhci0: sdhci@6e0000 {
+                                compatible = "marvell,armada-ap806-sdhci";
+                                reg = <0x6e0000 0x300>;
+                                interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                                clock-names = "core";
+                                clocks = <&ap_clk 4>;
+                                dma-coherent;
+                                marvell,xenon-phy-slow-mode;
+                                status = "disabled";
+                        };
+
+                        ap_syscon0: system-controller@6f4000 {
+                                compatible = "syscon", "simple-mfd";
+                                reg = <0x6f4000 0x2000>;
+
+                                ap_pinctrl: pinctrl {
+                                        compatible = "marvell,ap806-pinctrl";
+
+                                        uart0_pins: uart0-pins {
+                                                marvell,pins = "mpp11", "mpp19";
+                                                marvell,function = "uart0";
+                                        };
+                                };
+
+                                ap_gpio: gpio@1040 {
+                                        compatible = "marvell,armada-8k-gpio";
+                                        offset = <0x1040>;
+                                        ngpios = <20>;
+                                        gpio-controller;
+                                        #gpio-cells = <2>;
+                                        gpio-ranges = <&ap_pinctrl 0 0 20>;
+                                };
+                        };
+
+                        ap_syscon1: system-controller@6f8000 {
+                                compatible = "syscon", "simple-mfd";
+                                reg = <0x6f8000 0x1000>;
+                                #address-cells = <1>;
+                                #size-cells = <1>;
+
+                                ap_thermal: thermal-sensor@80 {
+                                        compatible = "marvell,armada-ap806-thermal";
+                                        reg = <0x80 0x10>;
+                                        interrupt-parent = <&sei>;
+                                        interrupts = <18>;
+                                        #thermal-sensor-cells = <1>;
+                                };
+                        };
+                };
+        };
+
+        /*
+         * The thermal IP features one internal sensor plus, if applicable, one
+         * remote channel wired to one sensor per CPU.
+         *
+         * Only one thermal zone per AP/CP may trigger interrupts at a time, the
+         * first one that will have a critical trip point will be chosen.
+         */
+        thermal-zones {
+                ap_thermal_ic: ap-thermal-ic {
+                        polling-delay-passive = <0>; /* Interrupt driven */
+                        polling-delay = <0>; /* Interrupt driven */
+
+                        thermal-sensors = <&ap_thermal 0>;
+
+                        trips {
+                                ap_crit: ap-crit {
+                                        temperature = <100000>; /* mC degrees */
+                                        hysteresis = <2000>; /* mC degrees */
+                                        type = "critical";
+                                };
+                        };
+
+                        cooling-maps { };
+                };
+
+                ap_thermal_cpu0: ap-thermal-cpu0 {
+                        polling-delay-passive = <1000>;
+                        polling-delay = <1000>;
+
+                        thermal-sensors = <&ap_thermal 1>;
+
+                        trips {
+                                cpu0_hot: cpu0-hot {
+                                        temperature = <85000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                                cpu0_emerg: cpu0-emerg {
+                                        temperature = <95000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                        };
+
+                        cooling-maps {
+                                map0_hot: map0-hot {
+                                        trip = <&cpu0_hot>;
+                                        cooling-device = <&cpu0 1 2>,
+                                                <&cpu1 1 2>;
+                                };
+                                map0_emerg: map0-ermerg {
+                                        trip = <&cpu0_emerg>;
+                                        cooling-device = <&cpu0 3 3>,
+                                                <&cpu1 3 3>;
+                                };
+                        };
+                };
+
+                ap_thermal_cpu1: ap-thermal-cpu1 {
+                        polling-delay-passive = <1000>;
+                        polling-delay = <1000>;
+
+                        thermal-sensors = <&ap_thermal 2>;
+
+                        trips {
+                                cpu1_hot: cpu1-hot {
+                                        temperature = <85000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                                cpu1_emerg: cpu1-emerg {
+                                        temperature = <95000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                        };
+
+                        cooling-maps {
+                                map1_hot: map1-hot {
+                                        trip = <&cpu1_hot>;
+                                        cooling-device = <&cpu0 1 2>,
+                                                <&cpu1 1 2>;
+                                };
+                                map1_emerg: map1-emerg {
+                                        trip = <&cpu1_emerg>;
+                                        cooling-device = <&cpu0 3 3>,
+                                                <&cpu1 3 3>;
+                                };
+                        };
+                };
+
+                ap_thermal_cpu2: ap-thermal-cpu2 {
+                        polling-delay-passive = <1000>;
+                        polling-delay = <1000>;
+
+                        thermal-sensors = <&ap_thermal 3>;
+
+                        trips {
+                                cpu2_hot: cpu2-hot {
+                                        temperature = <85000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                                cpu2_emerg: cpu2-emerg {
+                                        temperature = <95000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                        };
+
+                        cooling-maps {
+                                map2_hot: map2-hot {
+                                        trip = <&cpu2_hot>;
+                                        cooling-device = <&cpu2 1 2>,
+                                                <&cpu3 1 2>;
+                                };
+                                map2_emerg: map2-emerg {
+                                        trip = <&cpu2_emerg>;
+                                        cooling-device = <&cpu2 3 3>,
+                                                <&cpu3 3 3>;
+                                };
+                        };
+                };
+
+                ap_thermal_cpu3: ap-thermal-cpu3 {
+                        polling-delay-passive = <1000>;
+                        polling-delay = <1000>;
+
+                        thermal-sensors = <&ap_thermal 4>;
+
+                        trips {
+                                cpu3_hot: cpu3-hot {
+                                        temperature = <85000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                                cpu3_emerg: cpu3-emerg {
+                                        temperature = <95000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                        };
+
+                        cooling-maps {
+                                map3_hot: map3-bhot {
+                                        trip = <&cpu3_hot>;
+                                        cooling-device = <&cpu2 1 2>,
+                                                <&cpu3 1 2>;
+                                };
+                                map3_emerg: map3-emerg {
+                                        trip = <&cpu3_emerg>;
+                                        cooling-device = <&cpu2 3 3>,
+                                                <&cpu3 3 3>;
+                                };
+                        };
+                };
+        };
+};
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
index 8b610fd..f002499 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-common.dtsi
@@ -6,5 +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 CP11X_LABEL(name) EVALUATOR(CP11X_NAME, EVALUATOR(_, name))
+#define CP11X_NODE_NAME(name) EVALUATOR(CP11X_NAME, EVALUATOR(-, name))
 #define ADDRESSIFY(addr) EVALUATOR(0x, addr)
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi
index 5e8e524..5799e98 100644
--- a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp110.dtsi
@@ -1,560 +1,12 @@
 // 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 "armada-common.dtsi"
+#define CP11X_TYPE cp110
 
-#define ICU_GRP_NSR             0x0
-#define ICU_GRP_SR              0x1
-#define ICU_GRP_SEI             0x4
-#define ICU_GRP_REI             0x5
+#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 { };
-};
-
-&CP110_NAME {
-        #address-cells = <2>;
-        #size-cells = <2>;
-        compatible = "simple-bus";
-        interrupt-parent = <&CP110_LABEL(icu)>;
-        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(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
-                                 <&CP110_LABEL(ppv2_clk)>, <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        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 = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 43 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 47 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 51 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 55 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 129 IRQ_TYPE_LEVEL_HIGH>;
-                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
-                                        "tx-cpu3", "rx-shared", "link";
-                                port-id = <0>;
-                                gop-port-id = <0>;
-                                status = "disabled";
-                        };
-
-                        CP110_LABEL(eth1): eth1 {
-                                interrupts = <ICU_GRP_NSR 40 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 44 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 48 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 52 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 56 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 128 IRQ_TYPE_LEVEL_HIGH>;
-                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
-                                        "tx-cpu3", "rx-shared", "link";
-                                port-id = <1>;
-                                gop-port-id = <2>;
-                                status = "disabled";
-                        };
-
-                        CP110_LABEL(eth2): eth2 {
-                                interrupts = <ICU_GRP_NSR 41 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 45 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 49 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 53 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 57 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 127 IRQ_TYPE_LEVEL_HIGH>;
-                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
-                                        "tx-cpu3", "rx-shared", "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)>;
-                        #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(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
-                                 <&CP110_LABEL(core_clk)>, <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(xmdio): mdio@12a600 {
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        compatible = "marvell,xmdio";
-                        reg = <0x12a600 0x10>;
-                        clocks = <&CP110_LABEL(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(icu): interrupt-controller@1e0000 {
-                        compatible = "marvell,cp110-icu";
-                        reg = <0x1e0000 0x440>;
-                        #interrupt-cells = <3>;
-                        interrupt-controller;
-                        msi-parent = <&gicp>;
-                };
-
-                CP110_LABEL(rtc): rtc@284000 {
-                        compatible = "marvell,armada-8k-rtc";
-                        reg = <0x284000 0x20>, <0x284080 0x24>;
-                        reg-names = "rtc", "rtc-soc";
-                        interrupts = <ICU_GRP_NSR 77 IRQ_TYPE_LEVEL_HIGH>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(thermal): thermal@400078 {
-                        compatible = "marvell,armada-cp110-thermal";
-                        reg = <0x400078 0x4>,
-                        <0x400070 0x8>;
-                };
-
-                CP110_LABEL(syscon0): system-controller@440000 {
-                        compatible = "syscon", "simple-mfd";
-                        reg = <0x440000 0x2000>;
-
-                        CP110_LABEL(clk): clock {
-                                compatible = "marvell,cp110-clock";
-                                status = "disabled";
-                                #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 = <ICU_GRP_NSR 86 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 85 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 84 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 83 IRQ_TYPE_LEVEL_HIGH>;
-                                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 = <ICU_GRP_NSR 82 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 81 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 80 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 79 IRQ_TYPE_LEVEL_HIGH>;
-                                status = "disabled";
-                        };
-                };
-
-                CP110_LABEL(usb3_0): usb3@500000 {
-                        compatible = "marvell,armada-8k-xhci",
-                        "generic-xhci";
-                        reg = <0x500000 0x4000>;
-                        dma-coherent;
-                        interrupts = <ICU_GRP_NSR 106 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(usb3_1): usb3@510000 {
-                        compatible = "marvell,armada-8k-xhci",
-                        "generic-xhci";
-                        reg = <0x510000 0x4000>;
-                        dma-coherent;
-                        interrupts = <ICU_GRP_NSR 105 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(sata0): sata@540000 {
-                        compatible = "marvell,armada-8k-ahci",
-                        "generic-ahci";
-                        reg = <0x540000 0x30000>;
-                        dma-coherent;
-                        interrupts = <ICU_GRP_NSR 107 IRQ_TYPE_LEVEL_HIGH>;
-                        clocks = <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                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(core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                };
-
-                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(core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                };
-
-                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(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(i2c0): i2c@701000 {
-                        compatible = "marvell,mv78230-i2c";
-                        reg = <0x701000 0x20>;
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        interrupts = <ICU_GRP_NSR 120 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(i2c1): i2c@701100 {
-                        compatible = "marvell,mv78230-i2c";
-                        reg = <0x701100 0x20>;
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        interrupts = <ICU_GRP_NSR 121 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart0): serial@702000 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702000 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 122 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart1): serial@702100 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702100 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 123 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart2): serial@702200 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702200 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 124 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart3): serial@702300 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702300 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 125 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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 = <ICU_GRP_NSR 115 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(nand_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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 = <ICU_GRP_NSR 95 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(x2core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "okay";
-                };
-
-                CP110_LABEL(sdhci0): sdhci@780000 {
-                        compatible = "marvell,armada-cp110-sdhci";
-                        reg = <0x780000 0x300>;
-                        interrupts = <ICU_GRP_NSR 27 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "axi";
-                        clocks = <&CP110_LABEL(sdio_clk)>, <&CP110_LABEL(core_clk)>;
-                        dma-coherent;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(crypto): crypto@800000 {
-                        compatible = "inside-secure,safexcel-eip197";
-                        reg = <0x800000 0x200000>;
-                        interrupts = <ICU_GRP_NSR 87 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 88 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 89 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 90 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 91 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 92 IRQ_TYPE_LEVEL_HIGH>;
-                        interrupt-names = "mem", "ring0", "ring1",
-                                "ring2", "ring3", "eip";
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(x2core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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) ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
-                interrupts = <ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
-                num-lanes = <1>;
-                clock-names = "core", "reg";
-                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
-                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) ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
-                interrupts = <ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
-
-                num-lanes = <1>;
-                clock-names = "core", "reg";
-                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
-                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) ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
-                interrupts = <ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
-
-                num-lanes = <1>;
-                clock-names = "core", "reg";
-                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
-                status = "disabled";
-        };
-
-        /* 1 GHz fixed main PLL */
-        CP110_LABEL(mainpll): CP110_LABEL(mainpll) {
-                compatible = "fixed-clock";
-                #clock-cells = <0>;
-                clock-frequency = <1000000000>;
-        };
-
-        CP110_LABEL(x2core_clk): CP110_LABEL(x2core_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <2>;
-        };
-
-        CP110_LABEL(core_clk): CP110_LABEL(core_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <2>;
-        };
-
-        CP110_LABEL(sdio_clk): CP110_LABEL(sdio_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <2>;
-                clock-div = <5>;
-        };
-
-        CP110_LABEL(nand_clk): CP110_LABEL(nand_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <2>;
-                clock-div = <5>;
-        };
-
-        CP110_LABEL(ppv2_clk): CP110_LABEL(ppv2_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <3>;
-        };
-
-        CP110_LABEL(slow_io_clk): CP110_LABEL(slow_io_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <4>;
-        };
-};
+#undef CP11X_TYPE
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp115.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp115.dtsi
new file mode 100644
index 0000000..f57860f
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp115.dtsi
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada CP115.
+ */
+
+#define CP11X_TYPE cp115
+
+#include "armada-cp11x.dtsi"
+
+#undef CP11X_TYPE
diff --git a/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp11x.dtsi b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp11x.dtsi
new file mode 100644
index 0000000..7f26842
--- /dev/null
+++ b/Silicon/Marvell/Armada7k8k/DeviceTree/armada-cp11x.dtsi
@@ -0,0 +1,627 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada CP11x.
+ */
+
+#define ICU_GRP_NSR             0x0
+#define ICU_GRP_SR              0x1
+#define ICU_GRP_SEI             0x4
+#define ICU_GRP_REI             0x5
+
+#include "armada-common.dtsi"
+
+#define CP11X_PCIEx_CONF_BASE(iface)        (CP11X_PCIEx_MEM_BASE(iface) + CP11X_PCIEx_MEM_SIZE(iface))
+
+/ {
+        /*
+         * 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(ppv2_clk)>, <&CP11X_LABEL(ppv2_clk)>,
+                                 <&CP11X_LABEL(ppv2_clk)>, <&CP11X_LABEL(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        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(ppv2_clk)>, <&CP11X_LABEL(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        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(ppv2_clk)>, <&CP11X_LABEL(ppv2_clk)>,
+                                 <&CP11X_LABEL(core_clk)>, <&CP11X_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP11X_LABEL(xmdio): mdio@12a600 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        compatible = "marvell,xmdio";
+                        reg = <0x12a600 0x10>;
+                        clocks = <&CP11X_LABEL(ppv2_clk)>, <&CP11X_LABEL(ppv2_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        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>;
+                        status = "disabled";
+                };
+
+                CP11X_LABEL(syscon0): system-controller@440000 {
+                        compatible = "syscon", "simple-mfd";
+                        reg = <0x440000 0x2000>;
+
+                        CP11X_LABEL(clk): clock {
+                                compatible = "marvell,cp110-clock";
+                                status = "disabled";
+                                #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): usb@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(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP11X_LABEL(usb3_1): usb@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(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP11X_LABEL(sata0): sata@540000 {
+                        compatible = "marvell,armada-8k-ahci";
+                        reg = <0x540000 0x30000>;
+                        dma-coherent;
+                        clocks = <&CP11X_LABEL(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        status = "disabled";
+
+                        sata-port@0 {
+                                interrupts = <109 IRQ_TYPE_LEVEL_HIGH>;
+                                reg = <0>;
+                        };
+
+                        sata-port@1 {
+                                interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
+                                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(core_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                };
+
+                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(core_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                };
+
+                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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(nand_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(x2core_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(sdio_clk)>, <&CP11X_LABEL(core_clk)>;
+                        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(x2core_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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>;
+                /* non-prefetchable memory */
+                ranges = <0x82000000 0 CP11X_PCIEx_MEM_BASE(0) 0  CP11X_PCIEx_MEM_BASE(0) 0 CP11X_PCIEx_MEM_SIZE(0)>;
+                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(core_clk)>, <&CP11X_LABEL(x2core_clk)>;
+                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>;
+                /* non-prefetchable memory */
+                ranges = <0x82000000 0 CP11X_PCIEx_MEM_BASE(1) 0  CP11X_PCIEx_MEM_BASE(1) 0 CP11X_PCIEx_MEM_SIZE(1)>;
+                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(core_clk)>, <&CP11X_LABEL(x2core_clk)>;
+                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>;
+                /* non-prefetchable memory */
+                ranges = <0x82000000 0 CP11X_PCIEx_MEM_BASE(2) 0  CP11X_PCIEx_MEM_BASE(2) 0 CP11X_PCIEx_MEM_SIZE(2)>;
+                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(core_clk)>, <&CP11X_LABEL(x2core_clk)>;
+                status = "disabled";
+        };
+
+        /* 1 GHz fixed main PLL */
+        CP11X_LABEL(mainpll): CP11X_LABEL(mainpll) {
+                compatible = "fixed-clock";
+                #clock-cells = <0>;
+                clock-frequency = <1000000000>;
+        };
+
+        CP11X_LABEL(x2core_clk): CP11X_LABEL(x2core_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <2>;
+        };
+
+        CP11X_LABEL(core_clk): CP11X_LABEL(core_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <2>;
+        };
+
+        CP11X_LABEL(sdio_clk): CP11X_LABEL(sdio_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <2>;
+                clock-div = <5>;
+        };
+
+        CP11X_LABEL(nand_clk): CP11X_LABEL(nand_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <2>;
+                clock-div = <5>;
+        };
+
+        CP11X_LABEL(ppv2_clk): CP11X_LABEL(ppv2_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <3>;
+        };
+
+        CP11X_LABEL(slow_io_clk): CP11X_LABEL(slow_io_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <4>;
+        };
+};
-- 
2.29.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [edk2-non-osi PATCH 4/4] Marvell/OcteonTx: Update device trees
  2021-03-18 19:57 [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Marcin Wojtas
                   ` (2 preceding siblings ...)
  2021-03-18 19:57 ` [edk2-non-osi PATCH 3/4] Marvell/Armada7k8k: Update device trees Marcin Wojtas
@ 2021-03-18 19:57 ` Marcin Wojtas
  2021-04-15 19:00 ` [edk2-devel] [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Ard Biesheuvel
  4 siblings, 0 replies; 7+ messages in thread
From: Marcin Wojtas @ 2021-03-18 19:57 UTC (permalink / raw)
  To: devel; +Cc: leif, ard.biesheuvel, mw, jaz, kostap, upstream, jon

This patch updates the OcteonTx device trees to the version
found in Linux v5.11. All previous modifications, compared
to vanilla files, are kept, i.e. disabled SPI flashes & RTC
and fixed-clock tree.

Signed-off-by: Marcin Wojtas <mw@semihalf.com>
---
 Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9130DbA.inf                            |   2 +-
 Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9131DbA.inf                            |   2 +-
 Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9132DbA.inf                            |   2 +-
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806-quad.dtsi                   |  43 --
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807-quad.dtsi                   |  93 +++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807.dtsi                        |  33 ++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/{armada-ap806.dtsi => armada-ap80x.dtsi} | 238 +++++++-
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-common.dtsi                       |   3 +-
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp110.dtsi                        | 552 -----------------
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp115.dtsi                        |  12 +
 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp11x.dtsi                        | 622 ++++++++++++++++++++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db-A.dts                          | 185 ------
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db.dts                            | 402 +++++++++++++
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130.dtsi                              | 143 +----
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db-A.dts                          |  29 -
 Silicon/Marvell/OcteonTx/DeviceTree/T91/{cn9131-db.dtsi => cn9131-db.dts}        |  93 +--
 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db-A.dts                          |  70 ---
 Silicon/Marvell/OcteonTx/DeviceTree/T91/{cn9132-db.dtsi => cn9132-db.dts}        | 126 +++-
 18 files changed, 1570 insertions(+), 1080 deletions(-)
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806-quad.dtsi
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807-quad.dtsi
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807.dtsi
 rename Silicon/Marvell/OcteonTx/DeviceTree/T91/{armada-ap806.dtsi => armada-ap80x.dtsi} (52%)
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp110.dtsi
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp115.dtsi
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp11x.dtsi
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db-A.dts
 create mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db.dts
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db-A.dts
 rename Silicon/Marvell/OcteonTx/DeviceTree/T91/{cn9131-db.dtsi => cn9131-db.dts} (66%)
 delete mode 100644 Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db-A.dts
 rename Silicon/Marvell/OcteonTx/DeviceTree/T91/{cn9132-db.dtsi => cn9132-db.dts} (54%)

diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9130DbA.inf b/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9130DbA.inf
index 091a5b4..dfc6c32 100644
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9130DbA.inf
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9130DbA.inf
@@ -16,7 +16,7 @@
   VERSION_STRING = 1.0
 
 [Sources]
-  cn9130-db-A.dts
+  cn9130-db.dts
 
 [Packages]
   MdePkg/MdePkg.dec
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9131DbA.inf b/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9131DbA.inf
index 8108197..f5c26a8 100644
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9131DbA.inf
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9131DbA.inf
@@ -16,7 +16,7 @@
   VERSION_STRING = 1.0
 
 [Sources]
-  cn9131-db-A.dts
+  cn9131-db.dts
 
 [Packages]
   MdePkg/MdePkg.dec
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9132DbA.inf b/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9132DbA.inf
index c9e3b04..2796541 100644
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9132DbA.inf
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/Cn9132DbA.inf
@@ -16,7 +16,7 @@
   VERSION_STRING = 1.0
 
 [Sources]
-  cn9132-db-A.dts
+  cn9132-db.dts
 
 [Packages]
   MdePkg/MdePkg.dec
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806-quad.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806-quad.dtsi
deleted file mode 100644
index bae0ed9..0000000
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806-quad.dtsi
+++ /dev/null
@@ -1,43 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for Marvell Armada AP806.
- */
-
-#include "armada-ap806.dtsi"
-
-/ {
-        model = "Marvell Armada AP806 Quad";
-        compatible = "marvell,armada-ap806-quad", "marvell,armada-ap806";
-
-        cpus {
-                #address-cells = <1>;
-                #size-cells = <0>;
-
-                cpu@0 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x000>;
-                        enable-method = "psci";
-                };
-                cpu@1 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x001>;
-                        enable-method = "psci";
-                };
-                cpu@100 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x100>;
-                        enable-method = "psci";
-                };
-                cpu@101 {
-                        device_type = "cpu";
-                        compatible = "arm,cortex-a72", "arm,armv8";
-                        reg = <0x101>;
-                        enable-method = "psci";
-                };
-        };
-};
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807-quad.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807-quad.dtsi
new file mode 100644
index 0000000..6222569
--- /dev/null
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807-quad.dtsi
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Marvell Armada AP807 Quad
+ *
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ */
+
+#include "armada-ap807.dtsi"
+
+/ {
+        model = "Marvell Armada AP807 Quad";
+        compatible = "marvell,armada-ap807-quad", "marvell,armada-ap807";
+
+        cpus {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                cpu0: cpu@0 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72";
+                        reg = <0x000>;
+                        enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 0>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_0>;
+                };
+                cpu1: cpu@1 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72";
+                        reg = <0x001>;
+                        enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 0>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_0>;
+                };
+                cpu2: cpu@100 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72";
+                        reg = <0x100>;
+                        enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 1>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_1>;
+                };
+                cpu3: cpu@101 {
+                        device_type = "cpu";
+                        compatible = "arm,cortex-a72";
+                        reg = <0x101>;
+                        enable-method = "psci";
+                        #cooling-cells = <2>;
+                        clocks = <&cpu_clk 1>;
+                        i-cache-size = <0xc000>;
+                        i-cache-line-size = <64>;
+                        i-cache-sets = <256>;
+                        d-cache-size = <0x8000>;
+                        d-cache-line-size = <64>;
+                        d-cache-sets = <256>;
+                        next-level-cache = <&l2_1>;
+                };
+
+                l2_0: l2-cache0 {
+                        compatible = "cache";
+                        cache-size = <0x80000>;
+                        cache-line-size = <64>;
+                        cache-sets = <512>;
+                };
+
+                l2_1: l2-cache1 {
+                        compatible = "cache";
+                        cache-size = <0x80000>;
+                        cache-line-size = <64>;
+                        cache-sets = <512>;
+                };
+        };
+};
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807.dtsi
new file mode 100644
index 0000000..b42dc3a
--- /dev/null
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap807.dtsi
@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Marvell Armada AP807
+ *
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ */
+
+#define AP_NAME                ap807
+#include "armada-ap80x.dtsi"
+
+/ {
+        model = "Marvell Armada AP807";
+        compatible = "marvell,armada-ap807";
+};
+
+&ap_syscon0 {
+        ap_clk: clock {
+                compatible = "marvell,ap807-clock";
+                #clock-cells = <1>;
+        };
+};
+
+&ap_syscon1 {
+        cpu_clk: clock-cpu {
+                compatible = "marvell,ap807-cpu-clock";
+                clocks = <&ap_clk 0>, <&ap_clk 1>;
+                #clock-cells = <1>;
+        };
+};
+
+&ap_sdhci0 {
+        compatible = "marvell,armada-ap807-sdhci";
+};
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap80x.dtsi
similarity index 52%
rename from Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806.dtsi
rename to Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap80x.dtsi
index 66124bf..c2a7cef 100644
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap806.dtsi
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-ap80x.dtsi
@@ -1,8 +1,8 @@
 // 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 AP806.
+ * Device Tree file for Marvell Armada AP80x.
  */
 
 #define IRQ_TYPE_LEVEL_HIGH      (1 << 2)
@@ -14,11 +14,12 @@
 #define GIC_CPU_MASK_RAW(x)      ((x) << 8)
 #define GIC_CPU_MASK_SIMPLE(num) GIC_CPU_MASK_RAW((1 << (num)) - 1)
 
+#define GPIO_ACTIVE_HIGH 0
+#define GPIO_ACTIVE_LOW  1
+
 /dts-v1/;
 
 / {
-        model = "Marvell Armada AP806";
-        compatible = "marvell,armada-ap806";
         #address-cells = <2>;
         #size-cells = <2>;
 
@@ -34,7 +35,24 @@
                 method = "smc";
         };
 
-        ap806 {
+        reserved-memory {
+                #address-cells = <2>;
+                #size-cells = <2>;
+                ranges;
+
+                /*
+                 * This area matches the mapping done with a
+                 * mainline U-Boot, and should be updated by the
+                 * bootloader.
+                 */
+
+                psci-area@4000000 {
+                        reg = <0x0 0x4000000 0x0 0x200000>;
+                        no-map;
+                };
+        };
+
+        AP_NAME {
                 #address-cells = <2>;
                 #size-cells = <2>;
                 compatible = "simple-bus";
@@ -47,6 +65,24 @@
                         compatible = "simple-bus";
                         ranges = <0x0 0x0 0xf0000000 0x1000000>;
 
+                        smmu: iommu@5000000 {
+                                compatible = "marvell,ap806-smmu-500", "arm,mmu-500";
+                                reg = <0x100000 0x100000>;
+                                dma-coherent;
+                                #iommu-cells = <1>;
+                                #global-interrupts = <1>;
+                                interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                                status = "disabled";
+                        };
+
                         gic: interrupt-controller@210000 {
                                 compatible = "arm,gic-400";
                                 #interrupt-cells = <3>;
@@ -131,6 +167,15 @@
                                 interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
                         };
 
+                        sei: interrupt-controller@3f0200 {
+                                compatible = "marvell,ap806-sei";
+                                reg = <0x3f0200 0x40>;
+                                interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+                                #interrupt-cells = <1>;
+                                interrupt-controller;
+                                msi-controller;
+                        };
+
                         xor@400000 {
                                 compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
                                 reg = <0x400000 0x1000>,
@@ -183,7 +228,6 @@
                                 #address-cells = <1>;
                                 #size-cells = <0>;
                                 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
-                                timeout-ms = <1000>;
                                 clocks = <&ap_clk 3>;
                                 status = "disabled";
                         };
@@ -226,15 +270,10 @@
                                 status = "disabled";
                         };
 
-                        ap_syscon: system-controller@6f4000 {
+                        ap_syscon0: system-controller@6f4000 {
                                 compatible = "syscon", "simple-mfd";
                                 reg = <0x6f4000 0x2000>;
 
-                                ap_clk: clock {
-                                        compatible = "marvell,ap806-clock";
-                                        #clock-cells = <1>;
-                                };
-
                                 ap_pinctrl: pinctrl {
                                         compatible = "marvell,ap806-pinctrl";
 
@@ -254,10 +293,177 @@
                                 };
                         };
 
-                        ap_thermal: thermal@6f808c {
-                                compatible = "marvell,armada-ap806-thermal";
-                                reg = <0x6f808c 0x4>,
-                                      <0x6f8084 0x8>;
+                        ap_syscon1: system-controller@6f8000 {
+                                compatible = "syscon", "simple-mfd";
+                                reg = <0x6f8000 0x1000>;
+                                #address-cells = <1>;
+                                #size-cells = <1>;
+
+                                ap_thermal: thermal-sensor@80 {
+                                        compatible = "marvell,armada-ap806-thermal";
+                                        reg = <0x80 0x10>;
+                                        interrupt-parent = <&sei>;
+                                        interrupts = <18>;
+                                        #thermal-sensor-cells = <1>;
+                                };
+                        };
+                };
+        };
+
+        /*
+         * The thermal IP features one internal sensor plus, if applicable, one
+         * remote channel wired to one sensor per CPU.
+         *
+         * Only one thermal zone per AP/CP may trigger interrupts at a time, the
+         * first one that will have a critical trip point will be chosen.
+         */
+        thermal-zones {
+                ap_thermal_ic: ap-thermal-ic {
+                        polling-delay-passive = <0>; /* Interrupt driven */
+                        polling-delay = <0>; /* Interrupt driven */
+
+                        thermal-sensors = <&ap_thermal 0>;
+
+                        trips {
+                                ap_crit: ap-crit {
+                                        temperature = <100000>; /* mC degrees */
+                                        hysteresis = <2000>; /* mC degrees */
+                                        type = "critical";
+                                };
+                        };
+
+                        cooling-maps { };
+                };
+
+                ap_thermal_cpu0: ap-thermal-cpu0 {
+                        polling-delay-passive = <1000>;
+                        polling-delay = <1000>;
+
+                        thermal-sensors = <&ap_thermal 1>;
+
+                        trips {
+                                cpu0_hot: cpu0-hot {
+                                        temperature = <85000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                                cpu0_emerg: cpu0-emerg {
+                                        temperature = <95000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                        };
+
+                        cooling-maps {
+                                map0_hot: map0-hot {
+                                        trip = <&cpu0_hot>;
+                                        cooling-device = <&cpu0 1 2>,
+                                                <&cpu1 1 2>;
+                                };
+                                map0_emerg: map0-ermerg {
+                                        trip = <&cpu0_emerg>;
+                                        cooling-device = <&cpu0 3 3>,
+                                                <&cpu1 3 3>;
+                                };
+                        };
+                };
+
+                ap_thermal_cpu1: ap-thermal-cpu1 {
+                        polling-delay-passive = <1000>;
+                        polling-delay = <1000>;
+
+                        thermal-sensors = <&ap_thermal 2>;
+
+                        trips {
+                                cpu1_hot: cpu1-hot {
+                                        temperature = <85000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                                cpu1_emerg: cpu1-emerg {
+                                        temperature = <95000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                        };
+
+                        cooling-maps {
+                                map1_hot: map1-hot {
+                                        trip = <&cpu1_hot>;
+                                        cooling-device = <&cpu0 1 2>,
+                                                <&cpu1 1 2>;
+                                };
+                                map1_emerg: map1-emerg {
+                                        trip = <&cpu1_emerg>;
+                                        cooling-device = <&cpu0 3 3>,
+                                                <&cpu1 3 3>;
+                                };
+                        };
+                };
+
+                ap_thermal_cpu2: ap-thermal-cpu2 {
+                        polling-delay-passive = <1000>;
+                        polling-delay = <1000>;
+
+                        thermal-sensors = <&ap_thermal 3>;
+
+                        trips {
+                                cpu2_hot: cpu2-hot {
+                                        temperature = <85000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                                cpu2_emerg: cpu2-emerg {
+                                        temperature = <95000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                        };
+
+                        cooling-maps {
+                                map2_hot: map2-hot {
+                                        trip = <&cpu2_hot>;
+                                        cooling-device = <&cpu2 1 2>,
+                                                <&cpu3 1 2>;
+                                };
+                                map2_emerg: map2-emerg {
+                                        trip = <&cpu2_emerg>;
+                                        cooling-device = <&cpu2 3 3>,
+                                                <&cpu3 3 3>;
+                                };
+                        };
+                };
+
+                ap_thermal_cpu3: ap-thermal-cpu3 {
+                        polling-delay-passive = <1000>;
+                        polling-delay = <1000>;
+
+                        thermal-sensors = <&ap_thermal 4>;
+
+                        trips {
+                                cpu3_hot: cpu3-hot {
+                                        temperature = <85000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                                cpu3_emerg: cpu3-emerg {
+                                        temperature = <95000>;
+                                        hysteresis = <2000>;
+                                        type = "passive";
+                                };
+                        };
+
+                        cooling-maps {
+                                map3_hot: map3-bhot {
+                                        trip = <&cpu3_hot>;
+                                        cooling-device = <&cpu2 1 2>,
+                                                <&cpu3 1 2>;
+                                };
+                                map3_emerg: map3-emerg {
+                                        trip = <&cpu3_emerg>;
+                                        cooling-device = <&cpu2 3 3>,
+                                                <&cpu3 3 3>;
+                                };
                         };
                 };
         };
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-common.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-common.dtsi
index 8b610fd..f002499 100644
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-common.dtsi
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-common.dtsi
@@ -6,5 +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 CP11X_LABEL(name) EVALUATOR(CP11X_NAME, EVALUATOR(_, name))
+#define CP11X_NODE_NAME(name) EVALUATOR(CP11X_NAME, EVALUATOR(-, name))
 #define ADDRESSIFY(addr) EVALUATOR(0x, addr)
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp110.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp110.dtsi
deleted file mode 100644
index b6e5ded..0000000
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp110.dtsi
+++ /dev/null
@@ -1,552 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
- *
- * Device Tree file for Marvell Armada CP110.
- */
-
-#include "armada-common.dtsi"
-
-#define ICU_GRP_NSR             0x0
-#define ICU_GRP_SR              0x1
-#define ICU_GRP_SEI             0x4
-#define ICU_GRP_REI             0x5
-
-#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 { };
-};
-
-&CP110_NAME {
-        #address-cells = <2>;
-        #size-cells = <2>;
-        compatible = "simple-bus";
-        interrupt-parent = <&CP110_LABEL(icu)>;
-        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(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
-                                 <&CP110_LABEL(ppv2_clk)>, <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        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 = <ICU_GRP_NSR 39 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 43 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 47 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 51 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 55 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 129 IRQ_TYPE_LEVEL_HIGH>;
-                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
-                                        "tx-cpu3", "rx-shared", "link";
-                                port-id = <0>;
-                                gop-port-id = <0>;
-                                status = "disabled";
-                        };
-
-                        CP110_LABEL(eth1): eth1 {
-                                interrupts = <ICU_GRP_NSR 40 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 44 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 48 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 52 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 56 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 128 IRQ_TYPE_LEVEL_HIGH>;
-                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
-                                        "tx-cpu3", "rx-shared", "link";
-                                port-id = <1>;
-                                gop-port-id = <2>;
-                                status = "disabled";
-                        };
-
-                        CP110_LABEL(eth2): eth2 {
-                                interrupts = <ICU_GRP_NSR 41 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 45 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 49 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 53 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 57 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 127 IRQ_TYPE_LEVEL_HIGH>;
-                                interrupt-names = "tx-cpu0", "tx-cpu1", "tx-cpu2",
-                                        "tx-cpu3", "rx-shared", "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)>;
-                        #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(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
-                                 <&CP110_LABEL(core_clk)>, <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(xmdio): mdio@12a600 {
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        compatible = "marvell,xmdio";
-                        reg = <0x12a600 0x10>;
-                        clocks = <&CP110_LABEL(ppv2_clk)>, <&CP110_LABEL(ppv2_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(icu): interrupt-controller@1e0000 {
-                        compatible = "marvell,cp110-icu";
-                        reg = <0x1e0000 0x440>;
-                        #interrupt-cells = <3>;
-                        interrupt-controller;
-                        msi-parent = <&gicp>;
-                };
-
-                CP110_LABEL(rtc): rtc@284000 {
-                        compatible = "marvell,armada-8k-rtc";
-                        reg = <0x284000 0x20>, <0x284080 0x24>;
-                        reg-names = "rtc", "rtc-soc";
-                        interrupts = <ICU_GRP_NSR 77 IRQ_TYPE_LEVEL_HIGH>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(thermal): thermal@400078 {
-                        compatible = "marvell,armada-cp110-thermal";
-                        reg = <0x400078 0x4>,
-                        <0x400070 0x8>;
-                };
-
-                CP110_LABEL(syscon0): system-controller@440000 {
-                        compatible = "syscon", "simple-mfd";
-                        reg = <0x440000 0x2000>;
-
-                        CP110_LABEL(clk): clock {
-                                compatible = "marvell,cp110-clock";
-                                status = "disabled";
-                                #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 = <ICU_GRP_NSR 86 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 85 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 84 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 83 IRQ_TYPE_LEVEL_HIGH>;
-                                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 = <ICU_GRP_NSR 82 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 81 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 80 IRQ_TYPE_LEVEL_HIGH>,
-                                        <ICU_GRP_NSR 79 IRQ_TYPE_LEVEL_HIGH>;
-                                status = "disabled";
-                        };
-                };
-
-                CP110_LABEL(usb3_0): usb3@500000 {
-                        compatible = "marvell,armada-8k-xhci",
-                        "generic-xhci";
-                        reg = <0x500000 0x4000>;
-                        dma-coherent;
-                        interrupts = <ICU_GRP_NSR 106 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(usb3_1): usb3@510000 {
-                        compatible = "marvell,armada-8k-xhci",
-                        "generic-xhci";
-                        reg = <0x510000 0x4000>;
-                        dma-coherent;
-                        interrupts = <ICU_GRP_NSR 105 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(sata0): sata@540000 {
-                        compatible = "marvell,armada-8k-ahci",
-                        "generic-ahci";
-                        reg = <0x540000 0x30000>;
-                        dma-coherent;
-                        interrupts = <ICU_GRP_NSR 107 IRQ_TYPE_LEVEL_HIGH>;
-                        clocks = <&CP110_LABEL(core_clk)>,
-                                 <&CP110_LABEL(core_clk)>;
-                        status = "disabled";
-                };
-
-                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(core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                };
-
-                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(core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                };
-
-                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(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(i2c0): i2c@701000 {
-                        compatible = "marvell,mv78230-i2c";
-                        reg = <0x701000 0x20>;
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        interrupts = <ICU_GRP_NSR 120 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(i2c1): i2c@701100 {
-                        compatible = "marvell,mv78230-i2c";
-                        reg = <0x701100 0x20>;
-                        #address-cells = <1>;
-                        #size-cells = <0>;
-                        interrupts = <ICU_GRP_NSR 121 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart0): serial@702000 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702000 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 122 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart1): serial@702100 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702100 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 123 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart2): serial@702200 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702200 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 124 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(uart3): serial@702300 {
-                        compatible = "snps,dw-apb-uart";
-                        reg = <0x702300 0x100>;
-                        reg-shift = <2>;
-                        interrupts = <ICU_GRP_NSR 125 IRQ_TYPE_LEVEL_HIGH>;
-                        reg-io-width = <1>;
-                        clock-names = "baudclk", "apb_pclk";
-                        clocks = <&CP110_LABEL(slow_io_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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 = <ICU_GRP_NSR 115 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(nand_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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 = <ICU_GRP_NSR 95 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(x2core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        status = "okay";
-                };
-
-                CP110_LABEL(sdhci0): sdhci@780000 {
-                        compatible = "marvell,armada-cp110-sdhci";
-                        reg = <0x780000 0x300>;
-                        interrupts = <ICU_GRP_NSR 27 IRQ_TYPE_LEVEL_HIGH>;
-                        clock-names = "core", "axi";
-                        clocks = <&CP110_LABEL(sdio_clk)>, <&CP110_LABEL(core_clk)>;
-                        dma-coherent;
-                        status = "disabled";
-                };
-
-                CP110_LABEL(crypto): crypto@800000 {
-                        compatible = "inside-secure,safexcel-eip197";
-                        reg = <0x800000 0x200000>;
-                        interrupts = <ICU_GRP_NSR 87 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 88 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 89 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 90 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 91 IRQ_TYPE_LEVEL_HIGH>,
-                                <ICU_GRP_NSR 92 IRQ_TYPE_LEVEL_HIGH>;
-                        interrupt-names = "mem", "ring0", "ring1",
-                                "ring2", "ring3", "eip";
-                        clock-names = "core", "reg";
-                        clocks = <&CP110_LABEL(x2core_clk)>,
-                                 <&CP110_LABEL(x2core_clk)>;
-                        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 =
-                /* 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) ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
-                interrupts = <ICU_GRP_NSR 22 IRQ_TYPE_LEVEL_HIGH>;
-                num-lanes = <1>;
-                clock-names = "core", "reg";
-                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
-                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 =
-                /* 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) ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
-                interrupts = <ICU_GRP_NSR 24 IRQ_TYPE_LEVEL_HIGH>;
-
-                num-lanes = <1>;
-                clock-names = "core", "reg";
-                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
-                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 =
-                /* 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) ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
-                interrupts = <ICU_GRP_NSR 23 IRQ_TYPE_LEVEL_HIGH>;
-
-                num-lanes = <1>;
-                clock-names = "core", "reg";
-                clocks = <&CP110_LABEL(core_clk)>, <&CP110_LABEL(x2core_clk)>;
-                status = "disabled";
-        };
-
-        /* 1 GHz fixed main PLL */
-        CP110_LABEL(mainpll): CP110_LABEL(mainpll) {
-                compatible = "fixed-clock";
-                #clock-cells = <0>;
-                clock-frequency = <1000000000>;
-        };
-
-        CP110_LABEL(x2core_clk): CP110_LABEL(x2core_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <2>;
-        };
-
-        CP110_LABEL(core_clk): CP110_LABEL(core_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <2>;
-        };
-
-        CP110_LABEL(sdio_clk): CP110_LABEL(sdio_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <2>;
-                clock-div = <5>;
-        };
-
-        CP110_LABEL(nand_clk): CP110_LABEL(nand_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <2>;
-                clock-div = <5>;
-        };
-
-        CP110_LABEL(ppv2_clk): CP110_LABEL(ppv2_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <3>;
-        };
-
-        CP110_LABEL(slow_io_clk): CP110_LABEL(slow_io_clk) {
-                compatible = "fixed-factor-clock";
-                clocks = <&CP110_LABEL(mainpll)>;
-                #clock-cells = <0>;
-                clock-mult = <1>;
-                clock-div = <4>;
-        };
-};
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp115.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp115.dtsi
new file mode 100644
index 0000000..f57860f
--- /dev/null
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp115.dtsi
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada CP115.
+ */
+
+#define CP11X_TYPE cp115
+
+#include "armada-cp11x.dtsi"
+
+#undef CP11X_TYPE
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp11x.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp11x.dtsi
new file mode 100644
index 0000000..05b7627
--- /dev/null
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/armada-cp11x.dtsi
@@ -0,0 +1,622 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada CP11x.
+ */
+
+#include "armada-common.dtsi"
+
+#define CP11X_PCIEx_CONF_BASE(iface)        (CP11X_PCIEx_MEM_BASE(iface) + CP11X_PCIEx_MEM_SIZE(iface))
+
+/ {
+        /*
+         * 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(ppv2_clk)>, <&CP11X_LABEL(ppv2_clk)>,
+                                 <&CP11X_LABEL(ppv2_clk)>, <&CP11X_LABEL(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        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(ppv2_clk)>, <&CP11X_LABEL(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        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(ppv2_clk)>, <&CP11X_LABEL(ppv2_clk)>,
+                                 <&CP11X_LABEL(core_clk)>, <&CP11X_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP11X_LABEL(xmdio): mdio@12a600 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        compatible = "marvell,xmdio";
+                        reg = <0x12a600 0x10>;
+                        clocks = <&CP11X_LABEL(ppv2_clk)>, <&CP11X_LABEL(ppv2_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        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>;
+                        status = "disabled";
+                };
+
+                CP11X_LABEL(syscon0): system-controller@440000 {
+                        compatible = "syscon", "simple-mfd";
+                        reg = <0x440000 0x2000>;
+
+                        CP11X_LABEL(clk): clock {
+                                compatible = "marvell,cp110-clock";
+                                status = "disabled";
+                                #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): usb@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(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP11X_LABEL(usb3_1): usb@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(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        status = "disabled";
+                };
+
+                CP11X_LABEL(sata0): sata@540000 {
+                        compatible = "marvell,armada-8k-ahci";
+                        reg = <0x540000 0x30000>;
+                        dma-coherent;
+                        clocks = <&CP11X_LABEL(core_clk)>,
+                                 <&CP11X_LABEL(core_clk)>;
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        status = "disabled";
+
+                        sata-port@0 {
+                                interrupts = <109 IRQ_TYPE_LEVEL_HIGH>;
+                                reg = <0>;
+                        };
+
+                        sata-port@1 {
+                                interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
+                                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(core_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                };
+
+                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(core_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                };
+
+                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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(slow_io_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(nand_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(x2core_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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(sdio_clk)>, <&CP11X_LABEL(core_clk)>;
+                        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(x2core_clk)>,
+                                 <&CP11X_LABEL(x2core_clk)>;
+                        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>;
+                /* non-prefetchable memory */
+                ranges = <0x82000000 0 CP11X_PCIEx_MEM_BASE(0) 0  CP11X_PCIEx_MEM_BASE(0) 0 CP11X_PCIEx_MEM_SIZE(0)>;
+                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(core_clk)>, <&CP11X_LABEL(x2core_clk)>;
+                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>;
+                /* non-prefetchable memory */
+                ranges = <0x82000000 0 CP11X_PCIEx_MEM_BASE(1) 0  CP11X_PCIEx_MEM_BASE(1) 0 CP11X_PCIEx_MEM_SIZE(1)>;
+                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(core_clk)>, <&CP11X_LABEL(x2core_clk)>;
+                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>;
+                /* non-prefetchable memory */
+                ranges = <0x82000000 0 CP11X_PCIEx_MEM_BASE(2) 0  CP11X_PCIEx_MEM_BASE(2) 0 CP11X_PCIEx_MEM_SIZE(2)>;
+                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(core_clk)>, <&CP11X_LABEL(x2core_clk)>;
+                status = "disabled";
+        };
+
+        /* 1 GHz fixed main PLL */
+        CP11X_LABEL(mainpll): CP11X_LABEL(mainpll) {
+                compatible = "fixed-clock";
+                #clock-cells = <0>;
+                clock-frequency = <1000000000>;
+        };
+
+        CP11X_LABEL(x2core_clk): CP11X_LABEL(x2core_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <2>;
+        };
+
+        CP11X_LABEL(core_clk): CP11X_LABEL(core_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <2>;
+        };
+
+        CP11X_LABEL(sdio_clk): CP11X_LABEL(sdio_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <2>;
+                clock-div = <5>;
+        };
+
+        CP11X_LABEL(nand_clk): CP11X_LABEL(nand_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <2>;
+                clock-div = <5>;
+        };
+
+        CP11X_LABEL(ppv2_clk): CP11X_LABEL(ppv2_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <3>;
+        };
+
+        CP11X_LABEL(slow_io_clk): CP11X_LABEL(slow_io_clk) {
+                compatible = "fixed-factor-clock";
+                clocks = <&CP11X_LABEL(mainpll)>;
+                #clock-cells = <0>;
+                clock-mult = <1>;
+                clock-div = <4>;
+        };
+};
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db-A.dts b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db-A.dts
deleted file mode 100644
index 9e4aa51..0000000
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db-A.dts
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (C) 2018 Marvell International Ltd.
- *
- * SPDX-License-Identifier:    GPL-2.0
- * https://spdx.org/licenses
- */
-
-#include "cn9130-db.dtsi"
-
-/ {
-        model = "Model: Marvell CN9130 development board (CP NOR) setup(A)";
-        compatible = "marvell,cn9130-db-A", "marvell,armada-ap807-quad",
-                     "marvell,armada-ap807";
-
-        chosen {
-                stdout-path = "serial0:115200n8";
-        };
-
-        aliases {
-                i2c0 = &cp0_i2c0;
-                ethernet0 = &cp0_eth0;
-                ethernet1 = &cp0_eth1;
-                ethernet2 = &cp0_eth2;
-        };
-
-        memory@00000000 {
-                device_type = "memory";
-                reg = <0x0 0x0 0x0 0x80000000>;
-        };
-};
-
-&uart0 {
-        status = "okay";
-};
-
-/* on-board eMMC - U9 */
-&ap_sdhci0 {
-        pinctrl-names = "default";
-        bus-width = <8>;
-        status = "okay";
-        vqmmc-supply = <&ap0_reg_sd_vccq>;
-};
-
-/*
- * CP related configuration
- */
-&cp0_i2c0 {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_i2c0_pins>;
-        status = "okay";
-        clock-frequency = <100000>;
-};
-
-&cp0_i2c1 {
-        status = "okay";
-};
-
-/* CON 28 */
-&cp0_sdhci0 {
-        status = "okay";
-};
-
-/* U54 */
-&cp0_nand_controller {
-        pinctrl-names = "default";
-        pinctrl-0 = <&nand_pins>;
-
-        nand@0 {
-                reg = <0>;
-                label = "main-storage";
-                nand-rb = <0>;
-                nand-ecc-mode = "hw";
-                nand-on-flash-bbt;
-                nand-ecc-strength = <8>;
-                nand-ecc-step-size = <512>;
-
-                partitions {
-                        compatible = "fixed-partitions";
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-
-                        partition@0 {
-                                label = "U-Boot";
-                                reg = <0 0x200000>;
-                        };
-                        partition@200000 {
-                                label = "Linux";
-                                reg = <0x200000 0xd00000>;
-                        };
-                        partition@1000000 {
-                                label = "Filesystem";
-                                reg = <0x1000000 0x3f000000>;
-                        };
-                };
-        };
-};
-
-/* U55 */
-&cp0_spi1 {
-        pinctrl-names = "default";
-        pinctrl-0 = <&cp0_spi0_pins>;
-        reg = <0x700680 0x50>,                /* control */
-              <0x2000000 0x1000000>;        /* CS0 */
-        status = "disabled";
-
-        spi-flash@0 {
-                #address-cells = <0x1>;
-                #size-cells = <0x1>;
-                compatible = "jedec,spi-nor";
-                reg = <0x0>;
-                /* On-board MUX does not allow higher frequencies */
-                spi-max-frequency = <40000000>;
-
-                partitions {
-                        compatible = "fixed-partitions";
-                        #address-cells = <1>;
-                        #size-cells = <1>;
-
-                        partition@0 {
-                                label = "U-Boot";
-                                reg = <0x0 0x200000>;
-                        };
-
-                        partition@400000 {
-                                label = "Filesystem";
-                                reg = <0x200000 0xe00000>;
-                        };
-                };
-        };
-};
-
-/* SLM-1521-V2, CON6 */
-&cp0_pcie0 {
-        status = "okay";
-        num-lanes = <4>;
-        num-viewport = <8>;
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp0_comphy0 0
-                &cp0_comphy1 0
-                &cp0_comphy2 0
-                &cp0_comphy3 0>;
-};
-
-&cp0_sata0 {
-        status = "okay";
-        /* SLM-1521-V2, CON2 */
-};
-
-&cp0_mdio {
-        status = "okay";
-        phy0: ethernet-phy@0 {
-                reg = <0>;
-        };
-        phy1: ethernet-phy@1 {
-                reg = <1>;
-        };
-};
-
-&cp0_ethernet {
-        status = "okay";
-};
-
-/* SLM-1521-V2, CON9 */
-&cp0_eth0 {
-        status = "okay";
-        phy-mode = "10gbase-kr";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp0_comphy4 0>;
-        managed = "in-band-status";
-        sfp = <&cp0_sfp_eth0>;
-};
-
-/* CON56 */
-&cp0_eth1 {
-        status = "okay";
-        phy = <&phy0>;
-        phy-mode = "rgmii-id";
-};
-
-/* CON57 */
-&cp0_eth2 {
-        status = "okay";
-        phy = <&phy1>;
-        phy-mode = "rgmii-id";
-};
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db.dts b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db.dts
new file mode 100644
index 0000000..747bf88
--- /dev/null
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130-db.dts
@@ -0,0 +1,402 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell International Ltd.
+ *
+ * Device tree for the CN9130-DB board.
+ */
+
+#include "cn9130.dtsi"
+
+/ {
+        model = "Marvell Armada CN9130-DB";
+
+        chosen {
+                stdout-path = "serial0:115200n8";
+        };
+
+        aliases {
+                gpio1 = &cp0_gpio1;
+                gpio2 = &cp0_gpio2;
+                i2c0 = &cp0_i2c0;
+                ethernet0 = &cp0_eth0;
+                ethernet1 = &cp0_eth1;
+                ethernet2 = &cp0_eth2;
+                spi1 = &cp0_spi0;
+                spi2 = &cp0_spi1;
+        };
+
+        memory@00000000 {
+                device_type = "memory";
+                reg = <0x0 0x0 0x0 0x80000000>;
+        };
+
+        ap0_reg_sd_vccq: ap0_sd_vccq@0 {
+                compatible = "regulator-gpio";
+                regulator-name = "ap0_sd_vccq";
+                regulator-min-microvolt = <1800000>;
+                regulator-max-microvolt = <3300000>;
+                gpios = <&expander0 8 GPIO_ACTIVE_HIGH>;
+                states = <1800000 0x1 3300000 0x0>;
+        };
+
+        cp0_reg_usb3_vbus0: cp0_usb3_vbus@0 {
+                compatible = "regulator-fixed";
+                regulator-name = "cp0-xhci0-vbus";
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                enable-active-high;
+                gpio = <&expander0 0 GPIO_ACTIVE_HIGH>;
+        };
+
+        cp0_usb3_0_phy0: cp0_usb3_phy@0 {
+                compatible = "usb-nop-xceiv";
+                vcc-supply = <&cp0_reg_usb3_vbus0>;
+        };
+
+        cp0_reg_usb3_vbus1: cp0_usb3_vbus@1 {
+                compatible = "regulator-fixed";
+                regulator-name = "cp0-xhci1-vbus";
+                regulator-min-microvolt = <5000000>;
+                regulator-max-microvolt = <5000000>;
+                enable-active-high;
+                gpio = <&expander0 1 GPIO_ACTIVE_HIGH>;
+        };
+
+        cp0_usb3_0_phy1: cp0_usb3_phy@1 {
+                compatible = "usb-nop-xceiv";
+                vcc-supply = <&cp0_reg_usb3_vbus1>;
+        };
+
+        cp0_reg_sd_vccq: cp0_sd_vccq@0 {
+                compatible = "regulator-gpio";
+                regulator-name = "cp0_sd_vccq";
+                regulator-min-microvolt = <1800000>;
+                regulator-max-microvolt = <3300000>;
+                gpios = <&expander0 15 GPIO_ACTIVE_HIGH>;
+                states = <1800000 0x1
+                          3300000 0x0>;
+        };
+
+        cp0_reg_sd_vcc: cp0_sd_vcc@0 {
+                compatible = "regulator-fixed";
+                regulator-name = "cp0_sd_vcc";
+                regulator-min-microvolt = <3300000>;
+                regulator-max-microvolt = <3300000>;
+                gpio = <&expander0 14 GPIO_ACTIVE_HIGH>;
+                enable-active-high;
+                regulator-always-on;
+        };
+
+        cp0_sfp_eth0: sfp-eth@0 {
+                compatible = "sff,sfp";
+                i2c-bus = <&cp0_sfpp0_i2c>;
+                los-gpio = <&cp0_module_expander1 11 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&cp0_module_expander1 10 GPIO_ACTIVE_LOW>;
+                tx-disable-gpio = <&cp0_module_expander1 9 GPIO_ACTIVE_HIGH>;
+                tx-fault-gpio = <&cp0_module_expander1 8 GPIO_ACTIVE_HIGH>;
+                /*
+                 * SFP cages are unconnected on early PCBs because of an the I2C
+                 * lanes not being connected. Prevent the port for being
+                 * unusable by disabling the SFP node.
+                 */
+                status = "disabled";
+        };
+};
+
+&uart0 {
+        status = "okay";
+};
+
+/* on-board eMMC - U9 */
+&ap_sdhci0 {
+        pinctrl-names = "default";
+        bus-width = <8>;
+        mmc-ddr-1_8v;
+        mmc-hs400-1_8v;
+        vqmmc-supply = <&ap0_reg_sd_vccq>;
+        status = "okay";
+};
+
+&cp0_crypto {
+        status = "disabled";
+};
+
+&cp0_ethernet {
+        status = "okay";
+};
+
+/* SLM-1521-V2, CON9 */
+&cp0_eth0 {
+        status = "disabled";
+        phy-mode = "10gbase-kr";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp0_comphy4 0>;
+        managed = "in-band-status";
+        sfp = <&cp0_sfp_eth0>;
+};
+
+/* CON56 */
+&cp0_eth1 {
+        status = "okay";
+        phy = <&phy0>;
+        phy-mode = "rgmii-id";
+};
+
+/* CON57 */
+&cp0_eth2 {
+        status = "okay";
+        phy = <&phy1>;
+        phy-mode = "rgmii-id";
+};
+
+&cp0_gpio1 {
+        status = "okay";
+};
+
+&cp0_gpio2 {
+        status = "okay";
+};
+
+&cp0_i2c0 {
+        status = "okay";
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_i2c0_pins>;
+        clock-frequency = <100000>;
+
+        /* U36 */
+        expander0: pca953x@21 {
+                compatible = "nxp,pca9555";
+                pinctrl-names = "default";
+                gpio-controller;
+                #gpio-cells = <2>;
+                reg = <0x21>;
+                status = "okay";
+        };
+
+        /* U42 */
+        eeprom0: eeprom@50 {
+                compatible = "atmel,24c64";
+                reg = <0x50>;
+                pagesize = <0x20>;
+        };
+
+        /* U38 */
+        eeprom1: eeprom@57 {
+                compatible = "atmel,24c64";
+                reg = <0x57>;
+                pagesize = <0x20>;
+        };
+};
+
+&cp0_i2c1 {
+        status = "okay";
+        clock-frequency = <100000>;
+
+        /* SLM-1521-V2 - U3 */
+        i2c-mux@72 { /* verify address - depends on dpr */
+                compatible = "nxp,pca9544";
+                #address-cells = <1>;
+                #size-cells = <0>;
+                reg = <0x72>;
+                cp0_sfpp0_i2c: i2c@0 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        reg = <0>;
+                };
+
+                i2c@1 {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        reg = <1>;
+                        /* U12 */
+                        cp0_module_expander1: pca9555@21 {
+                                compatible = "nxp,pca9555";
+                                pinctrl-names = "default";
+                                gpio-controller;
+                                #gpio-cells = <2>;
+                                reg = <0x21>;
+                        };
+
+                };
+        };
+};
+
+&cp0_mdio {
+        status = "okay";
+
+        phy0: ethernet-phy@0 {
+                reg = <0>;
+        };
+
+        phy1: ethernet-phy@1 {
+                reg = <1>;
+        };
+};
+
+/* U54 */
+&cp0_nand_controller {
+        pinctrl-names = "default";
+        pinctrl-0 = <&nand_pins &nand_rb>;
+
+        nand@0 {
+                reg = <0>;
+                label = "main-storage";
+                nand-rb = <0>;
+                nand-ecc-mode = "hw";
+                nand-on-flash-bbt;
+                nand-ecc-strength = <8>;
+                nand-ecc-step-size = <512>;
+
+                partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "U-Boot";
+                                reg = <0 0x200000>;
+                        };
+                        partition@200000 {
+                                label = "Linux";
+                                reg = <0x200000 0xd00000>;
+                        };
+                        partition@1000000 {
+                                label = "Filesystem";
+                                reg = <0x1000000 0x3f000000>;
+                        };
+                };
+        };
+};
+
+/* SLM-1521-V2, CON6 */
+&cp0_pcie0 {
+        status = "okay";
+        num-lanes = <4>;
+        num-viewport = <8>;
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp0_comphy0 0
+                &cp0_comphy1 0
+                &cp0_comphy2 0
+                &cp0_comphy3 0>;
+};
+
+&cp0_sata0 {
+        status = "okay";
+
+        /* SLM-1521-V2, CON2 */
+        sata-port@1 {
+                status = "okay";
+                /* Generic PHY, providing serdes lanes */
+                phys = <&cp0_comphy5 1>;
+        };
+};
+
+/* CON 28 */
+&cp0_sdhci0 {
+        status = "okay";
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_sdhci_pins
+                     &cp0_sdhci_cd_pins>;
+        bus-width = <4>;
+        cd-gpios = <&cp0_gpio2 11 GPIO_ACTIVE_LOW>;
+        no-1-8-v;
+        vqmmc-supply = <&cp0_reg_sd_vccq>;
+        vmmc-supply = <&cp0_reg_sd_vcc>;
+};
+
+/* U55 */
+&cp0_spi1 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&cp0_spi0_pins>;
+        reg = <0x700680 0x50>;
+
+        spi-flash@0 {
+                #address-cells = <0x1>;
+                #size-cells = <0x1>;
+                compatible = "jedec,spi-nor";
+                reg = <0x0>;
+                /* On-board MUX does not allow higher frequencies */
+                spi-max-frequency = <40000000>;
+
+                partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "U-Boot-0";
+                                reg = <0x0 0x200000>;
+                        };
+
+                        partition@400000 {
+                                label = "Filesystem-0";
+                                reg = <0x200000 0xe00000>;
+                        };
+                };
+        };
+};
+
+&cp0_syscon0 {
+        cp0_pinctrl: pinctrl {
+                compatible = "marvell,cp115-standalone-pinctrl";
+
+                cp0_i2c0_pins: cp0-i2c-pins-0 {
+                        marvell,pins = "mpp37", "mpp38";
+                        marvell,function = "i2c0";
+                };
+                cp0_i2c1_pins: cp0-i2c-pins-1 {
+                        marvell,pins = "mpp35", "mpp36";
+                        marvell,function = "i2c1";
+                };
+                cp0_ge1_rgmii_pins: cp0-ge-rgmii-pins-0 {
+                        marvell,pins = "mpp0", "mpp1", "mpp2",
+                                       "mpp3", "mpp4", "mpp5",
+                                       "mpp6", "mpp7", "mpp8",
+                                       "mpp9", "mpp10", "mpp11";
+                        marvell,function = "ge0";
+                };
+                cp0_ge2_rgmii_pins: cp0-ge-rgmii-pins-1 {
+                        marvell,pins = "mpp44", "mpp45", "mpp46",
+                                       "mpp47", "mpp48", "mpp49",
+                                       "mpp50", "mpp51", "mpp52",
+                                       "mpp53", "mpp54", "mpp55";
+                        marvell,function = "ge1";
+                };
+                cp0_sdhci_cd_pins: cp0-sdhci-cd-pins-0 {
+                        marvell,pins = "mpp43";
+                        marvell,function = "gpio";
+                };
+                cp0_sdhci_pins: cp0-sdhi-pins-0 {
+                        marvell,pins = "mpp56", "mpp57", "mpp58",
+                                       "mpp59", "mpp60", "mpp61";
+                        marvell,function = "sdio";
+                };
+                cp0_spi0_pins: cp0-spi-pins-0 {
+                        marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
+                        marvell,function = "spi1";
+                };
+                nand_pins: nand-pins {
+                        marvell,pins = "mpp15", "mpp16", "mpp17", "mpp18",
+                                       "mpp19", "mpp20", "mpp21", "mpp22",
+                                       "mpp23", "mpp24", "mpp25", "mpp26",
+                                       "mpp27";
+                        marvell,function = "dev";
+                };
+                nand_rb: nand-rb {
+                        marvell,pins = "mpp13";
+                        marvell,function = "nf";
+                };
+        };
+};
+
+&cp0_usb3_0 {
+        status = "okay";
+        usb-phy = <&cp0_usb3_0_phy0>;
+        phy-names = "usb";
+};
+
+&cp0_usb3_1 {
+        status = "okay";
+        usb-phy = <&cp0_usb3_0_phy1>;
+        phy-names = "usb";
+};
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130.dtsi
index 97ea923..6187a34 100644
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130.dtsi
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9130.dtsi
@@ -1,126 +1,37 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
- * Copyright (C) 2018 Marvell International Ltd.
+ * Copyright (C) 2019 Marvell International Ltd.
  *
- * SPDX-License-Identifier:        GPL-2.0
- * https://spdx.org/licenses
+ * Device tree for the CN9130 SoC.
  */
 
-/*
- * Device Tree file for the CN 9130 SoC, made of an AP807 Quad and
- * three CP110.
- */
-
-#include "armada-ap806-quad.dtsi"
-
-/ {
-        aliases {
-                gpio1 = &cp0_gpio1;
-                gpio2 = &cp0_gpio2;
-                spi1 = &cp0_spi0;
-                spi2 = &cp0_spi1;
-        };
-};
-
-/* This defines used to calculate the base address of each CP */
-#define CP110_PCIE_MEM_SIZE(iface)       ((iface == 0) ? 0x1ff00000 : 0xf00000)
-#define CP110_PCIE_BUS_MEM_CFG           (0x82000000)
-
-/* CP110-0 Settings */
-#define CP110_NAME                       cp0
-#define CP110_NUM                        0
-#define CP110_BASE                       f2000000
-#define CP110_PCIE0_BASE                 f2600000
-#define CP110_PCIE1_BASE                 f2620000
-#define CP110_PCIE2_BASE                 f2640000
-#define CP110_PCIEx_CPU_MEM_BASE(iface)  ((iface == 0) ? 0xc0000000 : \
-                                         (0xe0000000 + (iface - 1) * 0x1000000))
-#define CP110_PCIEx_MEM_BASE(iface)      (CP110_PCIEx_CPU_MEM_BASE(iface))
-
-#include "armada-cp110.dtsi"
-
-#undef CP110_NUM
-#undef CP110_NAME
-#undef CP110_BASE
-#undef CP110_PCIE0_BASE
-#undef CP110_PCIE1_BASE
-#undef CP110_PCIE2_BASE
+#include "armada-ap807-quad.dtsi"
 
 / {
-        model = "Marvell CN 9130";
+        model = "Marvell Armada CN9130 SoC";
         compatible = "marvell,cn9130", "marvell,armada-ap807-quad",
-                     "marvell,armada-ap806";
+                     "marvell,armada-ap807";
 };
 
-&cp0_crypto {
-        status = "okay";
-};
-
-&cp0_gpio1 {
-        status = "okay";
-};
-
-&cp0_gpio2 {
-        status = "okay";
-};
-
-&cp0_syscon0 {
-        cp0_pinctrl: pinctrl {
-                compatible = "marvell,armada-7k-pinctrl";
-
-                cp0_devbus_pins: cp0-devbus-pins {
-                        marvell,pins = "mpp15", "mpp16", "mpp17",
-                                       "mpp18", "mpp19", "mpp20",
-                                       "mpp21", "mpp22", "mpp23",
-                                       "mpp24", "mpp25", "mpp26",
-                                       "mpp27";
-                        marvell,function = "dev";
-                };
+/*
+ * Instantiate the internal CP115
+ */
 
-                cp0_i2c0_pins: cp0-i2c-pins-0 {
-                        marvell,pins = "mpp37", "mpp38";
-                        marvell,function = "i2c0";
-                };
-                cp0_i2c1_pins: cp0-i2c-pins-1 {
-                        marvell,pins = "mpp35", "mpp36";
-                        marvell,function = "i2c1";
-                };
-                cp0_ge1_rgmii_pins: cp0-ge-rgmii-pins-0 {
-                        marvell,pins = "mpp0", "mpp1", "mpp2",
-                                       "mpp3", "mpp4", "mpp5",
-                                       "mpp6", "mpp7", "mpp8",
-                                       "mpp9", "mpp10", "mpp11";
-                        marvell,function = "ge0";
-                };
-                cp0_ge2_rgmii_pins: cp0-ge-rgmii-pins-1 {
-                        marvell,pins = "mpp44", "mpp45", "mpp46",
-                                       "mpp47", "mpp48", "mpp49",
-                                       "mpp50", "mpp51", "mpp52",
-                                       "mpp53", "mpp54", "mpp55";
-                        marvell,function = "ge1";
-                };
-                cp0_sdhci_cd_pins: cp0-sdhci-cd-pins-0 {
-                        marvell,pins = "mpp43";
-                        marvell,function = "gpio";
-                };
-                cp0_sdhci_pins: cp0-sdhi-pins-0 {
-                        marvell,pins = "mpp56", "mpp57", "mpp58",
-                                       "mpp59", "mpp60", "mpp61";
-                        marvell,function = "sdio";
-                };
-                cp0_spi0_pins: cp0-spi-pins-0 {
-                        marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
-                        marvell,function = "spi1";
-                };
-                nand_pins: nand-pins {
-                        marvell,pins =
-                        "mpp15", "mpp16", "mpp17", "mpp18", "mpp19",
-                        "mpp20", "mpp21", "mpp22", "mpp23", "mpp24",
-                        "mpp25", "mpp26", "mpp27";
-                        marvell,function = "dev";
-                };
-                nand_rb: nand-rb {
-                        marvell,pins = "mpp13";
-                        marvell,function = "nf";
-                };
-        };
-};
+#define CP11X_NAME                cp0
+#define CP11X_BASE                f2000000
+#define CP11X_PCIEx_MEM_BASE(iface) ((iface == 0) ? 0xc0000000 : \
+                                                    0xe0000000 + ((iface - 1) * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) ((iface == 0) ? 0x1ff00000 : 0xf00000)
+#define CP11X_PCIE0_BASE        f2600000
+#define CP11X_PCIE1_BASE        f2620000
+#define CP11X_PCIE2_BASE        f2640000
+
+#include "armada-cp115.dtsi"
+
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db-A.dts b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db-A.dts
deleted file mode 100644
index f08a748..0000000
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db-A.dts
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2018 Marvell International Ltd.
- *
- * SPDX-License-Identifier:    GPL-2.0
- * https://spdx.org/licenses
- */
-
-#include "cn9130-db-A.dts"
-#include "cn9131-db.dtsi"
-
-/ {
-        model = "Marvell CN9131 development board (CP NOR) setup(A)";
-        compatible = "marvell,cn9131-db-A", "marvell,armada-ap807-quad",
-                     "marvell,armada-ap807";
-};
-
-&cp1_ethernet {
-        status = "okay";
-};
-
-/* CON50 */
-&cp1_eth0 {
-        status = "okay";
-        phy-mode = "10gbase-kr";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp1_comphy4 0>;
-        managed = "in-band-status";
-        sfp = <&cp1_sfp_eth1>;
-};
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db.dts
similarity index 66%
rename from Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db.dtsi
rename to Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db.dts
index 9c9dfb6..a321810 100644
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db.dtsi
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9131-db.dts
@@ -1,35 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
- * Copyright (C) 2018 Marvell International Ltd.
+ * Copyright (C) 2019 Marvell International Ltd.
  *
- * SPDX-License-Identifier:    GPL-2.0
- * https://spdx.org/licenses
+ * Device tree for the CN9131-DB board.
  */
 
-#undef CP110_NUM
-#undef CP110_NAME
-#undef CP110_BASE
-#undef CP110_PCIE0_BASE
-#undef CP110_PCIE1_BASE
-#undef CP110_PCIE2_BASE
-#undef CP110_PCIEx_CPU_MEM_BASE
-#undef CP110_PCIEx_MEM_BASE
-
-/* CP110-1 Settings */
-#define CP110_NAME                       cp1
-#define CP110_NUM                        1
-#define CP110_BASE                       f4000000
-#define CP110_PCIE0_BASE                 f4600000
-#define CP110_PCIE1_BASE                 f4620000
-#define CP110_PCIE2_BASE                 f4640000
-#define CP110_PCIEx_CPU_MEM_BASE(iface)  (0xe2000000 + (iface) * 0x1000000)
-#define CP110_PCIEx_MEM_BASE(iface)      (CP110_PCIEx_CPU_MEM_BASE(iface))
-
-#include "armada-cp110.dtsi"
+#include "cn9130-db.dts"
 
 / {
-        model = "Marvell CN9131 development board";
-        compatible = "marvell,cn9131-db", "marvell,armada-ap807-quad",
-                     "marvell,armada-ap807";
+        model = "Marvell Armada CN9131-DB";
+        compatible = "marvell,cn9131", "marvell,cn9130",
+                     "marvell,armada-ap807-quad", "marvell,armada-ap807";
 
         aliases {
                 gpio3 = &cp1_gpio1;
@@ -63,14 +44,55 @@
                 tx-fault-gpio = <&cp1_gpio1 8 GPIO_ACTIVE_HIGH>;
                 pinctrl-names = "default";
                 pinctrl-0 = <&cp1_sfp_pins>;
+                /*
+                 * SFP cages are unconnected on early PCBs because of an the I2C
+                 * lanes not being connected. Prevent the port for being
+                 * unusable by disabling the SFP node.
+                 */
                 status = "disabled";
         };
 };
 
+/*
+ * Instantiate the first slave CP115
+ */
+
+#define CP11X_NAME                cp1
+#define CP11X_BASE                f4000000
+#define CP11X_PCIEx_MEM_BASE(iface) (0xe2000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#define CP11X_PCIE0_BASE        f4600000
+#define CP11X_PCIE1_BASE        f4620000
+#define CP11X_PCIE2_BASE        f4640000
+
+#include "armada-cp115.dtsi"
+
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
+
 &cp1_crypto {
+        status = "disabled";
+};
+
+&cp1_ethernet {
         status = "okay";
 };
 
+/* CON50 */
+&cp1_eth0 {
+        status = "disabled";
+        phy-mode = "10gbase-kr";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp1_comphy4 0>;
+        managed = "in-band-status";
+        sfp = <&cp1_sfp_eth1>;
+};
+
 &cp1_gpio1 {
         status = "okay";
 };
@@ -80,9 +102,9 @@
 };
 
 &cp1_i2c0 {
+        status = "okay";
         pinctrl-names = "default";
         pinctrl-0 = <&cp1_i2c0_pins>;
-        status = "okay";
         clock-frequency = <100000>;
 };
 
@@ -101,15 +123,20 @@
 
 &cp1_sata0 {
         status = "okay";
+
+        /* CON32 */
+        sata-port@1 {
+                /* Generic PHY, providing serdes lanes */
+                phys = <&cp1_comphy5 1>;
+        };
 };
 
 /* U24 */
 &cp1_spi1 {
+        status = "okay";
         pinctrl-names = "default";
         pinctrl-0 = <&cp1_spi0_pins>;
-        reg = <0x700680 0x50>,                /* control */
-              <0x2000000 0x1000000>;        /* CS0 */
-        status = "okay";
+        reg = <0x700680 0x50>;
 
         spi-flash@0 {
                 #address-cells = <0x1>;
@@ -125,12 +152,12 @@
                         #size-cells = <1>;
 
                         partition@0 {
-                                label = "U-Boot";
+                                label = "U-Boot-1";
                                 reg = <0x0 0x200000>;
                         };
 
                         partition@400000 {
-                                label = "Filesystem";
+                                label = "Filesystem-1";
                                 reg = <0x200000 0xe00000>;
                         };
                 };
@@ -140,7 +167,7 @@
 
 &cp1_syscon0 {
         cp1_pinctrl: pinctrl {
-                compatible = "marvell,armada-7k-pinctrl";
+                compatible = "marvell,cp115-standalone-pinctrl";
 
                 cp1_i2c0_pins: cp1-i2c-pins-0 {
                         marvell,pins = "mpp37", "mpp38";
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db-A.dts b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db-A.dts
deleted file mode 100644
index 724d7dc..0000000
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db-A.dts
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * copyright (c) 2019 marvell international ltd.
- *
- * spdx-license-identifier:    gpl-2.0
- * https://spdx.org/licenses
- */
-
-#include "cn9131-db-A.dts"
-#include "cn9132-db.dtsi"
-
-/ {
-        model = "Model: Marvell CN9132 development board (CP NOR) setup(A)";
-        compatible = "marvell,cn9132-db-A", "marvell,armada-ap807-quad",
-                     "marvell,armada-ap807";
-
-        aliases {
-                gpio5 = &cp2_gpio1;
-                gpio6 = &cp2_gpio2;
-                ethernet5 = &cp2_eth0;
-        };
-};
-
-&cp2_ethernet {
-        status = "okay";
-};
-
-/* SLM-1521-V2, CON9 */
-&cp2_eth0 {
-        status = "okay";
-        phy-mode = "10gbase-kr";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp2_comphy4 0>;
-        managed = "in-band-status";
-        sfp = <&cp2_sfp_eth0>;
-};
-
-/* SLM-1521-V2, CON6 */
-&cp2_pcie0 {
-        status = "okay";
-        num-lanes = <2>;
-        num-viewport = <8>;
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp2_comphy0 0
-                &cp2_comphy1 0>;
-};
-
-/* SLM-1521-V2, CON8 */
-&cp2_pcie2 {
-        status = "okay";
-        num-lanes = <1>;
-        num-viewport = <8>;
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp2_comphy5 2>;
-};
-
-&cp2_sata0 {
-        status = "okay";
-};
-
-/* CON 2 on SLM-1683 - microSD */
-&cp2_sdhci0 {
-        status = "okay";
-};
-
-/* SLM-1521-V2, CON11 */
-&cp2_usb3_1 {
-        status = "okay";
-        /* Generic PHY, providing serdes lanes */
-        phys = <&cp2_comphy3 1>;
-};
diff --git a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db.dtsi b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db.dts
similarity index 54%
rename from Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db.dtsi
rename to Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db.dts
index 7dc6c6e..8cb08ca 100644
--- a/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db.dtsi
+++ b/Silicon/Marvell/OcteonTx/DeviceTree/T91/cn9132-db.dts
@@ -1,35 +1,22 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
- * copyright (c) 2019 marvell international ltd.
+ * Copyright (C) 2019 Marvell International Ltd.
  *
- * spdx-license-identifier:    gpl-2.0
- * https://spdx.org/licenses
+ * Device tree for the CN9132-DB board.
  */
 
-#undef CP110_NUM
-#undef CP110_NAME
-#undef CP110_BASE
-#undef CP110_PCIE0_BASE
-#undef CP110_PCIE1_BASE
-#undef CP110_PCIE2_BASE
-#undef CP110_PCIEx_CPU_MEM_BASE
-#undef CP110_PCIEx_MEM_BASE
-
-/* CP110-1 Settings */
-#define CP110_NAME                       cp2
-#define CP110_NUM                        2
-#define CP110_BASE                       f6000000
-#define CP110_PCIE0_BASE                 f6600000
-#define CP110_PCIE1_BASE                 f6620000
-#define CP110_PCIE2_BASE                 f6640000
-#define CP110_PCIEx_CPU_MEM_BASE(iface)  (0xe5000000 + (iface) * 0x1000000)
-#define CP110_PCIEx_MEM_BASE(iface)      (CP110_PCIEx_CPU_MEM_BASE(iface))
-
-#include "armada-cp110.dtsi"
+#include "cn9131-db.dts"
 
 / {
-        model = "DB-CN-9132";
-        compatible = "marvell,cn9132", "marvell,armada-ap807-quad",
-                     "marvell,armada-ap807";
+        model = "Marvell Armada CN9132-DB";
+        compatible = "marvell,cn9132", "marvell,cn9131", "marvell,cn9130",
+                     "marvell,armada-ap807-quad", "marvell,armada-ap807";
+
+        aliases {
+                gpio5 = &cp2_gpio1;
+                gpio6 = &cp2_gpio2;
+                ethernet5 = &cp2_eth0;
+        };
 
         cp2_reg_usb3_vbus0: cp2_usb3_vbus@0 {
                 compatible = "regulator-fixed";
@@ -71,18 +58,59 @@
         cp2_sfp_eth0: sfp-eth0 {
                 compatible = "sff,sfp";
                 i2c-bus = <&cp2_sfpp0_i2c>;
-                los-gpio = <&cp2_moudle_expander1 11 GPIO_ACTIVE_HIGH>;
-                mod-def0-gpio = <&cp2_moudle_expander1 10 GPIO_ACTIVE_LOW>;
-                tx-disable-gpio = <&cp2_moudle_expander1 9 GPIO_ACTIVE_HIGH>;
-                tx-fault-gpio = <&cp2_moudle_expander1 8 GPIO_ACTIVE_HIGH>;
+                los-gpio = <&cp2_module_expander1 11 GPIO_ACTIVE_HIGH>;
+                mod-def0-gpio = <&cp2_module_expander1 10 GPIO_ACTIVE_LOW>;
+                tx-disable-gpio = <&cp2_module_expander1 9 GPIO_ACTIVE_HIGH>;
+                tx-fault-gpio = <&cp2_module_expander1 8 GPIO_ACTIVE_HIGH>;
+                /*
+                 * SFP cages are unconnected on early PCBs because of an the I2C
+                 * lanes not being connected. Prevent the port for being
+                 * unusable by disabling the SFP node.
+                 */
                 status = "disabled";
         };
 };
 
+/*
+ * Instantiate the second slave CP115
+ */
+
+#define CP11X_NAME                cp2
+#define CP11X_BASE                f6000000
+#define CP11X_PCIEx_MEM_BASE(iface) (0xe5000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#define CP11X_PCIE0_BASE        f6600000
+#define CP11X_PCIE1_BASE        f6620000
+#define CP11X_PCIE2_BASE        f6640000
+
+#include "armada-cp115.dtsi"
+
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
+
 &cp2_crypto {
+        status = "disabled";
+};
+
+&cp2_ethernet {
         status = "okay";
 };
 
+/* SLM-1521-V2, CON9 */
+&cp2_eth0 {
+        status = "disabled";
+        phy-mode = "10gbase-kr";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp2_comphy4 0>;
+        managed = "in-band-status";
+        sfp = <&cp2_sfp_eth0>;
+};
+
 &cp2_gpio1 {
         status = "okay";
 };
@@ -111,7 +139,7 @@
                         #size-cells = <0>;
                         reg = <1>;
                         /* U12 */
-                        cp2_moudle_expander1: pca9555@21 {
+                        cp2_module_expander1: pca9555@21 {
                                 compatible = "nxp,pca9555";
                                 pinctrl-names = "default";
                                 gpio-controller;
@@ -122,7 +150,38 @@
         };
 };
 
+/* SLM-1521-V2, CON6 */
+&cp2_pcie0 {
+        status = "okay";
+        num-lanes = <2>;
+        num-viewport = <8>;
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp2_comphy0 0
+                &cp2_comphy1 0>;
+};
+
+/* SLM-1521-V2, CON8 */
+&cp2_pcie2 {
+        status = "okay";
+        num-lanes = <1>;
+        num-viewport = <8>;
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp2_comphy5 2>;
+};
+
+&cp2_sata0 {
+        status = "okay";
+
+        /* SLM-1521-V2, CON4 */
+        sata-port@0 {
+                /* Generic PHY, providing serdes lanes */
+                phys = <&cp2_comphy2 0>;
+        };
+};
+
+/* CON 2 on SLM-1683 - microSD */
 &cp2_sdhci0 {
+        status = "okay";
         pinctrl-names = "default";
         pinctrl-0 = <&cp2_sdhci_pins>;
         bus-width = <4>;
@@ -132,7 +191,7 @@
 
 &cp2_syscon0 {
         cp2_pinctrl: pinctrl {
-                compatible = "marvell,armada-7k-pinctrl";
+                compatible = "marvell,cp115-standalone-pinctrl";
 
                 cp2_i2c0_pins: cp2-i2c-pins-0 {
                         marvell,pins = "mpp37", "mpp38";
@@ -152,8 +211,11 @@
         phy-names = "usb";
 };
 
+/* SLM-1521-V2, CON11 */
 &cp2_usb3_1 {
         status = "okay";
         usb-phy = <&cp2_usb3_0_phy1>;
         phy-names = "usb";
+        /* Generic PHY, providing serdes lanes */
+        phys = <&cp2_comphy3 1>;
 };
-- 
2.29.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [edk2-devel] [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update
  2021-03-18 19:57 [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Marcin Wojtas
                   ` (3 preceding siblings ...)
  2021-03-18 19:57 ` [edk2-non-osi PATCH 4/4] Marvell/OcteonTx: " Marcin Wojtas
@ 2021-04-15 19:00 ` Ard Biesheuvel
  2021-04-15 20:30   ` Marcin Wojtas
  4 siblings, 1 reply; 7+ messages in thread
From: Ard Biesheuvel @ 2021-04-15 19:00 UTC (permalink / raw)
  To: edk2-devel-groups-io, Marcin Wojtas
  Cc: Leif Lindholm, Ard Biesheuvel, Grzegorz Jaszczyk,
	Kostya Porotchkin, upstream, Jon Nettleton

On Thu, 18 Mar 2021 at 20:58, Marcin Wojtas <mw@semihalf.com> wrote:
>
> Hi,
>
> This patchset updates the device tree sources for Marvell Armada 7k8k
> and Octeon TX2 SoC families. The hardware description files
> are based on Linux v5.11 with the necessary EDK2 adjustments,
> i.e.
>  * disabled SPI flash devices
>  * fixed-clock tree
>  * disabled RTC nodes
>  * generic ECAM PCIE description for MacchiatoBin platform
>
> Armada 7k8k files are moved to edk2-non-osi. Moreover the diff
> for Octeon Tx2 is much more significant, as the original version
> was a custom tree (at the time of merge the mainline Linux reference
> version was non-existent).
>
> First patch should be merged to edk2-platforms and the remaining
> ones to the edk2-non-osi. The changes had to be sent together
> due to their strict dependency.
>
> The patches are also available in public branches:
> https://github.com/semihalf-wojtas-marcin/edk2-platforms/commits/dt-upstream-r20210318
> https://github.com/semihalf-wojtas-marcin/edk2-non-osi/commits/dt-upstream-r20210318
>
> Any comments would be welcome.
>
> Best regards,
> Marcin
>
> Marcin Wojtas (4):
>   [edk2-platforms]
>   Marvell/Armada7k8k: Remove device tree sources from edk2-platforms
>   [edk2-non-osi]
>   Marvell/Armada7k8k: Move device tree sources from edk2-platforms
>   Marvell/Armada7k8k: Update device trees
>   Marvell/OcteonTx: Update device trees
>

For the series,

Reviewed-by: Ard Biesheuvel <ardb@kernel.org>

Pushed as

04744d2432ba..fdd2ef2b3edb
efdc159ef7c9..4b53da6b12a8

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [edk2-devel] [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update
  2021-04-15 19:00 ` [edk2-devel] [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Ard Biesheuvel
@ 2021-04-15 20:30   ` Marcin Wojtas
  0 siblings, 0 replies; 7+ messages in thread
From: Marcin Wojtas @ 2021-04-15 20:30 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: edk2-devel-groups-io, Leif Lindholm, Ard Biesheuvel,
	Grzegorz Jaszczyk, Kostya Porotchkin, upstream, Jon Nettleton

czw., 15 kwi 2021 o 21:00 Ard Biesheuvel <ardb@kernel.org> napisał(a):
>
> On Thu, 18 Mar 2021 at 20:58, Marcin Wojtas <mw@semihalf.com> wrote:
> >
> > Hi,
> >
> > This patchset updates the device tree sources for Marvell Armada 7k8k
> > and Octeon TX2 SoC families. The hardware description files
> > are based on Linux v5.11 with the necessary EDK2 adjustments,
> > i.e.
> >  * disabled SPI flash devices
> >  * fixed-clock tree
> >  * disabled RTC nodes
> >  * generic ECAM PCIE description for MacchiatoBin platform
> >
> > Armada 7k8k files are moved to edk2-non-osi. Moreover the diff
> > for Octeon Tx2 is much more significant, as the original version
> > was a custom tree (at the time of merge the mainline Linux reference
> > version was non-existent).
> >
> > First patch should be merged to edk2-platforms and the remaining
> > ones to the edk2-non-osi. The changes had to be sent together
> > due to their strict dependency.
> >
> > The patches are also available in public branches:
> > https://github.com/semihalf-wojtas-marcin/edk2-platforms/commits/dt-upstream-r20210318
> > https://github.com/semihalf-wojtas-marcin/edk2-non-osi/commits/dt-upstream-r20210318
> >
> > Any comments would be welcome.
> >
> > Best regards,
> > Marcin
> >
> > Marcin Wojtas (4):
> >   [edk2-platforms]
> >   Marvell/Armada7k8k: Remove device tree sources from edk2-platforms
> >   [edk2-non-osi]
> >   Marvell/Armada7k8k: Move device tree sources from edk2-platforms
> >   Marvell/Armada7k8k: Update device trees
> >   Marvell/OcteonTx: Update device trees
> >
>
> For the series,
>
> Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
>
> Pushed as
>
> 04744d2432ba..fdd2ef2b3edb
> efdc159ef7c9..4b53da6b12a8

Thanks!
Marcin

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-04-15 20:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-03-18 19:57 [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Marcin Wojtas
2021-03-18 19:57 ` [edk2-non-osi PATCH 2/4] Marvell/Armada7k8k: Move device tree sources from edk2-platforms Marcin Wojtas
2021-03-18 19:57 ` [edk2-platforms PATCH 1/4] Marvell/Armada7k8k: Remove " Marcin Wojtas
2021-03-18 19:57 ` [edk2-non-osi PATCH 3/4] Marvell/Armada7k8k: Update device trees Marcin Wojtas
2021-03-18 19:57 ` [edk2-non-osi PATCH 4/4] Marvell/OcteonTx: " Marcin Wojtas
2021-04-15 19:00 ` [edk2-devel] [edk2-non-osi/edk2-platforms PATCH 0/4] Marvell SoCs device tree update Ard Biesheuvel
2021-04-15 20:30   ` Marcin Wojtas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox