arm: dts: apple: Update Apple M1 device trees
authorMark Kettenis <kettenis@openbsd.org>
Mon, 10 Jan 2022 19:58:42 +0000 (20:58 +0100)
committerJaehoon Chung <jh80.chung@samsung.com>
Sun, 16 Jan 2022 21:56:00 +0000 (06:56 +0900)
This synchronizes the device trees with those that are in the
process of being upstreamed into Linux. This is mostly the
current state of the device trees on the asahilinux branch
with a few extra bits used by OpenBSD. This includes device
trees for machines that were still missing.

There are still some differences that will hopefully be resolved
soon.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/arm/dts/Makefile
arch/arm/dts/t8103-j274.dts
arch/arm/dts/t8103-j293.dts
arch/arm/dts/t8103-j313.dts [new file with mode: 0644]
arch/arm/dts/t8103-j456.dts [new file with mode: 0644]
arch/arm/dts/t8103-j457.dts [new file with mode: 0644]
arch/arm/dts/t8103-jxxx.dtsi [new file with mode: 0644]
arch/arm/dts/t8103-pmgr.dtsi [new file with mode: 0644]
arch/arm/dts/t8103.dtsi

index aeaec71..1b65e65 100644 (file)
@@ -34,7 +34,10 @@ dtb-$(CONFIG_TARGET_A7Y17LTE) += exynos78x0-axy17lte.dtb
 
 dtb-$(CONFIG_ARCH_APPLE) += \
        t8103-j274.dtb \
-       t8103-j293.dtb
+       t8103-j293.dtb \
+       t8103-j313.dtb \
+       t8103-j456.dtb \
+       t8103-j457.dtb
 
 dtb-$(CONFIG_ARCH_DAVINCI) += \
        da850-evm.dtb \
index aef1ae2..9bc592b 100644 (file)
 /dts-v1/;
 
 #include "t8103.dtsi"
+#include "t8103-jxxx.dtsi"
 
 / {
        compatible = "apple,j274", "apple,t8103", "apple,arm-platform";
        model = "Apple Mac mini (M1, 2020)";
 
        aliases {
-               serial0 = &serial0;
-               ethernet0 = &eth0;
-               wifi0 = &wifi0;
-       };
-
-       chosen {
-               #address-cells = <2>;
-               #size-cells = <2>;
-               ranges;
-
-               stdout-path = "serial0";
-
-               framebuffer0: framebuffer@0 {
-                       compatible = "apple,simple-framebuffer", "simple-framebuffer";
-                       reg = <0 0 0 0>; /* To be filled by loader */
-                       /* Format properties will be added by loader */
-                       status = "disabled";
-               };
-       };
-
-       memory@800000000 {
-               device_type = "memory";
-               reg = <0x8 0 0x2 0>; /* To be filled by loader */
+               ethernet0 = &ethernet0;
        };
 };
 
-&serial0 {
-       status = "okay";
+&wifi0 {
+       brcm,board-type = "apple,atlantisb";
 };
 
-&pcie0_dart_0 {
-       status = "okay";
-};
+/*
+ * Provide labels for the USB type C ports.
+ */
 
-&pcie0_dart_1 {
-       status = "okay";
+&typec0 {
+       label = "USB-C Back-left";
 };
 
-&pcie0_dart_2 {
-       status = "okay";
+&typec1 {
+       label = "USB-C Back-right";
 };
 
-&pcie0 {
-       status = "okay";
-
-       pci0: pci@0,0 {
-               device_type = "pci";
-               reg = <0x0 0x0 0x0 0x0 0x0>;
-               pwren-gpios = <&smc 13 0>;
-               reset-gpios = <&pinctrl_ap 152 0>;
-               max-link-speed = <2>;
-
-               #address-cells = <3>;
-               #size-cells = <2>;
-               ranges;
-       };
-
-       pci1: pci@1,0 {
-               device_type = "pci";
-               reg = <0x800 0x0 0x0 0x0 0x0>;
-               reset-gpios = <&pinctrl_ap 153 0>;
-               max-link-speed = <2>;
-
-               #address-cells = <3>;
-               #size-cells = <2>;
-               ranges;
-       };
-
-       pci2: pci@2,0 {
-               device_type = "pci";
-               reg = <0x1000 0x0 0x0 0x0 0x0>;
-               reset-gpios = <&pinctrl_ap 33 0>;
-               max-link-speed = <1>;
-
-               #address-cells = <3>;
-               #size-cells = <2>;
-               ranges;
-       };
-};
+/*
+ * Force the bus number assignments so that we can declare some of the
+ * on-board devices and properties that are populated by the bootloader
+ * (such as MAC addresses).
+ */
 
-&pci0 {
-       wifi0: network@0,0 {
-               reg = <0x10000 0x0 0x0 0x0 0x0>;
-               local-mac-address = [00 00 00 00 00 00];
-       };
+&port01 {
+       bus-range = <2 2>;
 };
 
-&pci2 {
-       eth0: ethernet@0,0 {
+&port02 {
+       bus-range = <3 3>;
+       ethernet0: ethernet@0,0 {
                reg = <0x30000 0x0 0x0 0x0 0x0>;
-               local-mac-address = [00 00 00 00 00 00];
+               /* To be filled by the loader */
+               local-mac-address = [00 10 18 00 00 00];
        };
 };
 
-&dwc3_0_dart_0 {
-       status = "okay";
-};
+&i2c1 {
+       clock-frequency = <50000>;
 
-&dwc3_0_dart_1 {
-       status = "okay";
+       speaker_amp: codec@31 {
+               compatible = "ti,tas5770l", "ti,tas2770";
+               reg = <0x31>;
+               reset-gpios = <&pinctrl_ap 181 GPIO_ACTIVE_HIGH>;
+               #sound-dai-cells = <0>;
+       };
 };
 
-&dwc3_0 {
+&i2c2 {
        status = "okay";
-};
 
-&dwc3_1_dart_0 {
-       status = "okay";
-};
+       clock-frequency = <50000>;
 
-&dwc3_1_dart_1 {
-       status = "okay";
+       jack_codec: codec@48 {
+               compatible = "cirrus,cs42l83", "cirrus,cs42l42";
+               reg = <0x48>;
+               reset-gpios = <&pinctrl_nub 11 GPIO_ACTIVE_HIGH>;
+               interrupt-parent = <&pinctrl_ap>;
+               interrupts = <183 IRQ_TYPE_LEVEL_LOW>;
+               #sound-dai-cells = <0>;
+               cirrus,ts-inv = <1>;
+       };
 };
 
-&dwc3_1 {
-       status = "okay";
+/ {
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "Mac mini integrated audio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               simple-audio-card,dai-link@0 {
+                       reg = <0>;
+                       format = "left_j";
+                       tdm-slot-width = <32>;
+                       mclk-fs = <64>;
+
+                       link0_cpu: cpu {
+                               sound-dai = <&mca 0>;
+                               bitclock-master;
+                               frame-master;
+                       };
+
+                       link0_codec: codec {
+                               sound-dai = <&speaker_amp>;
+                       };
+               };
+
+               simple-audio-card,dai-link@1 {
+                       bitclock-inversion;
+                       frame-inversion;
+                       reg = <1>;
+                       format = "i2s";
+                       mclk-fs = <64>;
+                       tdm-slot-width = <32>;
+
+                       link1_cpu: cpu {
+                               sound-dai = <&mca 2>;
+                               bitclock-master;
+                               frame-master;
+                       };
+
+                       link1_codec: codec {
+                               sound-dai = <&jack_codec>;
+                       };
+               };
+       };
 };
index 4a22596..de1a21d 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0+ OR MIT
 /*
- * Apple Macbook Pro (M1, 2020)
+ * Apple MacBook Pro (13-inch, M1, 2020)
  *
  * target-type: J293
  *
 /dts-v1/;
 
 #include "t8103.dtsi"
+#include "t8103-jxxx.dtsi"
 
 / {
        compatible = "apple,j293", "apple,t8103", "apple,arm-platform";
-       model = "Apple Macbook Pro (M1, 2020)";
-
-       aliases {
-               serial0 = &serial0;
-               wifi0 = &wifi0;
-       };
-
-       chosen {
-               #address-cells = <2>;
-               #size-cells = <2>;
-               ranges;
-
-               stdout-path = "serial0";
-
-               framebuffer0: framebuffer@0 {
-                       compatible = "apple,simple-framebuffer", "simple-framebuffer";
-                       reg = <0 0 0 0>; /* To be filled by loader */
-                       /* Format properties will be added by loader */
-                       status = "disabled";
-               };
-       };
+       model = "Apple MacBook Pro (13-inch, M1, 2020)";
+};
 
-       memory@800000000 {
-               device_type = "memory";
-               reg = <0x8 0 0x2 0>; /* To be filled by loader */
-       };
+&wifi0 {
+       brcm,board-type = "apple,honshu";
 };
 
-&serial0 {
-       status = "okay";
+/*
+ * Provide labels for the USB type C ports.
+ */
+
+&typec0 {
+       label = "USB-C Left-back";
 };
 
-&pcie0_dart_0 {
-       status = "okay";
+&typec1 {
+       label = "USB-C Left-front";
 };
 
-&pcie0 {
+&spi3 {
        status = "okay";
 
-       pci0: pci@0,0 {
-               device_type = "pci";
-               reg = <0x0 0x0 0x0 0x0 0x0>;
-               pwren-gpios = <&smc 13 0>;
-               reset-gpios = <&pinctrl_ap 152 0>;
-               max-link-speed = <2>;
-
-               #address-cells = <3>;
-               #size-cells = <2>;
-               ranges;
+       hid-transport@0 {
+               compatible = "apple,spi-hid-transport";
+               reg = <0>;
+               spi-max-frequency = <8000000>;
+               /*
+                * cs-setup and cs-hold delays are derived from Apple's ADT
+                * Mac OS driver meta data secify 45 us for 'cs to clock' and
+                * 'clock to cs' delays.
+                */
+               spi-cs-setup-delay-ns = <20000>;
+               spi-cs-hold-delay-ns = <20000>;
+               spi-cs-inactive-delay-ns = <250000>;
+               spien-gpios = <&pinctrl_ap 195 0>;
+               interrupts-extended = <&pinctrl_nub 13 IRQ_TYPE_LEVEL_LOW>;
        };
 };
 
-&pci0 {
-       wifi0: network@0,0 {
-               reg = <0x10000 0x0 0x0 0x0 0x0>;
-               local-mac-address = [00 00 00 00 00 00];
-       };
-};
+/*
+ * Remove unused PCIe ports and disable the associated DARTs.
+ */
 
-&dwc3_0_dart_0 {
-       status = "okay";
+&pcie0_dart_1 {
+       status = "disabled";
 };
 
-&dwc3_0_dart_1 {
-       status = "okay";
+&pcie0_dart_2 {
+       status = "disabled";
 };
 
-&dwc3_0 {
-       status = "okay";
-};
+/delete-node/ &port01;
+/delete-node/ &port02;
 
-&dwc3_1_dart_0 {
+&i2c2 {
        status = "okay";
+       clock-frequency = <50000>;
+
+       jack_codec: codec@48 {
+               compatible = "cirrus,cs42l83", "cirrus,cs42l42";
+               reg = <0x48>;
+               reset-gpios = <&pinctrl_nub 11 GPIO_ACTIVE_HIGH>;
+               interrupt-parent = <&pinctrl_ap>;
+               interrupts = <183 IRQ_TYPE_LEVEL_LOW>;
+               #sound-dai-cells = <0>;
+               cirrus,ts-inv = <1>;
+       };
 };
 
-&dwc3_1_dart_1 {
+&i2c4 {
        status = "okay";
 };
 
-&dwc3_1 {
-       status = "okay";
+/ {
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "MacBook integrated audio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               simple-audio-card,dai-link@0 {
+                       bitclock-inversion;
+                       frame-inversion;
+                       reg = <0>;
+                       format = "i2s";
+                       mclk-fs = <64>;
+                       tdm-slot-width = <32>;
+
+                       link0_cpu: cpu {
+                               sound-dai = <&mca 2>;
+                               bitclock-master;
+                               frame-master;
+                       };
+
+                       link0_codec: codec {
+                               sound-dai = <&jack_codec>;
+                       };
+               };
+       };
 };
diff --git a/arch/arm/dts/t8103-j313.dts b/arch/arm/dts/t8103-j313.dts
new file mode 100644 (file)
index 0000000..5efe8d7
--- /dev/null
@@ -0,0 +1,111 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple MacBook Air (M1, 2020)
+ *
+ * target-type: J313
+ *
+ * Copyright The Asahi Linux Contributors
+ */
+
+/dts-v1/;
+
+#include "t8103.dtsi"
+#include "t8103-jxxx.dtsi"
+
+/ {
+       compatible = "apple,j313", "apple,t8103", "apple,arm-platform";
+       model = "Apple MacBook Air (M1, 2020)";
+};
+
+&wifi0 {
+       brcm,board-type = "apple,shikoku";
+};
+
+/*
+ * Provide labels for the USB type C ports.
+ */
+
+&typec0 {
+       label = "USB-C Left-back";
+};
+
+&typec1 {
+       label = "USB-C Left-front";
+};
+
+&spi3 {
+       status = "okay";
+
+       hid-transport@0 {
+               compatible = "apple,spi-hid-transport";
+               reg = <0>;
+               spi-max-frequency = <8000000>;
+               /*
+                * cs-setup and cs-hold delays are derived from Apple's ADT
+                * Mac OS driver meta data secify 45 us for 'cs to clock' and
+                * 'clock to cs' delays.
+                */
+               spi-cs-setup-delay-ns = <20000>;
+               spi-cs-hold-delay-ns = <20000>;
+               spi-cs-inactive-delay-ns = <250000>;
+               spien-gpios = <&pinctrl_ap 195 0>;
+               interrupts-extended = <&pinctrl_nub 13 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+/*
+ * Remove unused PCIe ports and disable the associated DARTs.
+ */
+
+&pcie0_dart_1 {
+       status = "disabled";
+};
+
+&pcie0_dart_2 {
+       status = "disabled";
+};
+
+/delete-node/ &port01;
+/delete-node/ &port02;
+
+&i2c3 {
+       clock-frequency = <50000>;
+
+       jack_codec: codec@48 {
+               compatible = "cirrus,cs42l83", "cirrus,cs42l42";
+               reg = <0x48>;
+               reset-gpios = <&pinctrl_nub 11 GPIO_ACTIVE_HIGH>;
+               interrupt-parent = <&pinctrl_ap>;
+               interrupts = <183 IRQ_TYPE_LEVEL_LOW>;
+               #sound-dai-cells = <0>;
+               cirrus,ts-inv = <1>;
+       };
+};
+
+/ {
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "MacBook integrated audio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               simple-audio-card,dai-link@0 {
+                       bitclock-inversion;
+                       frame-inversion;
+                       reg = <0>;
+                       format = "i2s";
+                       mclk-fs = <64>;
+                       tdm-slot-width = <32>;
+
+                       link0_cpu: cpu {
+                               sound-dai = <&mca 2>;
+                               bitclock-master;
+                               frame-master;
+                       };
+
+                       link0_codec: codec {
+                               sound-dai = <&jack_codec>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/t8103-j456.dts b/arch/arm/dts/t8103-j456.dts
new file mode 100644 (file)
index 0000000..8624168
--- /dev/null
@@ -0,0 +1,117 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple iMac (24-inch, 4x USB-C, M1, 2020)
+ *
+ * target-type: J456
+ *
+ * Copyright The Asahi Linux Contributors
+ */
+
+/dts-v1/;
+
+#include "t8103.dtsi"
+#include "t8103-jxxx.dtsi"
+
+/ {
+       compatible = "apple,j456", "apple,t8103", "apple,arm-platform";
+       model = "Apple iMac (24-inch, 4x USB-C, M1, 2020)";
+
+       aliases {
+               ethernet0 = &ethernet0;
+       };
+};
+
+&wifi0 {
+       brcm,board-type = "apple,capri";
+};
+
+&i2c0 {
+       hpm2: usb-pd@3b {
+               compatible = "apple,cd321x";
+               reg = <0x3b>;
+               interrupt-parent = <&pinctrl_ap>;
+               interrupts = <106 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "irq";
+       };
+
+       hpm3: usb-pd@3c {
+               compatible = "apple,cd321x";
+               reg = <0x3c>;
+               interrupt-parent = <&pinctrl_ap>;
+               interrupts = <106 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "irq";
+       };
+};
+
+/*
+ * Provide labels for the USB type C ports.
+ */
+
+&typec0 {
+       label = "USB-C Back-right";
+};
+
+&typec1 {
+       label = "USB-C Back-right-middle";
+};
+
+/*
+ * Force the bus number assignments so that we can declare some of the
+ * on-board devices and properties that are populated by the bootloader
+ * (such as MAC addresses).
+ */
+
+&port01 {
+       bus-range = <2 2>;
+};
+
+&port02 {
+       bus-range = <3 3>;
+       ethernet0: ethernet@0,0 {
+               reg = <0x30000 0x0 0x0 0x0 0x0>;
+               /* To be filled by the loader */
+               local-mac-address = [00 10 18 00 00 00];
+       };
+};
+
+&i2c1 {
+       clock-frequency = <50000>;
+
+       jack_codec: codec@48 {
+               compatible = "cirrus,cs42l83", "cirrus,cs42l42";
+               reg = <0x48>;
+               reset-gpios = <&pinctrl_nub 11 GPIO_ACTIVE_HIGH>;
+               interrupt-parent = <&pinctrl_ap>;
+               interrupts = <183 IRQ_TYPE_LEVEL_LOW>;
+               #sound-dai-cells = <0>;
+               cirrus,ts-inv = <1>;
+       };
+};
+
+/ {
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "iMac integrated audio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               simple-audio-card,dai-link@0 {
+                       bitclock-inversion;
+                       frame-inversion;
+                       reg = <0>;
+                       format = "i2s";
+                       mclk-fs = <64>;
+                       tdm-slot-width = <32>;
+
+                       link0_cpu: cpu {
+                               sound-dai = <&mca 2>;
+                               bitclock-master;
+                               frame-master;
+                       };
+
+                       link0_codec: codec {
+                               sound-dai = <&jack_codec>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/t8103-j457.dts b/arch/arm/dts/t8103-j457.dts
new file mode 100644 (file)
index 0000000..f3eec8d
--- /dev/null
@@ -0,0 +1,105 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple iMac (24-inch, 2x USB-C, M1, 2020)
+ *
+ * target-type: J457
+ *
+ * Copyright The Asahi Linux Contributors
+ */
+
+/dts-v1/;
+
+#include "t8103.dtsi"
+#include "t8103-jxxx.dtsi"
+
+/ {
+       compatible = "apple,j457", "apple,t8103", "apple,arm-platform";
+       model = "Apple iMac (24-inch, 2x USB-C, M1, 2020)";
+
+       aliases {
+               ethernet0 = &ethernet0;
+       };
+};
+
+&wifi0 {
+       brcm,board-type = "apple,santorini";
+};
+
+/*
+ * Provide labels for the USB type C ports.
+ */
+
+&typec0 {
+       label = "USB-C Back-right";
+};
+
+&typec1 {
+       label = "USB-C Back-left";
+};
+
+/*
+ * Force the bus number assignments so that we can declare some of the
+ * on-board devices and properties that are populated by the bootloader
+ * (such as MAC addresses).
+ */
+
+&port02 {
+       bus-range = <3 3>;
+       ethernet0: ethernet@0,0 {
+               reg = <0x30000 0x0 0x0 0x0 0x0>;
+               /* To be filled by the loader */
+               local-mac-address = [00 10 18 00 00 00];
+       };
+};
+
+/*
+ * Remove unused PCIe port and disable the associated DART.
+ */
+
+&pcie0_dart_1 {
+       status = "disabled";
+};
+
+/delete-node/ &port01;
+
+&i2c1 {
+       clock-frequency = <50000>;
+
+       jack_codec: codec@48 {
+               compatible = "cirrus,cs42l83", "cirrus,cs42l42";
+               reg = <0x48>;
+               reset-gpios = <&pinctrl_nub 11 GPIO_ACTIVE_HIGH>;
+               interrupt-parent = <&pinctrl_ap>;
+               interrupts = <183 IRQ_TYPE_LEVEL_LOW>;
+               #sound-dai-cells = <0>;
+               cirrus,ts-inv = <1>;
+       };
+};
+
+/ {
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "iMac integrated audio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               simple-audio-card,dai-link@0 {
+                       bitclock-inversion;
+                       frame-inversion;
+                       reg = <0>;
+                       format = "i2s";
+                       mclk-fs = <64>;
+                       tdm-slot-width = <32>;
+
+                       link0_cpu: cpu {
+                               sound-dai = <&mca 2>;
+                               bitclock-master;
+                               frame-master;
+                       };
+
+                       link0_codec: codec {
+                               sound-dai = <&jack_codec>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/t8103-jxxx.dtsi b/arch/arm/dts/t8103-jxxx.dtsi
new file mode 100644 (file)
index 0000000..b4bd8c4
--- /dev/null
@@ -0,0 +1,143 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple M1 Mac mini, MacBook Air/Pro, iMac 24" (M1, 2020/2021)
+ *
+ * This file contains parts common to all Apple M1 devices using the t8103.
+ *
+ * target-type: J274, J293, J313, J456, J457
+ *
+ * Copyright The Asahi Linux Contributors
+ */
+
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+       aliases {
+               serial0 = &serial0;
+               serial2 = &serial2;
+               wifi0 = &wifi0;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               stdout-path = "serial0";
+
+               framebuffer0: framebuffer@0 {
+                       compatible = "apple,simple-framebuffer", "simple-framebuffer";
+                       reg = <0 0 0 0>; /* To be filled by loader */
+                       /* Format properties will be added by loader */
+                       status = "disabled";
+               };
+       };
+
+       memory@800000000 {
+               device_type = "memory";
+               reg = <0x8 0 0x2 0>; /* To be filled by loader */
+       };
+};
+
+&serial0 {
+       status = "okay";
+};
+
+&serial2 {
+       status = "okay";
+};
+
+&i2c0 {
+       hpm0: usb-pd@38 {
+               compatible = "apple,cd321x";
+               reg = <0x38>;
+               interrupt-parent = <&pinctrl_ap>;
+               interrupts = <106 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "irq";
+
+               typec0: connector {
+                       compatible = "usb-c-connector";
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               port@0 {
+                                       reg = <0>;
+                                       typec0_con_hs: endpoint {
+                                               remote-endpoint = <&typec0_usb_hs>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       hpm1: usb-pd@3f {
+               compatible = "apple,cd321x";
+               reg = <0x3f>;
+               interrupt-parent = <&pinctrl_ap>;
+               interrupts = <106 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "irq";
+
+               typec1: connector {
+                       compatible = "usb-c-connector";
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               port@0 {
+                                       reg = <0>;
+                                       typec1_con_hs: endpoint {
+                                               remote-endpoint = <&typec1_usb_hs>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
+/* USB controllers */
+&dwc3_0 {
+       port {
+               typec0_usb_hs: endpoint {
+                       remote-endpoint = <&typec0_con_hs>;
+               };
+       };
+};
+
+&dwc3_1 {
+       port {
+               typec1_usb_hs: endpoint {
+                       remote-endpoint = <&typec1_con_hs>;
+               };
+       };
+};
+
+/*
+ * Force the bus number assignments so that we can declare some of the
+ * on-board devices and properties that are populated by the bootloader
+ * (such as MAC addresses).
+ */
+&port00 {
+       bus-range = <1 1>;
+       pwren-gpios = <&smc 13 0>;
+       wifi0: network@0,0 {
+               compatible = "pci14e4,4425";
+               reg = <0x10000 0x0 0x0 0x0 0x0>;
+               /* To be filled by the loader */
+               local-mac-address = [00 00 00 00 00 00];
+               apple,antenna-sku = "XX";
+       };
+};
+
+&spmi {
+       status = "okay";
+
+       pmu@f {
+               compatible = "apple,sera-pmu";
+               reg = <0xf SPMI_USID>;
+       };
+};
diff --git a/arch/arm/dts/t8103-pmgr.dtsi b/arch/arm/dts/t8103-pmgr.dtsi
new file mode 100644 (file)
index 0000000..82ea4aa
--- /dev/null
@@ -0,0 +1,1138 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple T8103 "M1" SoC
+ *
+ * Copyright The Asahi Linux Contributors
+ */
+
+
+&pmgr {
+       ps_sbr: power-controller@100 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sbr";
+               apple,always-on; /* Core device */
+       };
+
+       ps_aic: power-controller@108 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_dwi: power-controller@110 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dwi";
+               apple,always-on; /* Core device */
+       };
+
+       ps_soc_spmi0: power-controller@118 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "soc_spmi0";
+       };
+
+       ps_soc_spmi1: power-controller@120 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "soc_spmi1";
+       };
+
+       ps_soc_spmi2: power-controller@128 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "soc_spmi2";
+       };
+
+       ps_gpio: power-controller@130 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_pms_busif: power-controller@138 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_busif";
+               apple,always-on; /* Core device */
+       };
+
+       ps_pms: power-controller@140 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms";
+               apple,always-on; /* Core device */
+       };
+
+       ps_pms_fpwm0: power-controller@148 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_fpwm0";
+               power-domains = <&ps_pms>;
+       };
+
+       ps_pms_fpwm1: power-controller@150 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x150 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_fpwm1";
+               power-domains = <&ps_pms>;
+       };
+
+       ps_pms_fpwm2: power-controller@158 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x158 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_fpwm2";
+               power-domains = <&ps_pms>;
+       };
+
+       ps_pms_fpwm3: power-controller@160 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_fpwm3";
+               power-domains = <&ps_pms>;
+       };
+
+       ps_pms_fpwm4: power-controller@168 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_fpwm4";
+               power-domains = <&ps_pms>;
+       };
+
+       ps_soc_dpe: power-controller@170 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "soc_dpe";
+               apple,always-on; /* Core device */
+       };
+
+       ps_pmgr_soc_ocla: power-controller@178 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pmgr_soc_ocla";
+       };
+
+       ps_ispsens0: power-controller@180 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens0";
+       };
+
+       ps_ispsens1: power-controller@188 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens1";
+       };
+
+       ps_ispsens2: power-controller@190 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens2";
+       };
+
+       ps_ispsens3: power-controller@198 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens3";
+       };
+
+       ps_pcie_ref: power-controller@1a0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_ref";
+       };
+
+       ps_aft0: power-controller@1a8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aft0";
+       };
+
+       ps_devc0_ivdmc: power-controller@1b0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "devc0_ivdmc";
+       };
+
+       ps_imx: power-controller@1b8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "imx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_sio_busif: power-controller@1c0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_busif";
+       };
+
+       ps_sio: power-controller@1c8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_busif>;
+       };
+
+       ps_sio_cpu: power-controller@1d0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_cpu";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_fpwm0: power-controller@1d8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "fpwm0";
+       };
+
+       ps_fpwm1: power-controller@1e0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "fpwm1";
+       };
+
+       ps_fpwm2: power-controller@1e8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "fpwm2";
+       };
+
+       ps_i2c0: power-controller@1f0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_i2c1: power-controller@1f8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x1f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_i2c2: power-controller@200 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_i2c3: power-controller@208 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_i2c4: power-controller@210 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x210 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c4";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_spi_p: power-controller@218 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi_p";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_uart_p: power-controller@220 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x220 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart_p";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_audio_p: power-controller@228 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x228 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "audio_p";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_sio_adma: power-controller@230 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x230 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_adma";
+               power-domains = <&ps_sio>, <&ps_pms>;
+       };
+
+       ps_aes: power-controller@238 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x238 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aes";
+               power-domains = <&ps_sio>;
+       };
+
+       ps_spi0: power-controller@240 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x240 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio>, <&ps_spi_p>;
+       };
+
+       ps_spi1: power-controller@248 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x248 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio>, <&ps_spi_p>;
+       };
+
+       ps_spi2: power-controller@250 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x250 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio>, <&ps_spi_p>;
+       };
+
+       ps_spi3: power-controller@258 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x258 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio>, <&ps_spi_p>;
+       };
+
+       ps_uart_n: power-controller@268 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart_n";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_uart0: power-controller@270 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x270 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_uart1: power-controller@278 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x278 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_uart2: power-controller@280 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x280 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_uart3: power-controller@288 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x288 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_uart4: power-controller@290 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x290 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_uart5: power-controller@298 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x298 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart5";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_uart6: power-controller@2a0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart6";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_uart7: power-controller@2a8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart7";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_uart8: power-controller@2b0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart8";
+               power-domains = <&ps_uart_p>;
+       };
+
+       ps_mca0: power-controller@2b8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_audio_p>, <&ps_sio_adma>, <&ps_mca1>, <&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>;
+       };
+
+       ps_mca1: power-controller@2c0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_audio_p>, <&ps_sio_adma>;
+       };
+
+       ps_mca2: power-controller@2c8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_audio_p>, <&ps_sio_adma>;
+       };
+
+       ps_mca3: power-controller@2d0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_audio_p>, <&ps_sio_adma>;
+       };
+
+       ps_mca4: power-controller@2d8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_audio_p>, <&ps_sio_adma>;
+       };
+
+       ps_mca5: power-controller@2e0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca5";
+               power-domains = <&ps_audio_p>, <&ps_sio_adma>;
+       };
+
+       ps_dpa0: power-controller@2e8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dpa0";
+               power-domains = <&ps_audio_p>;
+       };
+
+       ps_dpa1: power-controller@2f0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dpa1";
+               power-domains = <&ps_audio_p>;
+       };
+
+       ps_mcc: power-controller@2f8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x2f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Memory controller */
+       };
+
+       ps_spi4: power-controller@260 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi4";
+               power-domains = <&ps_sio>, <&ps_spi_p>;
+       };
+
+       ps_dcs0: power-controller@300 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x300 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs0";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs1: power-controller@310 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x310 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs1";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs2: power-controller@308 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x308 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs2";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs3: power-controller@318 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x318 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs3";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_smx: power-controller@340 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x340 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_apcie: power-controller@348 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x348 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "apcie";
+               power-domains = <&ps_imx>, <&ps_pcie_ref>;
+       };
+
+       ps_rmx: power-controller@350 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x350 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "rmx";
+               /* Apple Fabric, display/image stuff: this can power down */
+       };
+
+       ps_mmx: power-controller@358 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x358 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mmx";
+               /* Apple Fabric, media stuff: this can power down */
+       };
+
+       ps_disp0_fe: power-controller@360 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x360 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_fe";
+               power-domains = <&ps_rmx>;
+               apple,always-on; /* TODO: figure out if we can enable PM here */
+       };
+
+       ps_dispext_fe: power-controller@368 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x368 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dispext_fe";
+               power-domains = <&ps_rmx>;
+       };
+
+       ps_dispext_cpu0: power-controller@378 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x378 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dispext_cpu0";
+               power-domains = <&ps_dispext_fe>;
+               apple,min-state = <4>;
+       };
+
+       ps_jpg: power-controller@3c0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_mmx>;
+       };
+
+       ps_msr: power-controller@3c8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_mmx>;
+       };
+
+       ps_msr_ase_core: power-controller@3d0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr_ase_core";
+       };
+
+       ps_pmp: power-controller@3d8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pmp";
+       };
+
+       ps_pms_sram: power-controller@3e0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_sram";
+       };
+
+       ps_apcie_gp: power-controller@3e8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "apcie_gp";
+               power-domains = <&ps_apcie>;
+       };
+
+       ps_ans2: power-controller@3f0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ans2";
+               /*
+                * The ADT makes ps_apcie_st depend on ps_ans2 instead, but this
+                * doesn't make much sense since ANS2 uses APCIE_ST.
+                */
+               power-domains = <&ps_apcie_st>;
+       };
+
+       ps_gfx: power-controller@3f8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gfx";
+       };
+
+       ps_dcs4: power-controller@320 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x320 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs4";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs5: power-controller@330 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x330 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs5";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs6: power-controller@328 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x328 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs6";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs7: power-controller@338 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x338 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs7";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dispdfr_fe: power-controller@3a8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dispdfr_fe";
+               power-domains = <&ps_rmx>;
+       };
+
+       ps_dispdfr_be: power-controller@3b0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dispdfr_be";
+               power-domains = <&ps_dispdfr_fe>;
+       };
+
+       ps_mipi_dsi: power-controller@3b8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x3b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mipi_dsi";
+               power-domains = <&ps_dispdfr_be>;
+       };
+
+       ps_isp_sys: power-controller@400 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x400 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sys";
+               power-domains = <&ps_rmx>;
+       };
+
+       ps_venc_sys: power-controller@408 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x408 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_sys";
+               power-domains = <&ps_mmx>;
+       };
+
+       ps_avd_sys: power-controller@410 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x410 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "avd_sys";
+               power-domains = <&ps_mmx>;
+       };
+
+       ps_apcie_st: power-controller@418 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x418 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "apcie_st";
+               power-domains = <&ps_apcie>;
+       };
+
+       ps_ane_sys: power-controller@470 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x470 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ane_sys";
+       };
+
+       ps_atc0_common: power-controller@420 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x420 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc0_common";
+       };
+
+       ps_atc0_pcie: power-controller@428 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x428 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc0_pcie";
+               power-domains = <&ps_atc0_common>;
+       };
+
+       ps_atc0_cio: power-controller@430 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x430 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc0_cio";
+               power-domains = <&ps_atc0_common>;
+       };
+
+       ps_atc0_cio_pcie: power-controller@438 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x438 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc0_cio_pcie";
+               power-domains = <&ps_atc0_cio>;
+       };
+
+       ps_atc0_cio_usb: power-controller@440 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x440 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc0_cio_usb";
+               power-domains = <&ps_atc0_cio>;
+       };
+
+       ps_atc1_common: power-controller@448 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x448 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc1_common";
+       };
+
+       ps_atc1_pcie: power-controller@450 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x450 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc1_pcie";
+               power-domains = <&ps_atc1_common>;
+       };
+
+       ps_atc1_cio: power-controller@458 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x458 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc1_cio";
+               power-domains = <&ps_atc1_common>;
+       };
+
+       ps_atc1_cio_pcie: power-controller@460 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x460 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc1_cio_pcie";
+               power-domains = <&ps_atc1_cio>;
+       };
+
+       ps_atc1_cio_usb: power-controller@468 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x468 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc1_cio_usb";
+               power-domains = <&ps_atc1_cio>;
+       };
+
+       ps_sep: power-controller@c00 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0xc00 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               apple,always-on; /* Locked on */
+       };
+
+       ps_venc_dma: power-controller@8000 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x8000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_dma";
+               power-domains = <&ps_venc_sys>;
+       };
+
+       ps_venc_pipe4: power-controller@8008 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x8008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe4";
+               power-domains = <&ps_venc_dma>;
+       };
+
+       ps_venc_pipe5: power-controller@8010 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x8010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe5";
+               power-domains = <&ps_venc_dma>;
+       };
+
+       ps_venc_me0: power-controller@8018 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x8018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me0";
+               power-domains = <&ps_venc_pipe4>, <&ps_venc_pipe5>;
+       };
+
+       ps_venc_me1: power-controller@8020 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x8020 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me1";
+               power-domains = <&ps_venc_pipe4>, <&ps_venc_pipe5>;
+       };
+
+       ps_ane_sys_cpu: power-controller@c000 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0xc000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ane_sys_cpu";
+               power-domains = <&ps_ane_sys>;
+       };
+
+       ps_disp0_cpu0: power-controller@10018 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x10018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_cpu0";
+               power-domains = <&ps_disp0_fe>;
+               apple,always-on; /* TODO: figure out if we can enable PM here */
+               apple,min-state = <4>;
+       };
+};
+
+&pmgr_mini {
+       ps_debug: power-controller@58 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x58 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_nub_spmi0: power-controller@60 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x60 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "nub_spmi0";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_nub_aon: power-controller@70 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x70 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "nub_aon";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_nub_gpio: power-controller@80 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "nub_gpio";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_nub_fabric: power-controller@a8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0xa8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "nub_fabric";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_nub_sram: power-controller@b0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0xb0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "nub_sram";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_debug_usb: power-controller@b8 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0xb8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug_usb";
+               apple,always-on; /* Core AON device */
+               power-domains = <&ps_debug>;
+       };
+
+       ps_debug_auth: power-controller@c0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0xc0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug_auth";
+               apple,always-on; /* Core AON device */
+               power-domains = <&ps_debug>;
+       };
+
+       ps_nub_spmi1: power-controller@68 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x68 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "nub_spmi1";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_msg: power-controller@78 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x78 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msg";
+       };
+
+       ps_atc0_usb_aon: power-controller@88 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc0_usb_aon";
+       };
+
+       ps_atc1_usb_aon: power-controller@90 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x90 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc1_usb_aon";
+       };
+
+       ps_atc0_usb: power-controller@98 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x98 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc0_usb";
+               power-domains = <&ps_atc0_usb_aon>, <&ps_atc0_common>;
+       };
+
+       ps_atc1_usb: power-controller@a0 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0xa0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "atc1_usb";
+               power-domains = <&ps_atc1_usb_aon>, <&ps_atc1_common>;
+       };
+};
index 03d8436..ed7840f 100644 (file)
@@ -11,7 +11,6 @@
 #include <dt-bindings/interrupt-controller/apple-aic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/pinctrl/apple.h>
-#include <dt-bindings/spmi/spmi.h>
 
 / {
        compatible = "apple,t8103", "apple,arm-platform";
        timer {
                compatible = "arm,armv8-timer";
                interrupt-parent = <&aic>;
-               interrupt-names = "hyp-phys", "hyp-virt", "phys", "virt";
-               interrupts = <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
-                            <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>,
-                            <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
-                            <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
+               interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
+                            <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>,
+                            <AIC_FIQ AIC_TMR_HV_PHYS IRQ_TYPE_LEVEL_HIGH>,
+                            <AIC_FIQ AIC_TMR_HV_VIRT IRQ_TYPE_LEVEL_HIGH>;
        };
 
        clkref: clock-ref {
                clock-output-names = "clkref";
        };
 
+       clk_120m: clock-120m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <120000000>;
+               clock-output-names = "clk_120m";
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                #size-cells = <2>;
 
                ranges;
-               dma-ranges;
-               dma-coherent;
                nonposted-mmio;
 
+               i2c0: i2c@235010000 {
+                       compatible = "apple,t8103-i2c", "apple,i2c";
+                       reg = <0x2 0x35010000 0x0 0x4000>;
+                       clocks = <&clkref>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 627 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-0 = <&i2c0_pins>;
+                       pinctrl-names = "default";
+                       #address-cells = <0x1>;
+                       #size-cells = <0x0>;
+                       power-domains = <&ps_i2c0>;
+               };
+
+               i2c1: i2c@235014000 {
+                       compatible = "apple,t8103-i2c", "apple,i2c";
+                       reg = <0x2 0x35014000 0x0 0x4000>;
+                       clocks = <&clkref>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 628 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-0 = <&i2c1_pins>;
+                       pinctrl-names = "default";
+                       #address-cells = <0x1>;
+                       #size-cells = <0x0>;
+                       power-domains = <&ps_i2c1>;
+               };
+
+               i2c2: i2c@235018000 {
+                       compatible = "apple,t8103-i2c", "apple,i2c";
+                       reg = <0x2 0x35018000 0x0 0x4000>;
+                       clocks = <&clkref>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 629 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-0 = <&i2c2_pins>;
+                       pinctrl-names = "default";
+                       #address-cells = <0x1>;
+                       #size-cells = <0x0>;
+                       power-domains = <&ps_i2c2>;
+                       status = "disabled"; /* not used in all devices */
+               };
+
+               i2c3: i2c@23501c000 {
+                       compatible = "apple,t8103-i2c", "apple,i2c";
+                       reg = <0x2 0x3501c000 0x0 0x4000>;
+                       clocks = <&clkref>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 630 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-0 = <&i2c3_pins>;
+                       pinctrl-names = "default";
+                       #address-cells = <0x1>;
+                       #size-cells = <0x0>;
+                       power-domains = <&ps_i2c3>;
+               };
+
+               i2c4: i2c@235020000 {
+                       compatible = "apple,t8103-i2c", "apple,i2c";
+                       reg = <0x2 0x35020000 0x0 0x4000>;
+                       clocks = <&clkref>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 631 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-0 = <&i2c4_pins>;
+                       pinctrl-names = "default";
+                       #address-cells = <0x1>;
+                       #size-cells = <0x0>;
+                       power-domains = <&ps_i2c4>;
+                       status = "disabled"; /* only used in J293 */
+               };
+
+               spi3: spi@23510c000 {
+                       compatible = "apple,t8103-spi", "apple,spi";
+                       reg = <0x2 0x3510c000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 617 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_120m>;
+                       pinctrl-0 = <&spi3_pins>;
+                       pinctrl-names = "default";
+                       power-domains = <&ps_spi3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled"; /* only used in J293/J313 */
+               };
+
                serial0: serial@235200000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x35200000 0x0 0x1000>;
                        reg-io-width = <4>;
                        interrupt-parent = <&aic>;
                        interrupts = <AIC_IRQ 605 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clkref>, <&clkref>, <&clkref>;
-                       clock-names = "uart", "clk_uart_baud0", "clk_uart_baud1";
+                       /*
+                        * TODO: figure out the clocking properly, there may
+                        * be a third selectable clock.
+                        */
+                       clocks = <&clkref>, <&clkref>;
+                       clock-names = "uart", "clk_uart_baud0";
                        power-domains = <&ps_uart0>;
                        status = "disabled";
                };
                        reg-io-width = <4>;
                        interrupt-parent = <&aic>;
                        interrupts = <AIC_IRQ 607 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clkref>, <&clkref>, <&clkref>;
-                       clock-names = "uart", "clk_uart_baud0", "clk_uart_baud1";
+                       clocks = <&clkref>, <&clkref>;
+                       clock-names = "uart", "clk_uart_baud0";
                        power-domains = <&ps_uart2>;
                        status = "disabled";
                };
                        #interrupt-cells = <3>;
                        interrupt-controller;
                        reg = <0x2 0x3b100000 0x0 0x8000>;
+                       power-domains = <&ps_aic>;
                };
 
-               pmgr: power-controller@23b700000 {
+               pmgr: power-management@23b700000 {
                        compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
                        #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       reg = <0x2 0x3b700000 0x0 0x14000>;
-
-                       ps_pcie_ref: power-controller@1a0 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x1a0>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "pcie_ref";
-                       };
-
-                       ps_imx: power-controller@1b8 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x1b8>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "imx";
-                               apple,always-on;
-                       };
-
-                       ps_sio: power-controller@1c0 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x1c0>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "sio";
-                       };
-
-                       ps_uart_p: power-controller@220 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x220>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               power-domains = <&ps_sio>;
-                               apple,domain-name = "uart_p";
-                       };
-
-                       ps_uart0: power-controller@270 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x270>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               power-domains = <&ps_uart_p>;
-                               apple,domain-name = "uart0";
-                       };
-
-                       ps_uart1: power-controller@278 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x278>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "uart1";
-                               power-domains = <&ps_uart_p>;
-                       };
-
-                       ps_uart2: power-controller@280 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x280>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "uart2";
-                               power-domains = <&ps_uart_p>;
-                       };
-
-                       ps_uart3: power-controller@288 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x288>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "uart3";
-                               power-domains = <&ps_uart_p>;
-                       };
-
-                       ps_apcie: power-controller@348 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x348>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "apcie";
-                               power-domains = <&ps_imx>;
-                       };
-
-                       ps_apcie_gp: power-controller@3e8 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x3e8>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "apcie_gp";
-                               power-domains = <&ps_apcie>;
-                       };
-
-                       ps_ans2: power-controller@3f0 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x3f0>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "ans2";
-                               power-domains = <&ps_apcie_st>;
-                       };
-
-                       ps_apcie_st: power-controller@418 {
-                               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-                               reg = <0x418>;
-                               #power-domain-cells = <0>;
-                               #reset-cells = <0>;
-                               apple,domain-name = "apcie_st";
-                               power-domains = <&ps_apcie>;
-                       };
+                       #size-cells = <1>;
+                       reg = <0x2 0x3b700000 0 0x14000>;
                };
 
                pinctrl_ap: pinctrl@23c100000 {
                        compatible = "apple,t8103-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x3c100000 0x0 0x100000>;
+                       power-domains = <&ps_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-ranges = <&pinctrl_ap 0 0 212>;
+                       apple,npins = <212>;
 
                        interrupt-controller;
+                       #interrupt-cells = <2>;
                        interrupt-parent = <&aic>;
                        interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>,
                                     <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>,
                                     <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
                                     <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>;
 
-                       i2c0_pins: i2c0_pins {
-                               pinmux = <APPLE_PINMUX(188, 1)>,
-                                        <APPLE_PINMUX(192, 1)>;
+                       i2c0_pins: i2c0-pins {
+                               pinmux = <APPLE_PINMUX(192, 1)>,
+                                        <APPLE_PINMUX(188, 1)>;
+                       };
+
+                       i2c1_pins: i2c1-pins {
+                               pinmux = <APPLE_PINMUX(201, 1)>,
+                                        <APPLE_PINMUX(199, 1)>;
+                       };
+
+                       i2c2_pins: i2c2-pins {
+                               pinmux = <APPLE_PINMUX(163, 1)>,
+                                        <APPLE_PINMUX(162, 1)>;
+                       };
+
+                       i2c3_pins: i2c3-pins {
+                               pinmux = <APPLE_PINMUX(73, 1)>,
+                                        <APPLE_PINMUX(72, 1)>;
+                       };
+
+                       i2c4_pins: i2c4-pins {
+                               pinmux = <APPLE_PINMUX(135, 1)>,
+                                        <APPLE_PINMUX(134, 1)>;
+                       };
+
+                       spi3_pins: spi3-pins {
+                               pinmux = <APPLE_PINMUX(46, 1)>,
+                                       <APPLE_PINMUX(47, 1)>,
+                                       <APPLE_PINMUX(48, 1)>,
+                                       <APPLE_PINMUX(49, 1)>;
                        };
 
                        pcie_pins: pcie-pins {
                                pinmux = <APPLE_PINMUX(150, 1)>,
-                                        <APPLE_PINMUX(151, 1)>,
+                                        <APPLE_PINMUX(151, 1)>,
                                         <APPLE_PINMUX(32, 1)>;
                        };
                };
 
-               pinctrl_aop: pinctrl@24a820000 {
-                       compatible = "apple,t8103-pinctrl", "apple,pinctrl";
-                       reg = <0x2 0x4a820000 0x0 0x4000>;
-
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       gpio-ranges = <&pinctrl_aop 0 0 42>;
-
-                       interrupt-controller;
+               spmi: spmi@23d0d9300 {
+                       compatible = "apple,t8103-spmi", "apple,spmi";
+                       reg = <0x2 0x3d0d9300 0x0 0x100>;
                        interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <AIC_IRQ 343 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       status = "disabled";
                };
 
                pinctrl_nub: pinctrl@23d1f0000 {
                        compatible = "apple,t8103-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x3d1f0000 0x0 0x4000>;
+                       power-domains = <&ps_nub_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-ranges = <&pinctrl_nub 0 0 23>;
+                       apple,npins = <23>;
 
                        interrupt-controller;
+                       #interrupt-cells = <2>;
                        interrupt-parent = <&aic>;
                        interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>,
                                     <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>,
                                     <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               pmgr_mini: power-management@23d280000 {
+                       compatible = "apple,t8103-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = <0x2 0x3d280000 0 0x4000>;
+               };
+
                wdt: watchdog@23d2b0000 {
                        compatible = "apple,t8103-wdt", "apple,wdt";
                        reg = <0x2 0x3d2b0000 0x0 0x4000>;
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-ranges = <&pinctrl_smc 0 0 16>;
+                       apple,npins = <16>;
 
                        interrupt-controller;
+                       #interrupt-cells = <2>;
                        interrupt-parent = <&aic>;
                        interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>,
                                     <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>,
                                     <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>;
                };
 
-               i2c0: i2c@20a110000 {
-                       compatible = "apple,i2c-v0";
-                       reg = <0x2 0x35010000 0x0 0x4000>;
+               smc_mbox: mbox@23e408000 {
+                       compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
+                       reg = <0x2 0x3e408000 0x0 0x4000>;
                        interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 627 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&clkref>;
-                       pinctrl-0 = <&i2c0_pins>;
-                       pinctrl-names = "default";
-                       #address-cells = <0x1>;
-                       #size-cells = <0x0>;
+                       interrupts = <AIC_IRQ 400 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 401 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 402 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 403 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "send-empty", "send-not-empty",
+                                         "recv-empty", "recv-not-empty";
+                       #mbox-cells = <0>;
+               };
 
-                       hpm0: hpm@38 {
-                               compatible = "ti,tps6598x";
-                               reg = <0x38>;
-                       };
+               smc: smc@23e050000 {
+                       compatible = "apple,smc";
+                       reg = <0x2 0x3e050000 0x0 0x4000>;
+                       mboxes = <&smc_mbox>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-13 = <0x00800000>;
+               };
 
-                       hpm1: hpm@3f {
-                               compatible = "ti,tps6598x";
-                               reg = <0x3f>;
-                       };
-                };
+               pinctrl_aop: pinctrl@24a820000 {
+                       compatible = "apple,t8103-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x4a820000 0x0 0x4000>;
 
-               ans_mbox: mbox@277400000 {
-                       compatible = "apple,iop-mailbox-m1";
-                       reg = <0x2 0x77400000 0x0 0x20000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_aop 0 0 42>;
+                       apple,npins = <42>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               ans_mbox: mbox@277408000 {
+                       compatible = "apple,t8103-asc-mailbox", "apple,asc-mailbox-v4";
+                       reg = <0x2 0x77408000 0x0 0x4000>;
                        interrupt-parent = <&aic>;
                        interrupts = <AIC_IRQ 583 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 586 IRQ_TYPE_LEVEL_HIGH>;
+                               <AIC_IRQ 584 IRQ_TYPE_LEVEL_HIGH>,
+                               <AIC_IRQ 585 IRQ_TYPE_LEVEL_HIGH>,
+                               <AIC_IRQ 586 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "send-empty", "send-not-empty",
+                               "recv-empty", "recv-not-empty";
+                       #mbox-cells = <0>;
+                       power-domains = <&ps_ans2>;
+               };
+
+               sart: sart@27bc50000 {
+                       compatible = "apple,t8103-sart", "apple,sart2";
+                       reg = <0x2 0x7bc50000 0x0 0x10000>;
                        power-domains = <&ps_ans2>;
-                       #mbox-cells = <1>;
-                       endpoints = <32>;
                };
 
-               ans@27bcc0000 {
-                       compatible = "apple,nvme-m1";
+               nvme@27bcc0000 {
+                       compatible = "apple,t8103-nvme-ans2", "apple,nvme-ans2";
                        reg = <0x2 0x7bcc0000 0x0 0x40000>,
-                             <0x2 0x7bc50000 0x0 0x4000>;
+                               <0x2 0x77400000 0x0 0x4000>;
+                       reg-names = "nvme", "ans";
                        interrupt-parent = <&aic>;
                        interrupts = <AIC_IRQ 590 IRQ_TYPE_LEVEL_HIGH>;
-                       power-domains = <&ps_apcie_st>;
-                       mboxes = <&ans_mbox 32>;
+                       mboxes = <&ans_mbox>;
+                       apple,sart = <&sart>;
+                       power-domains = <&ps_ans2>;
+                       resets = <&ps_ans2>;
                };
 
-               pcie0_dart_0: iommu@681008000 {
-                       compatible = "apple,t8103-dart", "apple,dart-m1";
-                       reg = <0x6 0x81008000 0x0 0x4000>;
+               dwc3_0: usb@382280000 {
+                       compatible = "apple,t8103-dwc3", "apple,dwc3", "snps,dwc3";
+                       reg = <0x3 0x82280000 0x0 0x100000>;
                        interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <AIC_IRQ 777 IRQ_TYPE_LEVEL_HIGH>;
+                       usb-role-switch;
+                       role-switch-default-mode = "host";
+                       iommus = <&dwc3_0_dart_0 0>, <&dwc3_0_dart_1 1>;
+                       power-domains = <&ps_atc0_usb>;
+               };
+
+               dwc3_0_dart_0: iommu@382f00000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x3 0x82f00000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 781 IRQ_TYPE_LEVEL_HIGH>;
                        #iommu-cells = <1>;
-                       status = "disabled";
+                       power-domains = <&ps_atc0_usb>;
                };
 
-               pcie0_dart_1: iommu@682008000 {
-                       compatible = "apple,t8103-dart", "apple,dart-m1";
-                       reg = <0x6 0x82008000 0x0 0x4000>;
+               dwc3_0_dart_1: iommu@382f80000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x3 0x82f80000 0x0 0x4000>;
                        interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <AIC_IRQ 781 IRQ_TYPE_LEVEL_HIGH>;
                        #iommu-cells = <1>;
-                       status = "disabled";
+                       power-domains = <&ps_atc0_usb>;
                };
 
-               pcie0_dart_2: iommu@683008000 {
-                       compatible = "apple,t8103-dart", "apple,dart-m1";
-                       reg = <0x6 0x83008000 0x0 0x4000>;
+               dwc3_1: usb@502280000 {
+                       compatible = "apple,t8103-dwc3", "apple,dwc3", "snps,dwc3";
+                       reg = <0x5 0x02280000 0x0 0x100000>;
                        interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <AIC_IRQ 857 IRQ_TYPE_LEVEL_HIGH>;
+                       usb-role-switch;
+                       role-switch-default-mode = "host";
+                       iommus = <&dwc3_1_dart_0 0>, <&dwc3_1_dart_1 1>;
+                       power-domains = <&ps_atc1_usb>;
+               };
+
+               dwc3_1_dart_0: iommu@502f00000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x5 0x02f00000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 861 IRQ_TYPE_LEVEL_HIGH>;
                        #iommu-cells = <1>;
-                       status = "disabled";
+                       power-domains = <&ps_atc1_usb>;
                };
 
-               smc_mbox: mbox@23e400000 {
-                       compatible = "apple,iop-mailbox-m1";
-                       reg = <0x2 0x3e400000 0x0 0x20000>;
-                       #mbox-cells = <1>;
-                       endpoints = <32>;
+               dwc3_1_dart_1: iommu@502f80000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x5 0x02f80000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 861 IRQ_TYPE_LEVEL_HIGH>;
+                       #iommu-cells = <1>;
+                       power-domains = <&ps_atc1_usb>;
                };
 
-               smc: smc@23e050000 {
-                       compatible = "apple,smc-m1";
-                       reg = <0x2 0x3e050000 0x0 0x4000>;
-                       mboxes = <&smc_mbox 32>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       gpio-13 = <0x00800000>;
+               pcie0_dart_0: dart@681008000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x6 0x81008000 0x0 0x4000>;
+                       #iommu-cells = <1>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&ps_apcie_gp>;
+               };
+
+               pcie0_dart_1: dart@682008000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x6 0x82008000 0x0 0x4000>;
+                       #iommu-cells = <1>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&ps_apcie_gp>;
+               };
+
+               pcie0_dart_2: dart@683008000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x6 0x83008000 0x0 0x4000>;
+                       #iommu-cells = <1>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&ps_apcie_gp>;
                };
 
                pcie0: pcie@690000000 {
                        compatible = "apple,t8103-pcie", "apple,pcie";
+                       device_type = "pci";
 
                        reg = <0x6 0x90000000 0x0 0x1000000>,
-                             <0x6 0x80000000 0x0 0x4000>,
-                             <0x6 0x81000000 0x0 0x8000>,
-                             <0x6 0x82000000 0x0 0x8000>,
-                             <0x6 0x83000000 0x0 0x8000>;
+                             <0x6 0x80000000 0x0 0x100000>,
+                             <0x6 0x81000000 0x0 0x4000>,
+                             <0x6 0x82000000 0x0 0x4000>,
+                             <0x6 0x83000000 0x0 0x4000>;
                        reg-names = "config", "rc", "port0", "port1", "port2";
 
                        interrupt-parent = <&aic>;
                        msi-parent = <&pcie0>;
                        msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;
 
+
                        iommu-map = <0x100 &pcie0_dart_0 1 1>,
                                    <0x200 &pcie0_dart_1 1 1>,
                                    <0x300 &pcie0_dart_2 1 1>;
                        bus-range = <0 3>;
                        #address-cells = <3>;
                        #size-cells = <2>;
-                       ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000
-                                 0x0 0x20000000>,
-                                <0x02000000 0x0 0xc0000000 0x6 0xc0000000
-                                 0x0 0x40000000>;
+                       ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
+                                <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;
 
-                       power-domains = <&ps_apcie>, <&ps_apcie_gp>, <&ps_pcie_ref>;
+                       power-domains = <&ps_apcie_gp>;
                        pinctrl-0 = <&pcie_pins>;
                        pinctrl-names = "default";
 
-                       device_type = "pci";
-                       status = "disabled";
-               };
+                       port00: pci@0,0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               reset-gpios = <&pinctrl_ap 152 GPIO_ACTIVE_LOW>;
 
-               dwc3_0_dart_0: iommu@382f00000 {
-                       compatible = "apple,t8103-dart";
-                       reg = <0x3 0x82f00000 0x0 0x4000>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 781 IRQ_TYPE_LEVEL_HIGH>;
-                       #iommu-cells = <1>;
-                       status = "disabled";
-               };
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
 
-               dwc3_0_dart_1: iommu@382f80000 {
-                       compatible = "apple,t8103-dart";
-                       reg = <0x3 0x82f80000 0x0 0x4000>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 781 IRQ_TYPE_LEVEL_HIGH>;
-                       #iommu-cells = <1>;
-                       status = "disabled";
-               };
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
 
-               dwc3_0: usb@382280000{
-                       compatible = "snps,dwc3";
-                       reg = <0x3 0x82280000 0x0 0x100000>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 777 IRQ_TYPE_LEVEL_HIGH>;
-                       dr_mode = "host";
-                       iommus = <&dwc3_0_dart_0 0>, <&dwc3_0_dart_1 1>;
-                       status = "disabled";
-               };
+                               interrupt-map-mask = <0 0 0 7>;
+                               interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
+                                               <0 0 0 2 &port00 0 0 0 1>,
+                                               <0 0 0 3 &port00 0 0 0 2>,
+                                               <0 0 0 4 &port00 0 0 0 3>;
+                       };
 
-               dwc3_1_dart_0: iommu@502f00000 {
-                       compatible = "apple,t8103-dart";
-                       reg = <0x5 0x02f00000 0x0 0x4000>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 861 IRQ_TYPE_LEVEL_HIGH>;
-                       #iommu-cells = <1>;
-                       status = "disabled";
+                       port01: pci@1,0 {
+                               device_type = "pci";
+                               reg = <0x800 0x0 0x0 0x0 0x0>;
+                               reset-gpios = <&pinctrl_ap 153 GPIO_ACTIVE_LOW>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+
+                               interrupt-map-mask = <0 0 0 7>;
+                               interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
+                                               <0 0 0 2 &port01 0 0 0 1>,
+                                               <0 0 0 3 &port01 0 0 0 2>,
+                                               <0 0 0 4 &port01 0 0 0 3>;
+                       };
+
+                       port02: pci@2,0 {
+                               device_type = "pci";
+                               reg = <0x1000 0x0 0x0 0x0 0x0>;
+                               reset-gpios = <&pinctrl_ap 33 GPIO_ACTIVE_LOW>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+
+                               interrupt-map-mask = <0 0 0 7>;
+                               interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
+                                               <0 0 0 2 &port02 0 0 0 1>,
+                                               <0 0 0 3 &port02 0 0 0 2>,
+                                               <0 0 0 4 &port02 0 0 0 3>;
+                       };
                };
 
-               dwc3_1_dart_1: iommu@502f80000 {
-                       compatible = "apple,t8103-dart";
-                       reg = <0x5 0x02f80000 0x0 0x4000>;
+               dart_sio: iommu@235004000 {
+                       compatible = "apple,t8103-dart", "apple,dart";
+                       reg = <0x2 0x35004000 0x0 0x4000>;
                        interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 861 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <AIC_IRQ 635 IRQ_TYPE_LEVEL_HIGH>;
                        #iommu-cells = <1>;
-                       status = "disabled";
+                       power-domains = <&ps_sio_cpu>;
                };
 
-               dwc3_1: usb@502280000{
-                       compatible = "snps,dwc3";
-                       reg = <0x5 0x02280000 0x0 0x100000>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 857 IRQ_TYPE_LEVEL_HIGH>;
-                       dr_mode = "host";
-                       iommus = <&dwc3_1_dart_0 0>, <&dwc3_1_dart_1 1>;
-                       status = "disabled";
+               nco_inp: clock-ref {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&clkref>;
+                       #clock-cells = <0>;
+                       clock-mult = <75>;
+                       clock-div = <2>; // 24 MHz * (75/2) = 900 MHz
+                       clock-output-names = "nco_inp";
                };
 
-               spi@23510c000 {
-                       compatible = "apple,t8103-spi", "apple,spi";
-                       reg = <0x2 0x3510c000 0x0 0x4000>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 617 IRQ_TYPE_LEVEL_HIGH>;
-                       cs-gpios = <&pinctrl_ap 49 GPIO_ACTIVE_HIGH>;
+               nco: nco@23b044000 {
+                       compatible = "apple,t8103-nco", "apple,nco";
+                       reg = <0x2 0x3b044000 0x0 0x14000>;
+                       clocks = <&nco_inp>;
+                       #clock-cells = <1>;
+                       apple,nchannels = <5>;
                };
 
-               spmi@23d0d8000 {
-                       compatible = "apple,t8103-spmi", "apple,spmi";
-                       reg = <0x2 0x3d0d9300 0x0 0x100>;
+               admac: dma-controller@238200000 {
+                       compatible = "apple,t8103-admac", "apple,admac";
+                       reg = <0x2 0x38200000 0x0 0x34000>;
+                       dma-channels = <12>;
                        interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 343 IRQ_TYPE_LEVEL_HIGH>;
-
-                       #address-cells = <2>;
-                       #size-cells = <0>;
+                       interrupts = <AIC_IRQ 626 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       iommus = <&dart_sio 2>;
+                       power-domains = <&ps_sio_adma>;
+               };
+
+               mca: mca {
+                       compatible = "apple,t8103-mca", "apple,mca";
+                       reg = <0x2 0x38400000 0x0 0x18000>,
+                               <0x2 0x38300000 0x0 0x30000>;
+                       reg-names = "clusters", "switch";
+                       clocks = <&nco 0>, <&nco 1>, <&nco 2>, <&nco 3>;
+                       power-domains = <&ps_mca0>; //, <&ps_mca1>, <&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>;
+                       resets = <&ps_mca0>, <&ps_mca1>, <&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>;
+
+                       #sound-dai-cells = <1>;
+                       apple,nclusters = <6>;
+                       apple,mclk-range = <2600000 25000000>;
+
+                       route {
+                               dmas = <&admac 2>;
+                               dma-names = "tx";
+                               apple,serdes = <1>;
+                               sound-dai = <&mca 0>;
+                       };
 
-                       pmu@f {
-                               compatible = "apple,sera-pmu";
-                               reg = <0xf SPMI_USID>;
+                       route2 {
+                               dmas = <&admac 6>;
+                               dma-names = "tx";
+                               apple,serdes = <3>;
+                               sound-dai = <&mca 2>;
                        };
                };
        };
 };
+
+#include "t8103-pmgr.dtsi"