From 10c77e119eaaa2677009dea58cf69a8e5383925b Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.com>
Date: Wed, 17 Jul 2024 17:27:36 +0100
Subject: [PATCH 1180/1215] arm64: dts: Move bcm2712 and rp1 here

It is pointless having the bcm2712 family of dts files and rp1.dtsi
in the arch/arm directory tree, since they then require placeholders
to include them in arch/arm64 where they are built. The files have
no dependencies on other files in the arch/arm tree, so simply move
them here.

Signed-off-by: Phil Elwell <phil@raspberrypi.com>
---
 .../arm/boot/dts/broadcom/bcm2712-rpi-5-b.dts | 867 ------------------
 .../dts/broadcom/bcm2712-rpi-cm5-cm4io.dts    |  20 -
 .../dts/broadcom/bcm2712-rpi-cm5-cm5io.dts    |  10 -
 .../boot/dts/broadcom/bcm2712d0-rpi-5-b.dts   | 107 ---
 .../boot/dts/broadcom/bcm2712-rpi-5-b.dts     | 867 +++++++++++++++++-
 .../dts/broadcom/bcm2712-rpi-cm5-cm4io.dts    |  20 +-
 .../dts/broadcom/bcm2712-rpi-cm5-cm5io.dts    |  10 +-
 .../boot/dts/broadcom/bcm2712-rpi-cm5.dtsi    |  10 +-
 .../boot/dts/broadcom/bcm2712-rpi.dtsi        |   0
 .../boot/dts/broadcom/bcm2712.dtsi            |   0
 .../boot/dts/broadcom/bcm2712d0-rpi-5-b.dts   | 107 ++-
 .../{arm => arm64}/boot/dts/broadcom/rp1.dtsi |   0
 12 files changed, 1002 insertions(+), 1016 deletions(-)
 delete mode 100644 arch/arm/boot/dts/broadcom/bcm2712-rpi-5-b.dts
 delete mode 100644 arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts
 delete mode 100644 arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts
 delete mode 100644 arch/arm/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts
 rename arch/{arm => arm64}/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi (98%)
 rename arch/{arm => arm64}/boot/dts/broadcom/bcm2712-rpi.dtsi (100%)
 rename arch/{arm => arm64}/boot/dts/broadcom/bcm2712.dtsi (100%)
 rename arch/{arm => arm64}/boot/dts/broadcom/rp1.dtsi (100%)

--- a/arch/arm/boot/dts/broadcom/bcm2712-rpi-5-b.dts
+++ /dev/null
@@ -1,867 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/dts-v1/;
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/clock/rp1.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/mfd/rp1.h>
-#include <dt-bindings/pwm/pwm.h>
-#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
-
-#define i2c0 _i2c0
-#define i2c3 _i2c3
-#define i2c4 _i2c4
-#define i2c5 _i2c5
-#define i2c6 _i2c6
-#define i2c8 _i2c8
-#define i2s _i2s
-#define pwm0 _pwm0
-#define pwm1 _pwm1
-#define spi0 _spi0
-#define spi3 _spi3
-#define spi4 _spi4
-#define spi5 _spi5
-#define spi6 _spi6
-#define uart0 _uart0
-#define uart2 _uart2
-#define uart5 _uart5
-
-#include "bcm2712.dtsi"
-
-#undef i2c0
-#undef i2c3
-#undef i2c4
-#undef i2c5
-#undef i2c6
-#undef i2c8
-#undef i2s
-#undef pwm0
-#undef pwm1
-#undef spi0
-#undef spi3
-#undef spi4
-#undef spi5
-#undef spi6
-#undef uart0
-#undef uart2
-#undef uart3
-#undef uart4
-#undef uart5
-
-/ {
-	compatible = "raspberrypi,5-model-b", "brcm,bcm2712";
-	model = "Raspberry Pi 5";
-
-	/* Will be filled by the bootloader */
-	memory@0 {
-		device_type = "memory";
-		reg = <0 0 0x28000000>;
-	};
-
-	leds: leds {
-		compatible = "gpio-leds";
-
-		led_pwr: led-pwr {
-			label = "PWR";
-			gpios = <&rp1_gpio 44 GPIO_ACTIVE_LOW>;
-			default-state = "off";
-			linux,default-trigger = "none";
-		};
-
-		led_act: led-act {
-			label = "ACT";
-			gpios = <&gio_aon 9 GPIO_ACTIVE_LOW>;
-			default-state = "off";
-			linux,default-trigger = "mmc0";
-		};
-	};
-
-	sd_io_1v8_reg: sd_io_1v8_reg {
-		compatible = "regulator-gpio";
-		regulator-name = "vdd-sd-io";
-		regulator-min-microvolt = <1800000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-boot-on;
-		regulator-always-on;
-		regulator-settling-time-us = <5000>;
-		gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>;
-		states = <1800000 0x1
-			  3300000 0x0>;
-		status = "okay";
-	};
-
-	sd_vcc_reg: sd_vcc_reg {
-		compatible = "regulator-fixed";
-		regulator-name = "vcc-sd";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-boot-on;
-		enable-active-high;
-		gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
-		status = "okay";
-	};
-
-	wl_on_reg: wl_on_reg {
-		compatible = "regulator-fixed";
-		regulator-name = "wl-on-regulator";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		pinctrl-0 = <&wl_on_pins>;
-		pinctrl-names = "default";
-
-		gpio = <&gio 28 GPIO_ACTIVE_HIGH>;
-
-		startup-delay-us = <150000>;
-		enable-active-high;
-	};
-
-	clocks: clocks {
-	};
-
-	cam1_clk: cam1_clk {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		status = "disabled";
-	};
-
-	cam0_clk: cam0_clk {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		status = "disabled";
-	};
-
-	cam0_reg: cam0_reg {
-		compatible = "regulator-fixed";
-		regulator-name = "cam0_reg";
-		enable-active-high;
-		status = "okay";
-		gpio = <&rp1_gpio 34 0>;  // CD0_IO0_MICCLK, to MIPI 0 connector
-	};
-
-	cam1_reg: cam1_reg {
-		compatible = "regulator-fixed";
-		regulator-name = "cam1_reg";
-		enable-active-high;
-		status = "okay";
-		gpio = <&rp1_gpio 46 0>;  // CD1_IO0_MICCLK, to MIPI 1 connector
-	};
-
-	cam_dummy_reg: cam_dummy_reg {
-		compatible = "regulator-fixed";
-		regulator-name = "cam-dummy-reg";
-		status = "okay";
-	};
-
-	dummy: dummy {
-		// A target for unwanted overlay fragments
-	};
-
-
-	// A few extra labels to keep overlays happy
-
-	i2c0if: i2c0if {};
-	i2c0mux: i2c0mux {};
-};
-
-rp1_target: &pcie2 {
-	brcm,enable-mps-rcb;
-	brcm,vdm-qos-map = <0xbbaa9888>;
-	aspm-no-l0s;
-	status = "okay";
-};
-
-&pcie1 {
-	brcm,vdm-qos-map = <0x33333333>;
-};
-
-// Add some labels to 2712 device
-
-// The system UART
-uart10: &_uart0 { status = "okay"; };
-
-// The system SPI for the bootloader EEPROM
-spi10: &_spi0 { status = "okay"; };
-
-i2c_rp1boot: &_i2c3 { };
-
-#include "rp1.dtsi"
-
-&rp1 {
-	// PCIe address space layout:
-	// 00_00000000-00_00xxxxxx = RP1 peripherals
-	// 10_00000000-1x_xxxxxxxx = up to 64GB system RAM
-
-	// outbound access aimed at PCIe 0_00xxxxxx -> RP1 c0_40xxxxxx
-	// This is the RP1 peripheral space
-	ranges = <0xc0 0x40000000
-		  0x02000000 0x00 0x00000000
-		  0x00 0x00400000>;
-
-	dma-ranges =
-	// inbound RP1 1x_xxxxxxxx -> PCIe 1x_xxxxxxxx
-		     <0x10 0x00000000
-		      0x43000000 0x10 0x00000000
-		      0x10 0x00000000>,
-
-	// inbound RP1 c0_40xxxxxx -> PCIe 00_00xxxxxx
-	// This allows the RP1 DMA controller to address RP1 hardware
-		     <0xc0 0x40000000
-		      0x02000000 0x0 0x00000000
-		      0x0 0x00400000>,
-
-	// inbound RP1 0x_xxxxxxxx -> PCIe 1x_xxxxxxxx
-		     <0x00 0x00000000
-		      0x02000000 0x10 0x00000000
-		      0x10 0x00000000>;
-};
-
-// Expose RP1 nodes as system nodes with labels
-
-&rp1_dma  {
-	status = "okay";
-};
-
-&rp1_eth {
-	status = "okay";
-	phy-handle = <&phy1>;
-	phy-reset-gpios = <&rp1_gpio 32 GPIO_ACTIVE_LOW>;
-	phy-reset-duration = <5>;
-
-	phy1: ethernet-phy@1 {
-		reg = <0x1>;
-		brcm,powerdown-enable;
-	};
-};
-
-gpio: &rp1_gpio {
-	status = "okay";
-};
-
-aux: &dummy {};
-
-&rp1_usb0 {
-	pinctrl-0 = <&usb_vbus_pins>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&rp1_usb1 {
-	status = "okay";
-};
-
-#include "bcm2712-rpi.dtsi"
-
-i2c_csi_dsi0: &i2c6 { // Note: This is for MIPI0 connector only
-	pinctrl-0 = <&rp1_i2c6_38_39>;
-	pinctrl-names = "default";
-	clock-frequency = <100000>;
-};
-
-i2c_csi_dsi1: &i2c4 { // Note: This is for MIPI1 connector only
-	pinctrl-0 = <&rp1_i2c4_40_41>;
-	pinctrl-names = "default";
-	clock-frequency = <100000>;
-};
-
-i2c_csi_dsi: &i2c_csi_dsi1 { }; // An alias for compatibility
-
-csi0: &rp1_csi0 { };
-csi1: &rp1_csi1 { };
-dsi0: &rp1_dsi0 { };
-dsi1: &rp1_dsi1 { };
-dpi: &rp1_dpi { };
-vec: &rp1_vec { };
-dpi_gpio0:              &rp1_dpi_24bit_gpio0        { };
-dpi_gpio1:              &rp1_dpi_24bit_gpio2        { };
-dpi_18bit_cpadhi_gpio0: &rp1_dpi_18bit_cpadhi_gpio0 { };
-dpi_18bit_cpadhi_gpio2: &rp1_dpi_18bit_cpadhi_gpio2 { };
-dpi_18bit_gpio0:        &rp1_dpi_18bit_gpio0        { };
-dpi_18bit_gpio2:        &rp1_dpi_18bit_gpio2        { };
-dpi_16bit_cpadhi_gpio0: &rp1_dpi_16bit_cpadhi_gpio0 { };
-dpi_16bit_cpadhi_gpio2: &rp1_dpi_16bit_cpadhi_gpio2 { };
-dpi_16bit_gpio0:        &rp1_dpi_16bit_gpio0        { };
-dpi_16bit_gpio2:        &rp1_dpi_16bit_gpio2        { };
-
-/* Add the IOMMUs for some RP1 bus masters */
-
-&csi0 {
-	iommus = <&iommu5>;
-};
-
-&csi1 {
-	iommus = <&iommu5>;
-};
-
-&dsi0 {
-	iommus = <&iommu5>;
-};
-
-&dsi1 {
-	iommus = <&iommu5>;
-};
-
-&dpi {
-	iommus = <&iommu5>;
-};
-
-&vec {
-	iommus = <&iommu5>;
-};
-
-&ddc0 {
-	status = "disabled";
-};
-
-&ddc1 {
-	status = "disabled";
-};
-
-&hdmi0 {
-	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
-	clock-names = "hdmi", "bvb", "audio", "cec";
-	status = "disabled";
-};
-
-&hdmi1 {
-	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
-	clock-names = "hdmi", "bvb", "audio", "cec";
-	status = "disabled";
-};
-
-&hvs {
-	clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
-	clock-names = "core", "disp";
-};
-
-&mop {
-	status = "disabled";
-};
-
-&moplet {
-	status = "disabled";
-};
-
-&pixelvalve0 {
-	status = "disabled";
-};
-
-&pixelvalve1 {
-	status = "disabled";
-};
-
-&disp_intr {
-	status = "disabled";
-};
-
-/* SDIO1 is used to drive the SD card */
-&sdio1 {
-	pinctrl-0 = <&emmc_sd_pulls>, <&emmc_aon_cd_pins>;
-	pinctrl-names = "default";
-	vqmmc-supply = <&sd_io_1v8_reg>;
-	vmmc-supply = <&sd_vcc_reg>;
-	bus-width = <4>;
-	sd-uhs-sdr50;
-	sd-uhs-ddr50;
-	sd-uhs-sdr104;
-	cd-gpios = <&gio_aon 5 GPIO_ACTIVE_LOW>;
-	//no-1-8-v;
-	status = "okay";
-};
-
-&pinctrl_aon {
-	emmc_aon_cd_pins: emmc_aon_cd_pins {
-		function = "sd_card_g";
-		pins = "aon_gpio5";
-		bias-pull-up;
-	};
-
-	/* Slight hack - only one PWM pin (status LED) is usable */
-	aon_pwm_1pin: aon_pwm_1pin {
-		function = "aon_pwm";
-		pins = "aon_gpio9";
-	};
-};
-
-&pinctrl {
-	pwr_button_pins: pwr_button_pins {
-		function = "gpio";
-		pins = "gpio20";
-		bias-pull-up;
-	};
-
-	wl_on_pins: wl_on_pins {
-		function = "gpio";
-		pins = "gpio28";
-	};
-
-	bt_shutdown_pins: bt_shutdown_pins {
-		function = "gpio";
-		pins = "gpio29";
-	};
-
-	emmc_sd_pulls: emmc_sd_pulls {
-		pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3";
-		bias-pull-up;
-	};
-};
-
-/* uarta communicates with the BT module */
-&uarta {
-	uart-has-rtscts;
-	auto-flow-control;
-	status = "okay";
-	clock-frequency = <96000000>;
-	pinctrl-0 = <&uarta_24_pins &bt_shutdown_pins>;
-	pinctrl-names = "default";
-
-	bluetooth: bluetooth {
-		compatible = "brcm,bcm43438-bt";
-		max-speed = <3000000>;
-		shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
-		local-bd-address = [ 00 00 00 00 00 00 ];
-	};
-};
-
-&i2c_rp1boot {
-	clock-frequency = <400000>;
-	pinctrl-0 = <&i2c3_m4_agpio0_pins>;
-	pinctrl-names = "default";
-};
-
-/ {
-	chosen: chosen {
-		bootargs = "reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe";
-		stdout-path = "serial10:115200n8";
-	};
-
-	fan: cooling_fan {
-		status = "disabled";
-		compatible = "pwm-fan";
-		#cooling-cells = <2>;
-		cooling-min-state = <0>;
-		cooling-max-state = <3>;
-		cooling-levels = <0 75 125 175 250>;
-		pwms = <&rp1_pwm1 3 41566 PWM_POLARITY_INVERTED>;
-		rpm-regmap = <&rp1_pwm1>;
-		rpm-offset = <0x3c>;
-	};
-
-	pwr_button {
-		compatible = "gpio-keys";
-
-		pinctrl-names = "default";
-		pinctrl-0 = <&pwr_button_pins>;
-		status = "okay";
-
-		pwr_key: pwr {
-			label = "pwr_button";
-			// linux,code = <205>; // KEY_SUSPEND
-			linux,code = <116>; // KEY_POWER
-			gpios = <&gio 20 GPIO_ACTIVE_LOW>;
-			debounce-interval = <50>; // ms
-		};
-	};
-};
-
-&usb {
-	power-domains = <&power RPI_POWER_DOMAIN_USB>;
-};
-
-/* SDIO2 drives the WLAN interface */
-&sdio2 {
-	pinctrl-0 = <&sdio2_30_pins>;
-	pinctrl-names = "default";
-	bus-width = <4>;
-	vmmc-supply = <&wl_on_reg>;
-	sd-uhs-ddr50;
-	non-removable;
-	status = "okay";
-	#address-cells = <1>;
-	#size-cells = <0>;
-
-	wifi: wifi@1 {
-		reg = <1>;
-		compatible = "brcm,bcm4329-fmac";
-		local-mac-address = [00 00 00 00 00 00];
-	};
-};
-
-&rpivid {
-	status = "okay";
-};
-
-&pinctrl {
-	spi10_gpio2: spi10_gpio2 {
-		function = "vc_spi0";
-		pins = "gpio2", "gpio3", "gpio4";
-		bias-disable;
-	};
-
-	spi10_cs_gpio1: spi10_cs_gpio1 {
-		function = "gpio";
-		pins = "gpio1";
-		bias-pull-up;
-	};
-};
-
-spi10_pins: &spi10_gpio2 {};
-spi10_cs_pins: &spi10_cs_gpio1 {};
-
-&spi10 {
-	pinctrl-names = "default";
-	cs-gpios = <&gio 1 1>;
-	pinctrl-0 = <&spi10_pins &spi10_cs_pins>;
-
-	spidev10: spidev@0 {
-		compatible = "spidev";
-		reg = <0>;	/* CE0 */
-		#address-cells = <1>;
-		#size-cells = <0>;
-		spi-max-frequency = <20000000>;
-		status = "okay";
-	};
-};
-
-// =============================================
-// Board specific stuff here
-
-&gio_aon {
-	// Don't use GIO_AON as an interrupt controller because it will
-	// clash with the firmware monitoring the PMIC interrupt via the VPU.
-
-	/delete-property/ interrupt-controller;
-};
-
-&main_aon_irq {
-	// Don't use the MAIN_AON_IRQ interrupt controller because it will
-	// clash with the firmware monitoring the PMIC interrupt via the VPU.
-
-	status = "disabled";
-};
-
-&rp1_pwm1 {
-	status = "disabled";
-	pinctrl-0 = <&rp1_pwm1_gpio45>;
-	pinctrl-names = "default";
-};
-
-&thermal_trips {
-	cpu_tepid: cpu-tepid {
-		temperature = <50000>;
-		hysteresis = <5000>;
-		type = "active";
-	};
-
-	cpu_warm: cpu-warm {
-		temperature = <60000>;
-		hysteresis = <5000>;
-		type = "active";
-	};
-
-	cpu_hot: cpu-hot {
-		temperature = <67500>;
-		hysteresis = <5000>;
-		type = "active";
-	};
-
-	cpu_vhot: cpu-vhot {
-		temperature = <75000>;
-		hysteresis = <5000>;
-		type = "active";
-	};
-};
-
-&cooling_maps {
-	tepid {
-		trip = <&cpu_tepid>;
-		cooling-device = <&fan 1 1>;
-	};
-
-	warm {
-		trip = <&cpu_warm>;
-		cooling-device = <&fan 2 2>;
-	};
-
-	hot {
-		trip = <&cpu_hot>;
-		cooling-device = <&fan 3 3>;
-	};
-
-	vhot {
-		trip = <&cpu_vhot>;
-		cooling-device = <&fan 4 4>;
-	};
-
-	melt {
-		trip = <&cpu_crit>;
-		cooling-device = <&fan 4 4>;
-	};
-};
-
-&gio {
-	// The GPIOs above 35 are not used on Pi 5, so shrink the upper bank
-	// to reduce the clutter in gpioinfo/pinctrl
-	brcm,gpio-bank-widths = <32 4>;
-
-	gpio-line-names =
-		"-", // GPIO_000
-		"2712_BOOT_CS_N", // GPIO_001
-		"2712_BOOT_MISO", // GPIO_002
-		"2712_BOOT_MOSI", // GPIO_003
-		"2712_BOOT_SCLK", // GPIO_004
-		"-", // GPIO_005
-		"-", // GPIO_006
-		"-", // GPIO_007
-		"-", // GPIO_008
-		"-", // GPIO_009
-		"-", // GPIO_010
-		"-", // GPIO_011
-		"-", // GPIO_012
-		"-", // GPIO_013
-		"PCIE_SDA", // GPIO_014
-		"PCIE_SCL", // GPIO_015
-		"-", // GPIO_016
-		"-", // GPIO_017
-		"-", // GPIO_018
-		"-", // GPIO_019
-		"PWR_GPIO", // GPIO_020
-		"2712_G21_FS", // GPIO_021
-		"-", // GPIO_022
-		"-", // GPIO_023
-		"BT_RTS", // GPIO_024
-		"BT_CTS", // GPIO_025
-		"BT_TXD", // GPIO_026
-		"BT_RXD", // GPIO_027
-		"WL_ON", // GPIO_028
-		"BT_ON", // GPIO_029
-		"WIFI_SDIO_CLK", // GPIO_030
-		"WIFI_SDIO_CMD", // GPIO_031
-		"WIFI_SDIO_D0", // GPIO_032
-		"WIFI_SDIO_D1", // GPIO_033
-		"WIFI_SDIO_D2", // GPIO_034
-		"WIFI_SDIO_D3"; // GPIO_035
-};
-
-&gio_aon {
-	gpio-line-names =
-		"RP1_SDA", // AON_GPIO_00
-		"RP1_SCL", // AON_GPIO_01
-		"RP1_RUN", // AON_GPIO_02
-		"SD_IOVDD_SEL", // AON_GPIO_03
-		"SD_PWR_ON", // AON_GPIO_04
-		"SD_CDET_N", // AON_GPIO_05
-		"SD_FLG_N", // AON_GPIO_06
-		"-", // AON_GPIO_07
-		"2712_WAKE", // AON_GPIO_08
-		"2712_STAT_LED", // AON_GPIO_09
-		"-", // AON_GPIO_10
-		"-", // AON_GPIO_11
-		"PMIC_INT", // AON_GPIO_12
-		"UART_TX_FS", // AON_GPIO_13
-		"UART_RX_FS", // AON_GPIO_14
-		"-", // AON_GPIO_15
-		"-", // AON_GPIO_16
-
-		// Pad bank0 out to 32 entries
-		"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
-
-		"HDMI0_SCL", // AON_SGPIO_00
-		"HDMI0_SDA", // AON_SGPIO_01
-		"HDMI1_SCL", // AON_SGPIO_02
-		"HDMI1_SDA", // AON_SGPIO_03
-		"PMIC_SCL", // AON_SGPIO_04
-		"PMIC_SDA"; // AON_SGPIO_05
-
-	rp1_run_hog {
-		gpio-hog;
-		gpios = <2 GPIO_ACTIVE_HIGH>;
-		output-high;
-		line-name = "RP1 RUN pin";
-	};
-};
-
-&rp1_gpio {
-	gpio-line-names =
-		"ID_SDA", // GPIO0
-		"ID_SCL", // GPIO1
-		"GPIO2", // GPIO2
-		"GPIO3", // GPIO3
-		"GPIO4", // GPIO4
-		"GPIO5", // GPIO5
-		"GPIO6", // GPIO6
-		"GPIO7", // GPIO7
-		"GPIO8", // GPIO8
-		"GPIO9", // GPIO9
-		"GPIO10", // GPIO10
-		"GPIO11", // GPIO11
-		"GPIO12", // GPIO12
-		"GPIO13", // GPIO13
-		"GPIO14", // GPIO14
-		"GPIO15", // GPIO15
-		"GPIO16", // GPIO16
-		"GPIO17", // GPIO17
-		"GPIO18", // GPIO18
-		"GPIO19", // GPIO19
-		"GPIO20", // GPIO20
-		"GPIO21", // GPIO21
-		"GPIO22", // GPIO22
-		"GPIO23", // GPIO23
-		"GPIO24", // GPIO24
-		"GPIO25", // GPIO25
-		"GPIO26", // GPIO26
-		"GPIO27", // GPIO27
-
-		"PCIE_RP1_WAKE", // GPIO28
-		"FAN_TACH", // GPIO29
-		"HOST_SDA", // GPIO30
-		"HOST_SCL", // GPIO31
-		"ETH_RST_N", // GPIO32
-		"-", // GPIO33
-
-		"CD0_IO0_MICCLK", // GPIO34
-		"CD0_IO0_MICDAT0", // GPIO35
-		"RP1_PCIE_CLKREQ_N", // GPIO36
-		"-", // GPIO37
-		"CD0_SDA", // GPIO38
-		"CD0_SCL", // GPIO39
-		"CD1_SDA", // GPIO40
-		"CD1_SCL", // GPIO41
-		"USB_VBUS_EN", // GPIO42
-		"USB_OC_N", // GPIO43
-		"RP1_STAT_LED", // GPIO44
-		"FAN_PWM", // GPIO45
-		"CD1_IO0_MICCLK", // GPIO46
-		"2712_WAKE", // GPIO47
-		"CD1_IO1_MICDAT1", // GPIO48
-		"EN_MAX_USB_CUR", // GPIO49
-		"-", // GPIO50
-		"-", // GPIO51
-		"-", // GPIO52
-		"-"; // GPIO53
-
-	usb_vbus_pins: usb_vbus_pins {
-		function = "vbus1";
-		pins = "gpio42", "gpio43";
-	};
-};
-
-/ {
-	aliases: aliases {
-		blconfig = &blconfig;
-		blpubkey = &blpubkey;
-		bluetooth = &bluetooth;
-		console = &uart10;
-		ethernet0 = &rp1_eth;
-		wifi0 = &wifi;
-		fb = &fb;
-		mailbox = &mailbox;
-		mmc0 = &sdio1;
-		uart0 = &uart0;
-		uart1 = &uart1;
-		uart2 = &uart2;
-		uart3 = &uart3;
-		uart4 = &uart4;
-		uart10 = &uart10;
-		serial0 = &uart0;
-		serial1 = &uart1;
-		serial2 = &uart2;
-		serial3 = &uart3;
-		serial4 = &uart4;
-		serial10 = &uart10;
-		i2c = &i2c_arm;
-		i2c0 = &i2c0;
-		i2c1 = &i2c1;
-		i2c2 = &i2c2;
-		i2c3 = &i2c3;
-		i2c4 = &i2c4;
-		i2c5 = &i2c5;
-		i2c6 = &i2c6;
-		i2c10 = &i2c_rp1boot;
-		// Bit-bashed i2c_gpios start at 10
-		spi0 = &spi0;
-		spi1 = &spi1;
-		spi2 = &spi2;
-		spi3 = &spi3;
-		spi4 = &spi4;
-		spi5 = &spi5;
-		spi10 = &spi10;
-		gpio0 = &gpio;
-		gpio1 = &gio;
-		gpio2 = &gio_aon;
-		gpio3 = &pinctrl;
-		gpio4 = &pinctrl_aon;
-		usb0 = &rp1_usb0;
-		usb1 = &rp1_usb1;
-		drm-dsi1 = &dsi0;
-		drm-dsi2 = &dsi1;
-	};
-
-	__overrides__ {
-		bdaddr = <&bluetooth>, "local-bd-address[";
-		button_debounce = <&pwr_key>, "debounce-interval:0";
-		cooling_fan = <&fan>, "status", <&rp1_pwm1>, "status";
-		uart0_console = <&uart0>,"status", <&aliases>, "console=",&uart0;
-		i2c0 = <&i2c0>, "status";
-		i2c1 = <&i2c1>, "status";
-		i2c = <&i2c1>, "status";
-		i2c_arm = <&i2c_arm>, "status";
-		i2c_vc = <&i2c_vc>, "status";
-		i2c_csi_dsi = <&i2c_csi_dsi>, "status";
-		i2c_csi_dsi0 = <&i2c_csi_dsi0>, "status";
-		i2c_csi_dsi1 = <&i2c_csi_dsi1>, "status";
-		i2c0_baudrate = <&i2c0>, "clock-frequency:0";
-		i2c1_baudrate = <&i2c1>, "clock-frequency:0";
-		i2c_baudrate = <&i2c_arm>, "clock-frequency:0";
-		i2c_arm_baudrate = <&i2c_arm>, "clock-frequency:0";
-		i2c_vc_baudrate = <&i2c_vc>, "clock-frequency:0";
-		krnbt = <&bluetooth>, "status";
-		nvme = <&pciex1>, "status";
-		pciex1 = <&pciex1>, "status";
-		pciex1_gen = <&pciex1> , "max-link-speed:0";
-		pciex1_no_l0s = <&pciex1>, "aspm-no-l0s?";
-		pciex1_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0";
-		pcie_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0";
-		random = <&random>, "status";
-		rtc = <&rpi_rtc>, "status";
-		rtc_bbat_vchg = <&rpi_rtc>, "trickle-charge-microvolt:0";
-		sd_cqe = <&sdio1>, "supports-cqe?";
-		spi = <&spi0>, "status";
-		suspend = <&pwr_key>, "linux,code:0=205";
-		uart0 = <&uart0>, "status";
-		wifiaddr = <&wifi>, "local-mac-address[";
-
-		act_led_gpio = <&led_act>,"gpios:4",<&led_act>,"gpios:0=",<&gpio>;
-		act_led_activelow = <&led_act>,"gpios:8";
-		act_led_trigger = <&led_act>, "linux,default-trigger";
-		pwr_led_gpio = <&led_pwr>,"gpios:4";
-		pwr_led_activelow = <&led_pwr>, "gpios:8";
-		pwr_led_trigger = <&led_pwr>, "linux,default-trigger";
-		eth_led0 = <&phy1>,"led-modes:0";
-		eth_led1 = <&phy1>,"led-modes:4";
-		drm_fb0_rp1_dsi0 = <&aliases>, "drm-fb0=",&dsi0;
-		drm_fb0_rp1_dsi1 = <&aliases>, "drm-fb0=",&dsi1;
-		drm_fb0_rp1_dpi = <&aliases>, "drm-fb0=",&dpi;
-		drm_fb0_vc4 = <&aliases>, "drm-fb0=",&vc4;
-		drm_fb1_rp1_dsi0 = <&aliases>, "drm-fb1=",&dsi0;
-		drm_fb1_rp1_dsi1 = <&aliases>, "drm-fb1=",&dsi1;
-		drm_fb1_rp1_dpi = <&aliases>, "drm-fb1=",&dpi;
-		drm_fb1_vc4 = <&aliases>, "drm-fb1=",&vc4;
-		drm_fb2_rp1_dsi0 = <&aliases>, "drm-fb2=",&dsi0;
-		drm_fb2_rp1_dsi1 = <&aliases>, "drm-fb2=",&dsi1;
-		drm_fb2_rp1_dpi = <&aliases>, "drm-fb2=",&dpi;
-		drm_fb2_vc4 = <&aliases>, "drm-fb2=",&vc4;
-
-		fan_temp0 = <&cpu_tepid>,"temperature:0";
-		fan_temp1 = <&cpu_warm>,"temperature:0";
-		fan_temp2 = <&cpu_hot>,"temperature:0";
-		fan_temp3 = <&cpu_vhot>,"temperature:0";
-		fan_temp0_hyst = <&cpu_tepid>,"hysteresis:0";
-		fan_temp1_hyst = <&cpu_warm>,"hysteresis:0";
-		fan_temp2_hyst = <&cpu_hot>,"hysteresis:0";
-		fan_temp3_hyst = <&cpu_vhot>,"hysteresis:0";
-		fan_temp0_speed = <&fan>, "cooling-levels:4";
-		fan_temp1_speed = <&fan>, "cooling-levels:8";
-		fan_temp2_speed = <&fan>, "cooling-levels:12";
-		fan_temp3_speed = <&fan>, "cooling-levels:16";
-	};
-};
--- a/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts
+++ /dev/null
@@ -1,20 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/dts-v1/;
-
-#include "bcm2712-rpi-cm5.dtsi"
-
-// The RP1 USB3 interfaces are not usable on CM4IO
-
-&rp1_usb0 {
-	status = "disabled";
-};
-
-&rp1_usb1 {
-	status = "disabled";
-};
-
-/ {
-	__overrides__ {
-		i2c_csi_dsi = <&i2c_csi_dsi>, "status";
-	};
-};
--- a/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts
+++ /dev/null
@@ -1,10 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/dts-v1/;
-
-#include "bcm2712-rpi-cm5.dtsi"
-
-/ {
-	__overrides__ {
-		i2c_csi_dsi = <&i2c_csi_dsi>, "status";
-	};
-};
--- a/arch/arm/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts
+++ /dev/null
@@ -1,107 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include "bcm2712-rpi-5-b.dts"
-
-&gio {
-	brcm,gpio-bank-widths = <32 4>;
-
-	gpio-line-names =
-		"", // GPIO_000
-		"2712_BOOT_CS_N", // GPIO_001
-		"2712_BOOT_MISO", // GPIO_002
-		"2712_BOOT_MOSI", // GPIO_003
-		"2712_BOOT_SCLK", // GPIO_004
-		"", // GPIO_005
-		"", // GPIO_006
-		"", // GPIO_007
-		"", // GPIO_008
-		"", // GPIO_009
-		"", // GPIO_010
-		"", // GPIO_011
-		"", // GPIO_012
-		"", // GPIO_013
-		"PCIE_SDA", // GPIO_014
-		"PCIE_SCL", // GPIO_015
-		"", // GPIO_016
-		"", // GPIO_017
-		"-", // GPIO_018
-		"-", // GPIO_019
-		"PWR_GPIO", // GPIO_020
-		"2712_G21_FS", // GPIO_021
-		"-", // GPIO_022
-		"-", // GPIO_023
-		"BT_RTS", // GPIO_024
-		"BT_CTS", // GPIO_025
-		"BT_TXD", // GPIO_026
-		"BT_RXD", // GPIO_027
-		"WL_ON", // GPIO_028
-		"BT_ON", // GPIO_029
-		"WIFI_SDIO_CLK", // GPIO_030
-		"WIFI_SDIO_CMD", // GPIO_031
-		"WIFI_SDIO_D0", // GPIO_032
-		"WIFI_SDIO_D1", // GPIO_033
-		"WIFI_SDIO_D2", // GPIO_034
-		"WIFI_SDIO_D3"; // GPIO_035
-};
-
-&gio_aon {
-	brcm,gpio-bank-widths = <15 6>;
-
-	gpio-line-names =
-		"RP1_SDA", // AON_GPIO_00
-		"RP1_SCL", // AON_GPIO_01
-		"RP1_RUN", // AON_GPIO_02
-		"SD_IOVDD_SEL", // AON_GPIO_03
-		"SD_PWR_ON", // AON_GPIO_04
-		"SD_CDET_N", // AON_GPIO_05
-		"SD_FLG_N", // AON_GPIO_06
-		"", // AON_GPIO_07
-		"2712_WAKE", // AON_GPIO_08
-		"2712_STAT_LED", // AON_GPIO_09
-		"", // AON_GPIO_10
-		"", // AON_GPIO_11
-		"PMIC_INT", // AON_GPIO_12
-		"UART_TX_FS", // AON_GPIO_13
-		"UART_RX_FS", // AON_GPIO_14
-		"", // AON_GPIO_15
-		"", // AON_GPIO_16
-
-		// Pad bank0 out to 32 entries
-		"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
-
-		"HDMI0_SCL", // AON_SGPIO_00
-		"HDMI0_SDA", // AON_SGPIO_01
-		"HDMI1_SCL", // AON_SGPIO_02
-		"HDMI1_SDA", // AON_SGPIO_03
-		"PMIC_SCL", // AON_SGPIO_04
-		"PMIC_SDA"; // AON_SGPIO_05
-};
-
-&pinctrl {
-	compatible = "brcm,bcm2712d0-pinctrl";
-	reg = <0x7d504100 0x20>;
-};
-
-&pinctrl_aon {
-	compatible = "brcm,bcm2712d0-aon-pinctrl";
-	reg = <0x7d510700 0x1c>;
-};
-
-&vc4 {
-	compatible = "brcm,bcm2712d0-vc6";
-};
-
-&uart10 {
-	interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
-};
-
-&spi10 {
-	dmas = <&dma40 3>, <&dma40 4>;
-};
-
-&hdmi0 {
-	dmas = <&dma40 (12|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
-};
-
-&hdmi1 {
-	dmas = <&dma40 (13|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
-};
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
@@ -1,2 +1,867 @@
 // SPDX-License-Identifier: GPL-2.0
-#include "arm/broadcom/bcm2712-rpi-5-b.dts"
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/rp1.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/mfd/rp1.h>
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
+
+#define i2c0 _i2c0
+#define i2c3 _i2c3
+#define i2c4 _i2c4
+#define i2c5 _i2c5
+#define i2c6 _i2c6
+#define i2c8 _i2c8
+#define i2s _i2s
+#define pwm0 _pwm0
+#define pwm1 _pwm1
+#define spi0 _spi0
+#define spi3 _spi3
+#define spi4 _spi4
+#define spi5 _spi5
+#define spi6 _spi6
+#define uart0 _uart0
+#define uart2 _uart2
+#define uart5 _uart5
+
+#include "bcm2712.dtsi"
+
+#undef i2c0
+#undef i2c3
+#undef i2c4
+#undef i2c5
+#undef i2c6
+#undef i2c8
+#undef i2s
+#undef pwm0
+#undef pwm1
+#undef spi0
+#undef spi3
+#undef spi4
+#undef spi5
+#undef spi6
+#undef uart0
+#undef uart2
+#undef uart3
+#undef uart4
+#undef uart5
+
+/ {
+	compatible = "raspberrypi,5-model-b", "brcm,bcm2712";
+	model = "Raspberry Pi 5";
+
+	/* Will be filled by the bootloader */
+	memory@0 {
+		device_type = "memory";
+		reg = <0 0 0x28000000>;
+	};
+
+	leds: leds {
+		compatible = "gpio-leds";
+
+		led_pwr: led-pwr {
+			label = "PWR";
+			gpios = <&rp1_gpio 44 GPIO_ACTIVE_LOW>;
+			default-state = "off";
+			linux,default-trigger = "none";
+		};
+
+		led_act: led-act {
+			label = "ACT";
+			gpios = <&gio_aon 9 GPIO_ACTIVE_LOW>;
+			default-state = "off";
+			linux,default-trigger = "mmc0";
+		};
+	};
+
+	sd_io_1v8_reg: sd_io_1v8_reg {
+		compatible = "regulator-gpio";
+		regulator-name = "vdd-sd-io";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		regulator-always-on;
+		regulator-settling-time-us = <5000>;
+		gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>;
+		states = <1800000 0x1
+			  3300000 0x0>;
+		status = "okay";
+	};
+
+	sd_vcc_reg: sd_vcc_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc-sd";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		enable-active-high;
+		gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
+		status = "okay";
+	};
+
+	wl_on_reg: wl_on_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "wl-on-regulator";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		pinctrl-0 = <&wl_on_pins>;
+		pinctrl-names = "default";
+
+		gpio = <&gio 28 GPIO_ACTIVE_HIGH>;
+
+		startup-delay-us = <150000>;
+		enable-active-high;
+	};
+
+	clocks: clocks {
+	};
+
+	cam1_clk: cam1_clk {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		status = "disabled";
+	};
+
+	cam0_clk: cam0_clk {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		status = "disabled";
+	};
+
+	cam0_reg: cam0_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "cam0_reg";
+		enable-active-high;
+		status = "okay";
+		gpio = <&rp1_gpio 34 0>;  // CD0_IO0_MICCLK, to MIPI 0 connector
+	};
+
+	cam1_reg: cam1_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "cam1_reg";
+		enable-active-high;
+		status = "okay";
+		gpio = <&rp1_gpio 46 0>;  // CD1_IO0_MICCLK, to MIPI 1 connector
+	};
+
+	cam_dummy_reg: cam_dummy_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "cam-dummy-reg";
+		status = "okay";
+	};
+
+	dummy: dummy {
+		// A target for unwanted overlay fragments
+	};
+
+
+	// A few extra labels to keep overlays happy
+
+	i2c0if: i2c0if {};
+	i2c0mux: i2c0mux {};
+};
+
+rp1_target: &pcie2 {
+	brcm,enable-mps-rcb;
+	brcm,vdm-qos-map = <0xbbaa9888>;
+	aspm-no-l0s;
+	status = "okay";
+};
+
+&pcie1 {
+	brcm,vdm-qos-map = <0x33333333>;
+};
+
+// Add some labels to 2712 device
+
+// The system UART
+uart10: &_uart0 { status = "okay"; };
+
+// The system SPI for the bootloader EEPROM
+spi10: &_spi0 { status = "okay"; };
+
+i2c_rp1boot: &_i2c3 { };
+
+#include "rp1.dtsi"
+
+&rp1 {
+	// PCIe address space layout:
+	// 00_00000000-00_00xxxxxx = RP1 peripherals
+	// 10_00000000-1x_xxxxxxxx = up to 64GB system RAM
+
+	// outbound access aimed at PCIe 0_00xxxxxx -> RP1 c0_40xxxxxx
+	// This is the RP1 peripheral space
+	ranges = <0xc0 0x40000000
+		  0x02000000 0x00 0x00000000
+		  0x00 0x00400000>;
+
+	dma-ranges =
+	// inbound RP1 1x_xxxxxxxx -> PCIe 1x_xxxxxxxx
+		     <0x10 0x00000000
+		      0x43000000 0x10 0x00000000
+		      0x10 0x00000000>,
+
+	// inbound RP1 c0_40xxxxxx -> PCIe 00_00xxxxxx
+	// This allows the RP1 DMA controller to address RP1 hardware
+		     <0xc0 0x40000000
+		      0x02000000 0x0 0x00000000
+		      0x0 0x00400000>,
+
+	// inbound RP1 0x_xxxxxxxx -> PCIe 1x_xxxxxxxx
+		     <0x00 0x00000000
+		      0x02000000 0x10 0x00000000
+		      0x10 0x00000000>;
+};
+
+// Expose RP1 nodes as system nodes with labels
+
+&rp1_dma  {
+	status = "okay";
+};
+
+&rp1_eth {
+	status = "okay";
+	phy-handle = <&phy1>;
+	phy-reset-gpios = <&rp1_gpio 32 GPIO_ACTIVE_LOW>;
+	phy-reset-duration = <5>;
+
+	phy1: ethernet-phy@1 {
+		reg = <0x1>;
+		brcm,powerdown-enable;
+	};
+};
+
+gpio: &rp1_gpio {
+	status = "okay";
+};
+
+aux: &dummy {};
+
+&rp1_usb0 {
+	pinctrl-0 = <&usb_vbus_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&rp1_usb1 {
+	status = "okay";
+};
+
+#include "bcm2712-rpi.dtsi"
+
+i2c_csi_dsi0: &i2c6 { // Note: This is for MIPI0 connector only
+	pinctrl-0 = <&rp1_i2c6_38_39>;
+	pinctrl-names = "default";
+	clock-frequency = <100000>;
+};
+
+i2c_csi_dsi1: &i2c4 { // Note: This is for MIPI1 connector only
+	pinctrl-0 = <&rp1_i2c4_40_41>;
+	pinctrl-names = "default";
+	clock-frequency = <100000>;
+};
+
+i2c_csi_dsi: &i2c_csi_dsi1 { }; // An alias for compatibility
+
+csi0: &rp1_csi0 { };
+csi1: &rp1_csi1 { };
+dsi0: &rp1_dsi0 { };
+dsi1: &rp1_dsi1 { };
+dpi: &rp1_dpi { };
+vec: &rp1_vec { };
+dpi_gpio0:              &rp1_dpi_24bit_gpio0        { };
+dpi_gpio1:              &rp1_dpi_24bit_gpio2        { };
+dpi_18bit_cpadhi_gpio0: &rp1_dpi_18bit_cpadhi_gpio0 { };
+dpi_18bit_cpadhi_gpio2: &rp1_dpi_18bit_cpadhi_gpio2 { };
+dpi_18bit_gpio0:        &rp1_dpi_18bit_gpio0        { };
+dpi_18bit_gpio2:        &rp1_dpi_18bit_gpio2        { };
+dpi_16bit_cpadhi_gpio0: &rp1_dpi_16bit_cpadhi_gpio0 { };
+dpi_16bit_cpadhi_gpio2: &rp1_dpi_16bit_cpadhi_gpio2 { };
+dpi_16bit_gpio0:        &rp1_dpi_16bit_gpio0        { };
+dpi_16bit_gpio2:        &rp1_dpi_16bit_gpio2        { };
+
+/* Add the IOMMUs for some RP1 bus masters */
+
+&csi0 {
+	iommus = <&iommu5>;
+};
+
+&csi1 {
+	iommus = <&iommu5>;
+};
+
+&dsi0 {
+	iommus = <&iommu5>;
+};
+
+&dsi1 {
+	iommus = <&iommu5>;
+};
+
+&dpi {
+	iommus = <&iommu5>;
+};
+
+&vec {
+	iommus = <&iommu5>;
+};
+
+&ddc0 {
+	status = "disabled";
+};
+
+&ddc1 {
+	status = "disabled";
+};
+
+&hdmi0 {
+	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
+	clock-names = "hdmi", "bvb", "audio", "cec";
+	status = "disabled";
+};
+
+&hdmi1 {
+	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
+	clock-names = "hdmi", "bvb", "audio", "cec";
+	status = "disabled";
+};
+
+&hvs {
+	clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
+	clock-names = "core", "disp";
+};
+
+&mop {
+	status = "disabled";
+};
+
+&moplet {
+	status = "disabled";
+};
+
+&pixelvalve0 {
+	status = "disabled";
+};
+
+&pixelvalve1 {
+	status = "disabled";
+};
+
+&disp_intr {
+	status = "disabled";
+};
+
+/* SDIO1 is used to drive the SD card */
+&sdio1 {
+	pinctrl-0 = <&emmc_sd_pulls>, <&emmc_aon_cd_pins>;
+	pinctrl-names = "default";
+	vqmmc-supply = <&sd_io_1v8_reg>;
+	vmmc-supply = <&sd_vcc_reg>;
+	bus-width = <4>;
+	sd-uhs-sdr50;
+	sd-uhs-ddr50;
+	sd-uhs-sdr104;
+	cd-gpios = <&gio_aon 5 GPIO_ACTIVE_LOW>;
+	//no-1-8-v;
+	status = "okay";
+};
+
+&pinctrl_aon {
+	emmc_aon_cd_pins: emmc_aon_cd_pins {
+		function = "sd_card_g";
+		pins = "aon_gpio5";
+		bias-pull-up;
+	};
+
+	/* Slight hack - only one PWM pin (status LED) is usable */
+	aon_pwm_1pin: aon_pwm_1pin {
+		function = "aon_pwm";
+		pins = "aon_gpio9";
+	};
+};
+
+&pinctrl {
+	pwr_button_pins: pwr_button_pins {
+		function = "gpio";
+		pins = "gpio20";
+		bias-pull-up;
+	};
+
+	wl_on_pins: wl_on_pins {
+		function = "gpio";
+		pins = "gpio28";
+	};
+
+	bt_shutdown_pins: bt_shutdown_pins {
+		function = "gpio";
+		pins = "gpio29";
+	};
+
+	emmc_sd_pulls: emmc_sd_pulls {
+		pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3";
+		bias-pull-up;
+	};
+};
+
+/* uarta communicates with the BT module */
+&uarta {
+	uart-has-rtscts;
+	auto-flow-control;
+	status = "okay";
+	clock-frequency = <96000000>;
+	pinctrl-0 = <&uarta_24_pins &bt_shutdown_pins>;
+	pinctrl-names = "default";
+
+	bluetooth: bluetooth {
+		compatible = "brcm,bcm43438-bt";
+		max-speed = <3000000>;
+		shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
+		local-bd-address = [ 00 00 00 00 00 00 ];
+	};
+};
+
+&i2c_rp1boot {
+	clock-frequency = <400000>;
+	pinctrl-0 = <&i2c3_m4_agpio0_pins>;
+	pinctrl-names = "default";
+};
+
+/ {
+	chosen: chosen {
+		bootargs = "reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe";
+		stdout-path = "serial10:115200n8";
+	};
+
+	fan: cooling_fan {
+		status = "disabled";
+		compatible = "pwm-fan";
+		#cooling-cells = <2>;
+		cooling-min-state = <0>;
+		cooling-max-state = <3>;
+		cooling-levels = <0 75 125 175 250>;
+		pwms = <&rp1_pwm1 3 41566 PWM_POLARITY_INVERTED>;
+		rpm-regmap = <&rp1_pwm1>;
+		rpm-offset = <0x3c>;
+	};
+
+	pwr_button {
+		compatible = "gpio-keys";
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&pwr_button_pins>;
+		status = "okay";
+
+		pwr_key: pwr {
+			label = "pwr_button";
+			// linux,code = <205>; // KEY_SUSPEND
+			linux,code = <116>; // KEY_POWER
+			gpios = <&gio 20 GPIO_ACTIVE_LOW>;
+			debounce-interval = <50>; // ms
+		};
+	};
+};
+
+&usb {
+	power-domains = <&power RPI_POWER_DOMAIN_USB>;
+};
+
+/* SDIO2 drives the WLAN interface */
+&sdio2 {
+	pinctrl-0 = <&sdio2_30_pins>;
+	pinctrl-names = "default";
+	bus-width = <4>;
+	vmmc-supply = <&wl_on_reg>;
+	sd-uhs-ddr50;
+	non-removable;
+	status = "okay";
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	wifi: wifi@1 {
+		reg = <1>;
+		compatible = "brcm,bcm4329-fmac";
+		local-mac-address = [00 00 00 00 00 00];
+	};
+};
+
+&rpivid {
+	status = "okay";
+};
+
+&pinctrl {
+	spi10_gpio2: spi10_gpio2 {
+		function = "vc_spi0";
+		pins = "gpio2", "gpio3", "gpio4";
+		bias-disable;
+	};
+
+	spi10_cs_gpio1: spi10_cs_gpio1 {
+		function = "gpio";
+		pins = "gpio1";
+		bias-pull-up;
+	};
+};
+
+spi10_pins: &spi10_gpio2 {};
+spi10_cs_pins: &spi10_cs_gpio1 {};
+
+&spi10 {
+	pinctrl-names = "default";
+	cs-gpios = <&gio 1 1>;
+	pinctrl-0 = <&spi10_pins &spi10_cs_pins>;
+
+	spidev10: spidev@0 {
+		compatible = "spidev";
+		reg = <0>;	/* CE0 */
+		#address-cells = <1>;
+		#size-cells = <0>;
+		spi-max-frequency = <20000000>;
+		status = "okay";
+	};
+};
+
+// =============================================
+// Board specific stuff here
+
+&gio_aon {
+	// Don't use GIO_AON as an interrupt controller because it will
+	// clash with the firmware monitoring the PMIC interrupt via the VPU.
+
+	/delete-property/ interrupt-controller;
+};
+
+&main_aon_irq {
+	// Don't use the MAIN_AON_IRQ interrupt controller because it will
+	// clash with the firmware monitoring the PMIC interrupt via the VPU.
+
+	status = "disabled";
+};
+
+&rp1_pwm1 {
+	status = "disabled";
+	pinctrl-0 = <&rp1_pwm1_gpio45>;
+	pinctrl-names = "default";
+};
+
+&thermal_trips {
+	cpu_tepid: cpu-tepid {
+		temperature = <50000>;
+		hysteresis = <5000>;
+		type = "active";
+	};
+
+	cpu_warm: cpu-warm {
+		temperature = <60000>;
+		hysteresis = <5000>;
+		type = "active";
+	};
+
+	cpu_hot: cpu-hot {
+		temperature = <67500>;
+		hysteresis = <5000>;
+		type = "active";
+	};
+
+	cpu_vhot: cpu-vhot {
+		temperature = <75000>;
+		hysteresis = <5000>;
+		type = "active";
+	};
+};
+
+&cooling_maps {
+	tepid {
+		trip = <&cpu_tepid>;
+		cooling-device = <&fan 1 1>;
+	};
+
+	warm {
+		trip = <&cpu_warm>;
+		cooling-device = <&fan 2 2>;
+	};
+
+	hot {
+		trip = <&cpu_hot>;
+		cooling-device = <&fan 3 3>;
+	};
+
+	vhot {
+		trip = <&cpu_vhot>;
+		cooling-device = <&fan 4 4>;
+	};
+
+	melt {
+		trip = <&cpu_crit>;
+		cooling-device = <&fan 4 4>;
+	};
+};
+
+&gio {
+	// The GPIOs above 35 are not used on Pi 5, so shrink the upper bank
+	// to reduce the clutter in gpioinfo/pinctrl
+	brcm,gpio-bank-widths = <32 4>;
+
+	gpio-line-names =
+		"-", // GPIO_000
+		"2712_BOOT_CS_N", // GPIO_001
+		"2712_BOOT_MISO", // GPIO_002
+		"2712_BOOT_MOSI", // GPIO_003
+		"2712_BOOT_SCLK", // GPIO_004
+		"-", // GPIO_005
+		"-", // GPIO_006
+		"-", // GPIO_007
+		"-", // GPIO_008
+		"-", // GPIO_009
+		"-", // GPIO_010
+		"-", // GPIO_011
+		"-", // GPIO_012
+		"-", // GPIO_013
+		"PCIE_SDA", // GPIO_014
+		"PCIE_SCL", // GPIO_015
+		"-", // GPIO_016
+		"-", // GPIO_017
+		"-", // GPIO_018
+		"-", // GPIO_019
+		"PWR_GPIO", // GPIO_020
+		"2712_G21_FS", // GPIO_021
+		"-", // GPIO_022
+		"-", // GPIO_023
+		"BT_RTS", // GPIO_024
+		"BT_CTS", // GPIO_025
+		"BT_TXD", // GPIO_026
+		"BT_RXD", // GPIO_027
+		"WL_ON", // GPIO_028
+		"BT_ON", // GPIO_029
+		"WIFI_SDIO_CLK", // GPIO_030
+		"WIFI_SDIO_CMD", // GPIO_031
+		"WIFI_SDIO_D0", // GPIO_032
+		"WIFI_SDIO_D1", // GPIO_033
+		"WIFI_SDIO_D2", // GPIO_034
+		"WIFI_SDIO_D3"; // GPIO_035
+};
+
+&gio_aon {
+	gpio-line-names =
+		"RP1_SDA", // AON_GPIO_00
+		"RP1_SCL", // AON_GPIO_01
+		"RP1_RUN", // AON_GPIO_02
+		"SD_IOVDD_SEL", // AON_GPIO_03
+		"SD_PWR_ON", // AON_GPIO_04
+		"SD_CDET_N", // AON_GPIO_05
+		"SD_FLG_N", // AON_GPIO_06
+		"-", // AON_GPIO_07
+		"2712_WAKE", // AON_GPIO_08
+		"2712_STAT_LED", // AON_GPIO_09
+		"-", // AON_GPIO_10
+		"-", // AON_GPIO_11
+		"PMIC_INT", // AON_GPIO_12
+		"UART_TX_FS", // AON_GPIO_13
+		"UART_RX_FS", // AON_GPIO_14
+		"-", // AON_GPIO_15
+		"-", // AON_GPIO_16
+
+		// Pad bank0 out to 32 entries
+		"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+
+		"HDMI0_SCL", // AON_SGPIO_00
+		"HDMI0_SDA", // AON_SGPIO_01
+		"HDMI1_SCL", // AON_SGPIO_02
+		"HDMI1_SDA", // AON_SGPIO_03
+		"PMIC_SCL", // AON_SGPIO_04
+		"PMIC_SDA"; // AON_SGPIO_05
+
+	rp1_run_hog {
+		gpio-hog;
+		gpios = <2 GPIO_ACTIVE_HIGH>;
+		output-high;
+		line-name = "RP1 RUN pin";
+	};
+};
+
+&rp1_gpio {
+	gpio-line-names =
+		"ID_SDA", // GPIO0
+		"ID_SCL", // GPIO1
+		"GPIO2", // GPIO2
+		"GPIO3", // GPIO3
+		"GPIO4", // GPIO4
+		"GPIO5", // GPIO5
+		"GPIO6", // GPIO6
+		"GPIO7", // GPIO7
+		"GPIO8", // GPIO8
+		"GPIO9", // GPIO9
+		"GPIO10", // GPIO10
+		"GPIO11", // GPIO11
+		"GPIO12", // GPIO12
+		"GPIO13", // GPIO13
+		"GPIO14", // GPIO14
+		"GPIO15", // GPIO15
+		"GPIO16", // GPIO16
+		"GPIO17", // GPIO17
+		"GPIO18", // GPIO18
+		"GPIO19", // GPIO19
+		"GPIO20", // GPIO20
+		"GPIO21", // GPIO21
+		"GPIO22", // GPIO22
+		"GPIO23", // GPIO23
+		"GPIO24", // GPIO24
+		"GPIO25", // GPIO25
+		"GPIO26", // GPIO26
+		"GPIO27", // GPIO27
+
+		"PCIE_RP1_WAKE", // GPIO28
+		"FAN_TACH", // GPIO29
+		"HOST_SDA", // GPIO30
+		"HOST_SCL", // GPIO31
+		"ETH_RST_N", // GPIO32
+		"-", // GPIO33
+
+		"CD0_IO0_MICCLK", // GPIO34
+		"CD0_IO0_MICDAT0", // GPIO35
+		"RP1_PCIE_CLKREQ_N", // GPIO36
+		"-", // GPIO37
+		"CD0_SDA", // GPIO38
+		"CD0_SCL", // GPIO39
+		"CD1_SDA", // GPIO40
+		"CD1_SCL", // GPIO41
+		"USB_VBUS_EN", // GPIO42
+		"USB_OC_N", // GPIO43
+		"RP1_STAT_LED", // GPIO44
+		"FAN_PWM", // GPIO45
+		"CD1_IO0_MICCLK", // GPIO46
+		"2712_WAKE", // GPIO47
+		"CD1_IO1_MICDAT1", // GPIO48
+		"EN_MAX_USB_CUR", // GPIO49
+		"-", // GPIO50
+		"-", // GPIO51
+		"-", // GPIO52
+		"-"; // GPIO53
+
+	usb_vbus_pins: usb_vbus_pins {
+		function = "vbus1";
+		pins = "gpio42", "gpio43";
+	};
+};
+
+/ {
+	aliases: aliases {
+		blconfig = &blconfig;
+		blpubkey = &blpubkey;
+		bluetooth = &bluetooth;
+		console = &uart10;
+		ethernet0 = &rp1_eth;
+		wifi0 = &wifi;
+		fb = &fb;
+		mailbox = &mailbox;
+		mmc0 = &sdio1;
+		uart0 = &uart0;
+		uart1 = &uart1;
+		uart2 = &uart2;
+		uart3 = &uart3;
+		uart4 = &uart4;
+		uart10 = &uart10;
+		serial0 = &uart0;
+		serial1 = &uart1;
+		serial2 = &uart2;
+		serial3 = &uart3;
+		serial4 = &uart4;
+		serial10 = &uart10;
+		i2c = &i2c_arm;
+		i2c0 = &i2c0;
+		i2c1 = &i2c1;
+		i2c2 = &i2c2;
+		i2c3 = &i2c3;
+		i2c4 = &i2c4;
+		i2c5 = &i2c5;
+		i2c6 = &i2c6;
+		i2c10 = &i2c_rp1boot;
+		// Bit-bashed i2c_gpios start at 10
+		spi0 = &spi0;
+		spi1 = &spi1;
+		spi2 = &spi2;
+		spi3 = &spi3;
+		spi4 = &spi4;
+		spi5 = &spi5;
+		spi10 = &spi10;
+		gpio0 = &gpio;
+		gpio1 = &gio;
+		gpio2 = &gio_aon;
+		gpio3 = &pinctrl;
+		gpio4 = &pinctrl_aon;
+		usb0 = &rp1_usb0;
+		usb1 = &rp1_usb1;
+		drm-dsi1 = &dsi0;
+		drm-dsi2 = &dsi1;
+	};
+
+	__overrides__ {
+		bdaddr = <&bluetooth>, "local-bd-address[";
+		button_debounce = <&pwr_key>, "debounce-interval:0";
+		cooling_fan = <&fan>, "status", <&rp1_pwm1>, "status";
+		uart0_console = <&uart0>,"status", <&aliases>, "console=",&uart0;
+		i2c0 = <&i2c0>, "status";
+		i2c1 = <&i2c1>, "status";
+		i2c = <&i2c1>, "status";
+		i2c_arm = <&i2c_arm>, "status";
+		i2c_vc = <&i2c_vc>, "status";
+		i2c_csi_dsi = <&i2c_csi_dsi>, "status";
+		i2c_csi_dsi0 = <&i2c_csi_dsi0>, "status";
+		i2c_csi_dsi1 = <&i2c_csi_dsi1>, "status";
+		i2c0_baudrate = <&i2c0>, "clock-frequency:0";
+		i2c1_baudrate = <&i2c1>, "clock-frequency:0";
+		i2c_baudrate = <&i2c_arm>, "clock-frequency:0";
+		i2c_arm_baudrate = <&i2c_arm>, "clock-frequency:0";
+		i2c_vc_baudrate = <&i2c_vc>, "clock-frequency:0";
+		krnbt = <&bluetooth>, "status";
+		nvme = <&pciex1>, "status";
+		pciex1 = <&pciex1>, "status";
+		pciex1_gen = <&pciex1> , "max-link-speed:0";
+		pciex1_no_l0s = <&pciex1>, "aspm-no-l0s?";
+		pciex1_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0";
+		pcie_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0";
+		random = <&random>, "status";
+		rtc = <&rpi_rtc>, "status";
+		rtc_bbat_vchg = <&rpi_rtc>, "trickle-charge-microvolt:0";
+		sd_cqe = <&sdio1>, "supports-cqe?";
+		spi = <&spi0>, "status";
+		suspend = <&pwr_key>, "linux,code:0=205";
+		uart0 = <&uart0>, "status";
+		wifiaddr = <&wifi>, "local-mac-address[";
+
+		act_led_gpio = <&led_act>,"gpios:4",<&led_act>,"gpios:0=",<&gpio>;
+		act_led_activelow = <&led_act>,"gpios:8";
+		act_led_trigger = <&led_act>, "linux,default-trigger";
+		pwr_led_gpio = <&led_pwr>,"gpios:4";
+		pwr_led_activelow = <&led_pwr>, "gpios:8";
+		pwr_led_trigger = <&led_pwr>, "linux,default-trigger";
+		eth_led0 = <&phy1>,"led-modes:0";
+		eth_led1 = <&phy1>,"led-modes:4";
+		drm_fb0_rp1_dsi0 = <&aliases>, "drm-fb0=",&dsi0;
+		drm_fb0_rp1_dsi1 = <&aliases>, "drm-fb0=",&dsi1;
+		drm_fb0_rp1_dpi = <&aliases>, "drm-fb0=",&dpi;
+		drm_fb0_vc4 = <&aliases>, "drm-fb0=",&vc4;
+		drm_fb1_rp1_dsi0 = <&aliases>, "drm-fb1=",&dsi0;
+		drm_fb1_rp1_dsi1 = <&aliases>, "drm-fb1=",&dsi1;
+		drm_fb1_rp1_dpi = <&aliases>, "drm-fb1=",&dpi;
+		drm_fb1_vc4 = <&aliases>, "drm-fb1=",&vc4;
+		drm_fb2_rp1_dsi0 = <&aliases>, "drm-fb2=",&dsi0;
+		drm_fb2_rp1_dsi1 = <&aliases>, "drm-fb2=",&dsi1;
+		drm_fb2_rp1_dpi = <&aliases>, "drm-fb2=",&dpi;
+		drm_fb2_vc4 = <&aliases>, "drm-fb2=",&vc4;
+
+		fan_temp0 = <&cpu_tepid>,"temperature:0";
+		fan_temp1 = <&cpu_warm>,"temperature:0";
+		fan_temp2 = <&cpu_hot>,"temperature:0";
+		fan_temp3 = <&cpu_vhot>,"temperature:0";
+		fan_temp0_hyst = <&cpu_tepid>,"hysteresis:0";
+		fan_temp1_hyst = <&cpu_warm>,"hysteresis:0";
+		fan_temp2_hyst = <&cpu_hot>,"hysteresis:0";
+		fan_temp3_hyst = <&cpu_vhot>,"hysteresis:0";
+		fan_temp0_speed = <&fan>, "cooling-levels:4";
+		fan_temp1_speed = <&fan>, "cooling-levels:8";
+		fan_temp2_speed = <&fan>, "cooling-levels:12";
+		fan_temp3_speed = <&fan>, "cooling-levels:16";
+	};
+};
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts
@@ -1,2 +1,20 @@
 // SPDX-License-Identifier: GPL-2.0
-#include "arm/broadcom/bcm2712-rpi-cm5-cm4io.dts"
+/dts-v1/;
+
+#include "bcm2712-rpi-cm5.dtsi"
+
+// The RP1 USB3 interfaces are not usable on CM4IO
+
+&rp1_usb0 {
+	status = "disabled";
+};
+
+&rp1_usb1 {
+	status = "disabled";
+};
+
+/ {
+	__overrides__ {
+		i2c_csi_dsi = <&i2c_csi_dsi>, "status";
+	};
+};
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts
@@ -1,2 +1,10 @@
 // SPDX-License-Identifier: GPL-2.0
-#include "arm/broadcom/bcm2712-rpi-cm5-cm5io.dts"
+/dts-v1/;
+
+#include "bcm2712-rpi-cm5.dtsi"
+
+/ {
+	__overrides__ {
+		i2c_csi_dsi = <&i2c_csi_dsi>, "status";
+	};
+};
--- a/arch/arm/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
+++ /dev/null
@@ -1,890 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/clock/rp1.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/mfd/rp1.h>
-#include <dt-bindings/pwm/pwm.h>
-#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
-
-#define i2c0 _i2c0
-#define i2c3 _i2c3
-#define i2c4 _i2c4
-#define i2c5 _i2c5
-#define i2c6 _i2c6
-#define i2c8 _i2c8
-#define i2s _i2s
-#define pwm0 _pwm0
-#define pwm1 _pwm1
-#define spi0 _spi0
-#define spi3 _spi3
-#define spi4 _spi4
-#define spi5 _spi5
-#define spi6 _spi6
-#define uart0 _uart0
-#define uart2 _uart2
-#define uart5 _uart5
-
-#include "bcm2712.dtsi"
-
-#undef i2c0
-#undef i2c3
-#undef i2c4
-#undef i2c5
-#undef i2c6
-#undef i2c8
-#undef i2s
-#undef pwm0
-#undef pwm1
-#undef spi0
-#undef spi3
-#undef spi4
-#undef spi5
-#undef spi6
-#undef uart0
-#undef uart2
-#undef uart3
-#undef uart4
-#undef uart5
-
-/ {
-	compatible = "raspberrypi,5-compute-module", "brcm,bcm2712";
-	model = "Raspberry Pi Compute Module 5";
-
-	/* Will be filled by the bootloader */
-	memory@0 {
-		device_type = "memory";
-		reg = <0 0 0x28000000>;
-	};
-
-	leds: leds {
-		compatible = "gpio-leds";
-
-		led_pwr: led-pwr {
-			label = "PWR";
-			gpios = <&rp1_gpio 44 GPIO_ACTIVE_LOW>;
-			default-state = "off";
-			linux,default-trigger = "none";
-		};
-
-		led_act: led-act {
-			label = "ACT";
-			gpios = <&gio_aon 9 GPIO_ACTIVE_LOW>;
-			default-state = "off";
-			linux,default-trigger = "mmc0";
-		};
-	};
-
-	sd_io_1v8_reg: sd_io_1v8_reg {
-		compatible = "regulator-gpio";
-		regulator-name = "vdd-sd-io";
-		regulator-min-microvolt = <1800000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-boot-on;
-		regulator-always-on;
-		regulator-settling-time-us = <5000>;
-		gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>;
-		states = <1800000 0x1
-			  3300000 0x0>;
-		status = "okay";
-	};
-
-	sd_vcc_reg: sd_vcc_reg {
-		compatible = "regulator-fixed";
-		regulator-name = "vcc-sd";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-boot-on;
-		enable-active-high;
-		gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
-		status = "okay";
-	};
-
-	wl_on_reg: wl_on_reg {
-		compatible = "regulator-fixed";
-		regulator-name = "wl-on-regulator";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		pinctrl-0 = <&wl_on_pins>;
-		pinctrl-names = "default";
-
-		gpio = <&gio 28 GPIO_ACTIVE_HIGH>;
-
-		startup-delay-us = <150000>;
-		enable-active-high;
-	};
-
-	clocks: clocks {
-	};
-
-	cam1_clk: cam1_clk {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		status = "disabled";
-	};
-
-	cam0_clk: cam0_clk {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		status = "disabled";
-	};
-
-	cam0_reg: cam0_reg {
-		compatible = "regulator-fixed";
-		regulator-name = "cam0_reg";
-		enable-active-high;
-		status = "okay";
-		gpio = <&rp1_gpio 34 0>; // CD0_IO0_MICCLK, to CAM_GPIO on connector
-	};
-
-	cam_dummy_reg: cam_dummy_reg {
-		compatible = "regulator-fixed";
-		regulator-name = "cam-dummy-reg";
-		status = "okay";
-	};
-
-	dummy: dummy {
-		// A target for unwanted overlay fragments
-	};
-
-
-	// A few extra labels to keep overlays happy
-
-	i2c0if: i2c0if {};
-	i2c0mux: i2c0mux {};
-};
-
-rp1_target: &pcie2 {
-	brcm,enable-mps-rcb;
-	brcm,vdm-qos-map = <0xbbaa9888>;
-	aspm-no-l0s;
-	status = "okay";
-};
-
-// Add some labels to 2712 device
-
-// The system UART
-uart10: &_uart0 { status = "okay"; };
-
-// The system SPI for the bootloader EEPROM
-spi10: &_spi0 { status = "okay"; };
-
-i2c_rp1boot: &_i2c3 { };
-
-#include "rp1.dtsi"
-
-&rp1 {
-	// PCIe address space layout:
-	// 00_00000000-00_00xxxxxx = RP1 peripherals
-	// 10_00000000-1x_xxxxxxxx = up to 64GB system RAM
-
-	// outbound access aimed at PCIe 0_00xxxxxx -> RP1 c0_40xxxxxx
-	// This is the RP1 peripheral space
-	ranges = <0xc0 0x40000000
-		  0x02000000 0x00 0x00000000
-		  0x00 0x00400000>;
-
-	dma-ranges =
-	// inbound RP1 1x_xxxxxxxx -> PCIe 1x_xxxxxxxx
-		     <0x10 0x00000000
-		      0x43000000 0x10 0x00000000
-		      0x10 0x00000000>,
-
-	// inbound RP1 c0_40xxxxxx -> PCIe 00_00xxxxxx
-	// This allows the RP1 DMA controller to address RP1 hardware
-		     <0xc0 0x40000000
-		      0x02000000 0x0 0x00000000
-		      0x0 0x00400000>,
-
-	// inbound RP1 0x_xxxxxxxx -> PCIe 1x_xxxxxxxx
-		     <0x00 0x00000000
-		      0x02000000 0x10 0x00000000
-		      0x10 0x00000000>;
-};
-
-// Expose RP1 nodes as system nodes with labels
-
-&rp1_dma  {
-	status = "okay";
-};
-
-&rp1_eth {
-	status = "okay";
-	phy-handle = <&phy1>;
-	phy-reset-gpios = <&rp1_gpio 32 GPIO_ACTIVE_LOW>;
-	phy-reset-duration = <5>;
-
-	phy1: ethernet-phy@1 {
-		reg = <0x1>;
-		brcm,powerdown-enable;
-		interrupt-parent = <&gpio>;
-		interrupts = <37 IRQ_TYPE_LEVEL_LOW>;
-	};
-};
-
-gpio: &rp1_gpio {
-	status = "okay";
-};
-
-aux: &dummy {};
-
-&rp1_usb0 {
-	pinctrl-0 = <&usb_vbus_pins>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&rp1_usb1 {
-	status = "okay";
-};
-
-#include "bcm2712-rpi.dtsi"
-
-i2c_csi_dsi0: &i2c6 { // Note: This is for MIPI0 connector only
-	pinctrl-0 = <&rp1_i2c6_38_39>;
-	pinctrl-names = "default";
-	clock-frequency = <100000>;
-};
-
-i2c_csi_dsi1: &i2c0 { // Note: This is for MIPI1 connector
-};
-
-i2c_csi_dsi: &i2c_csi_dsi1 { }; // An alias for compatibility
-
-cam1_reg: &cam0_reg { // Shares CAM_GPIO with cam0_reg
-};
-
-csi0: &rp1_csi0 { };
-csi1: &rp1_csi1 { };
-dsi0: &rp1_dsi0 { };
-dsi1: &rp1_dsi1 { };
-dpi: &rp1_dpi { };
-vec: &rp1_vec { };
-dpi_gpio0:              &rp1_dpi_24bit_gpio0        { };
-dpi_gpio1:              &rp1_dpi_24bit_gpio2        { };
-dpi_18bit_cpadhi_gpio0: &rp1_dpi_18bit_cpadhi_gpio0 { };
-dpi_18bit_cpadhi_gpio2: &rp1_dpi_18bit_cpadhi_gpio2 { };
-dpi_18bit_gpio0:        &rp1_dpi_18bit_gpio0        { };
-dpi_18bit_gpio2:        &rp1_dpi_18bit_gpio2        { };
-dpi_16bit_cpadhi_gpio0: &rp1_dpi_16bit_cpadhi_gpio0 { };
-dpi_16bit_cpadhi_gpio2: &rp1_dpi_16bit_cpadhi_gpio2 { };
-dpi_16bit_gpio0:        &rp1_dpi_16bit_gpio0        { };
-dpi_16bit_gpio2:        &rp1_dpi_16bit_gpio2        { };
-
-/* Add the IOMMUs for some RP1 bus masters */
-
-&csi0 {
-	iommus = <&iommu5>;
-};
-
-&csi1 {
-	iommus = <&iommu5>;
-};
-
-&dsi0 {
-	iommus = <&iommu5>;
-};
-
-&dsi1 {
-	iommus = <&iommu5>;
-};
-
-&dpi {
-	iommus = <&iommu5>;
-};
-
-&vec {
-	iommus = <&iommu5>;
-};
-
-&ddc0 {
-	status = "disabled";
-};
-
-&ddc1 {
-	status = "disabled";
-};
-
-&hdmi0 {
-	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
-	clock-names = "hdmi", "bvb", "audio", "cec";
-	status = "disabled";
-};
-
-&hdmi1 {
-	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
-	clock-names = "hdmi", "bvb", "audio", "cec";
-	status = "disabled";
-};
-
-&hvs {
-	clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
-	clock-names = "core", "disp";
-};
-
-&mop {
-	status = "disabled";
-};
-
-&moplet {
-	status = "disabled";
-};
-
-&pixelvalve0 {
-	status = "disabled";
-};
-
-&pixelvalve1 {
-	status = "disabled";
-};
-
-&disp_intr {
-	status = "disabled";
-};
-
-/* SDIO1 is used to drive the eMMC/SD card */
-&sdio1 {
-	pinctrl-0 = <&emmc_cmddat_pulls>, <&emmc_ds_pull>;
-	pinctrl-names = "default";
-	vqmmc-supply = <&sd_io_1v8_reg>;
-	vmmc-supply = <&sd_vcc_reg>;
-	bus-width = <8>;
-	sd-uhs-sdr50;
-	sd-uhs-ddr50;
-	sd-uhs-sdr104;
-	mmc-hs200-1_8v;
-	mmc-hs400-1_8v;
-	mmc-hs400-enhanced-strobe;
-	broken-cd;
-	supports-cqe;
-	status = "okay";
-};
-
-&pinctrl_aon {
-	ant_pins: ant_pins {
-		function = "gpio";
-		pins = "aon_gpio5", "aon_gpio6";
-	};
-
-	/* Slight hack - only one PWM pin (status LED) is usable */
-	aon_pwm_1pin: aon_pwm_1pin {
-		function = "aon_pwm";
-		pins = "aon_gpio9";
-	};
-};
-
-&pinctrl {
-	pwr_button_pins: pwr_button_pins {
-		function = "gpio";
-		pins = "gpio20";
-		bias-pull-up;
-	};
-
-	wl_on_pins: wl_on_pins {
-		function = "gpio";
-		pins = "gpio28";
-	};
-
-	bt_shutdown_pins: bt_shutdown_pins {
-		function = "gpio";
-		pins = "gpio29";
-	};
-
-	emmc_ds_pull: emmc_ds_pull {
-		pins = "emmc_ds";
-		bias-pull-down;
-	};
-
-	emmc_cmddat_pulls: emmc_cmddat_pulls {
-		pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3",
-		       "emmc_dat4", "emmc_dat5", "emmc_dat6", "emmc_dat7";
-		bias-pull-up;
-	};
-};
-
-/* uarta communicates with the BT module */
-&uarta {
-	uart-has-rtscts;
-	auto-flow-control;
-	status = "okay";
-	clock-frequency = <96000000>;
-	pinctrl-0 = <&uarta_24_pins &bt_shutdown_pins>;
-	pinctrl-names = "default";
-
-	bluetooth: bluetooth {
-		compatible = "brcm,bcm43438-bt";
-		max-speed = <3000000>;
-		shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
-		local-bd-address = [ 00 00 00 00 00 00 ];
-	};
-};
-
-&i2c_rp1boot {
-	clock-frequency = <400000>;
-	pinctrl-0 = <&i2c3_m4_agpio0_pins>;
-	pinctrl-names = "default";
-};
-
-/ {
-	chosen: chosen {
-		bootargs = "reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe";
-		stdout-path = "serial10:115200n8";
-	};
-
-	fan: cooling_fan {
-		status = "disabled";
-		compatible = "pwm-fan";
-		#cooling-cells = <2>;
-		cooling-min-state = <0>;
-		cooling-max-state = <3>;
-		cooling-levels = <0 75 125 175 250>;
-		pwms = <&rp1_pwm1 3 41566 PWM_POLARITY_INVERTED>;
-		rpm-regmap = <&rp1_pwm1>;
-		rpm-offset = <0x3c>;
-	};
-
-	pwr_button {
-		compatible = "gpio-keys";
-
-		pinctrl-names = "default";
-		pinctrl-0 = <&pwr_button_pins>;
-		status = "okay";
-
-		pwr_key: pwr {
-			label = "pwr_button";
-			// linux,code = <205>; // KEY_SUSPEND
-			linux,code = <116>; // KEY_POWER
-			gpios = <&gio 20 GPIO_ACTIVE_LOW>;
-			debounce-interval = <50>; // ms
-		};
-	};
-};
-
-&usb {
-	power-domains = <&power RPI_POWER_DOMAIN_USB>;
-};
-
-/* SDIO2 drives the WLAN interface */
-&sdio2 {
-	pinctrl-0 = <&sdio2_30_pins>, <&ant_pins>;
-	pinctrl-names = "default";
-	bus-width = <4>;
-	vmmc-supply = <&wl_on_reg>;
-	sd-uhs-ddr50;
-	non-removable;
-	status = "okay";
-	#address-cells = <1>;
-	#size-cells = <0>;
-
-	wifi: wifi@1 {
-		reg = <1>;
-		compatible = "brcm,bcm4329-fmac";
-		local-mac-address = [00 00 00 00 00 00];
-	};
-};
-
-&rpivid {
-	status = "okay";
-};
-
-&pinctrl {
-	spi10_gpio2: spi10_gpio2 {
-		function = "vc_spi0";
-		pins = "gpio2", "gpio3", "gpio4";
-		bias-disable;
-	};
-
-	spi10_cs_gpio1: spi10_cs_gpio1 {
-		function = "gpio";
-		pins = "gpio1";
-		bias-pull-up;
-	};
-};
-
-spi10_pins: &spi10_gpio2 {};
-spi10_cs_pins: &spi10_cs_gpio1 {};
-
-&spi10 {
-	pinctrl-names = "default";
-	cs-gpios = <&gio 1 1>;
-	pinctrl-0 = <&spi10_pins &spi10_cs_pins>;
-
-	spidev10: spidev@0 {
-		compatible = "spidev";
-		reg = <0>;	/* CE0 */
-		#address-cells = <1>;
-		#size-cells = <0>;
-		spi-max-frequency = <20000000>;
-		status = "okay";
-	};
-};
-
-// =============================================
-// Board specific stuff here
-
-&gio_aon {
-	// Don't use GIO_AON as an interrupt controller because it will
-	// clash with the firmware monitoring the PMIC interrupt via the VPU.
-
-	/delete-property/ interrupt-controller;
-};
-
-&main_aon_irq {
-	// Don't use the MAIN_AON_IRQ interrupt controller because it will
-	// clash with the firmware monitoring the PMIC interrupt via the VPU.
-
-	status = "disabled";
-};
-
-&rp1_pwm1 {
-	status = "disabled";
-	pinctrl-0 = <&rp1_pwm1_gpio45>;
-	pinctrl-names = "default";
-};
-
-&thermal_trips {
-	cpu_tepid: cpu-tepid {
-		temperature = <50000>;
-		hysteresis = <5000>;
-		type = "active";
-	};
-
-	cpu_warm: cpu-warm {
-		temperature = <60000>;
-		hysteresis = <5000>;
-		type = "active";
-	};
-
-	cpu_hot: cpu-hot {
-		temperature = <67500>;
-		hysteresis = <5000>;
-		type = "active";
-	};
-
-	cpu_vhot: cpu-vhot {
-		temperature = <75000>;
-		hysteresis = <5000>;
-		type = "active";
-	};
-};
-
-&cooling_maps {
-	tepid {
-		trip = <&cpu_tepid>;
-		cooling-device = <&fan 1 1>;
-	};
-
-	warm {
-		trip = <&cpu_warm>;
-		cooling-device = <&fan 2 2>;
-	};
-
-	hot {
-		trip = <&cpu_hot>;
-		cooling-device = <&fan 3 3>;
-	};
-
-	vhot {
-		trip = <&cpu_vhot>;
-		cooling-device = <&fan 4 4>;
-	};
-
-	melt {
-		trip = <&cpu_crit>;
-		cooling-device = <&fan 4 4>;
-	};
-};
-
-&gio {
-	// The GPIOs above 35 are not used on Pi 5, so shrink the upper bank
-	// to reduce the clutter in gpioinfo/pinctrl
-	brcm,gpio-bank-widths = <32 4>;
-
-	gpio-line-names =
-		"-", // GPIO_000
-		"2712_BOOT_CS_N", // GPIO_001
-		"2712_BOOT_MISO", // GPIO_002
-		"2712_BOOT_MOSI", // GPIO_003
-		"2712_BOOT_SCLK", // GPIO_004
-		"-", // GPIO_005
-		"-", // GPIO_006
-		"-", // GPIO_007
-		"-", // GPIO_008
-		"-", // GPIO_009
-		"-", // GPIO_010
-		"-", // GPIO_011
-		"-", // GPIO_012
-		"-", // GPIO_013
-		"-", // GPIO_014
-		"-", // GPIO_015
-		"-", // GPIO_016
-		"-", // GPIO_017
-		"-", // GPIO_018
-		"-", // GPIO_019
-		"PWR_GPIO", // GPIO_020
-		"2712_G21_FS", // GPIO_021
-		"-", // GPIO_022
-		"-", // GPIO_023
-		"BT_RTS", // GPIO_024
-		"BT_CTS", // GPIO_025
-		"BT_TXD", // GPIO_026
-		"BT_RXD", // GPIO_027
-		"WL_ON", // GPIO_028
-		"BT_ON", // GPIO_029
-		"WIFI_SDIO_CLK", // GPIO_030
-		"WIFI_SDIO_CMD", // GPIO_031
-		"WIFI_SDIO_D0", // GPIO_032
-		"WIFI_SDIO_D1", // GPIO_033
-		"WIFI_SDIO_D2", // GPIO_034
-		"WIFI_SDIO_D3"; // GPIO_035
-};
-
-&gio_aon {
-	gpio-line-names =
-		"RP1_SDA", // AON_GPIO_00
-		"RP1_SCL", // AON_GPIO_01
-		"RP1_RUN", // AON_GPIO_02
-		"SD_IOVDD_SEL", // AON_GPIO_03
-		"SD_PWR_ON", // AON_GPIO_04
-		"ANT1", // AON_GPIO_05
-		"ANT2", // AON_GPIO_06
-		"-", // AON_GPIO_07
-		"2712_WAKE", // AON_GPIO_08
-		"2712_STAT_LED", // AON_GPIO_09
-		"-", // AON_GPIO_10
-		"-", // AON_GPIO_11
-		"PMIC_INT", // AON_GPIO_12
-		"UART_TX_FS", // AON_GPIO_13
-		"UART_RX_FS", // AON_GPIO_14
-		"-", // AON_GPIO_15
-		"-", // AON_GPIO_16
-
-		// Pad bank0 out to 32 entries
-		"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
-
-		"HDMI0_SCL", // AON_SGPIO_00
-		"HDMI0_SDA", // AON_SGPIO_01
-		"HDMI1_SCL", // AON_SGPIO_02
-		"HDMI1_SDA", // AON_SGPIO_03
-		"PMIC_SCL", // AON_SGPIO_04
-		"PMIC_SDA"; // AON_SGPIO_05
-
-	rp1_run_hog {
-		gpio-hog;
-		gpios = <2 GPIO_ACTIVE_HIGH>;
-		output-high;
-		line-name = "RP1 RUN pin";
-	};
-
-	ant1: ant1-hog {
-		gpio-hog;
-		gpios = <5 GPIO_ACTIVE_HIGH>;
-		/* internal antenna enabled */
-		output-high;
-		line-name = "ant1";
-	};
-
-	ant2: ant2-hog {
-		gpio-hog;
-		gpios = <6 GPIO_ACTIVE_HIGH>;
-		/* external antenna disabled */
-		output-low;
-		line-name = "ant2";
-	};
-};
-
-&rp1_gpio {
-	gpio-line-names =
-		"ID_SDA", // GPIO0
-		"ID_SCL", // GPIO1
-		"GPIO2", // GPIO2
-		"GPIO3", // GPIO3
-		"GPIO4", // GPIO4
-		"GPIO5", // GPIO5
-		"GPIO6", // GPIO6
-		"GPIO7", // GPIO7
-		"GPIO8", // GPIO8
-		"GPIO9", // GPIO9
-		"GPIO10", // GPIO10
-		"GPIO11", // GPIO11
-		"GPIO12", // GPIO12
-		"GPIO13", // GPIO13
-		"GPIO14", // GPIO14
-		"GPIO15", // GPIO15
-		"GPIO16", // GPIO16
-		"GPIO17", // GPIO17
-		"GPIO18", // GPIO18
-		"GPIO19", // GPIO19
-		"GPIO20", // GPIO20
-		"GPIO21", // GPIO21
-		"GPIO22", // GPIO22
-		"GPIO23", // GPIO23
-		"GPIO24", // GPIO24
-		"GPIO25", // GPIO25
-		"GPIO26", // GPIO26
-		"GPIO27", // GPIO27
-
-		"PCIE_PWR_EN", // GPIO28
-		"FAN_TACH", // GPIO29
-		"HOST_SDA", // GPIO30
-		"HOST_SCL", // GPIO31
-		"ETH_RST_N", // GPIO32
-		"PCIE_DET_WAKE", // GPIO33
-
-		"CD0_IO0_MICCLK", // GPIO34
-		"CD0_IO0_MICDAT0", // GPIO35
-		"RP1_PCIE_CLKREQ_N", // GPIO36
-		"ETH_IRQ_N", // GPIO37
-		"SDA0", // GPIO38
-		"SCL0", // GPIO39
-		"-", // GPIO40
-		"-", // GPIO41
-		"USB_VBUS_EN", // GPIO42
-		"USB_OC_N", // GPIO43
-		"RP1_STAT_LED", // GPIO44
-		"FAN_PWM", // GPIO45
-		"-", // GPIO46
-		"2712_WAKE", // GPIO47
-		"-", // GPIO48
-		"-", // GPIO49
-		"-", // GPIO50
-		"-", // GPIO51
-		"-", // GPIO52
-		"-"; // GPIO53
-
-	usb_vbus_pins: usb_vbus_pins {
-		function = "vbus1";
-		pins = "gpio42", "gpio43";
-	};
-};
-
-/ {
-	aliases: aliases {
-		blconfig = &blconfig;
-		blpubkey = &blpubkey;
-		bluetooth = &bluetooth;
-		console = &uart10;
-		ethernet0 = &rp1_eth;
-		wifi0 = &wifi;
-		fb = &fb;
-		mailbox = &mailbox;
-		mmc0 = &sdio1;
-		uart0 = &uart0;
-		uart1 = &uart1;
-		uart2 = &uart2;
-		uart3 = &uart3;
-		uart4 = &uart4;
-		uart10 = &uart10;
-		serial0 = &uart0;
-		serial1 = &uart1;
-		serial2 = &uart2;
-		serial3 = &uart3;
-		serial4 = &uart4;
-		serial10 = &uart10;
-		i2c = &i2c_arm;
-		i2c0 = &i2c0;
-		i2c1 = &i2c1;
-		i2c2 = &i2c2;
-		i2c3 = &i2c3;
-		i2c4 = &i2c4;
-		i2c5 = &i2c5;
-		i2c6 = &i2c6;
-		i2c10 = &i2c_rp1boot;
-		// Bit-bashed i2c_gpios start at 10
-		spi0 = &spi0;
-		spi1 = &spi1;
-		spi2 = &spi2;
-		spi3 = &spi3;
-		spi4 = &spi4;
-		spi5 = &spi5;
-		spi10 = &spi10;
-		gpio0 = &gpio;
-		gpio1 = &gio;
-		gpio2 = &gio_aon;
-		gpio3 = &pinctrl;
-		gpio4 = &pinctrl_aon;
-		usb0 = &rp1_usb0;
-		usb1 = &rp1_usb1;
-		drm-dsi1 = &dsi0;
-		drm-dsi2 = &dsi1;
-	};
-
-	__overrides__ {
-		bdaddr = <&bluetooth>, "local-bd-address[";
-		button_debounce = <&pwr_key>, "debounce-interval:0";
-		cooling_fan = <&fan>, "status", <&rp1_pwm1>, "status";
-		uart0_console = <&uart0>,"status", <&aliases>, "console=",&uart0;
-		i2c0 = <&i2c0>, "status";
-		i2c1 = <&i2c1>, "status";
-		i2c = <&i2c1>, "status";
-		i2c_arm = <&i2c_arm>, "status";
-		i2c_vc = <&i2c_vc>, "status";
-		i2c_csi_dsi = <&i2c_csi_dsi>, "status";
-		i2c_csi_dsi0 = <&i2c_csi_dsi0>, "status";
-		i2c_csi_dsi1 = <&i2c_csi_dsi1>, "status";
-		i2c0_baudrate = <&i2c0>, "clock-frequency:0";
-		i2c1_baudrate = <&i2c1>, "clock-frequency:0";
-		i2c_baudrate = <&i2c_arm>, "clock-frequency:0";
-		i2c_arm_baudrate = <&i2c_arm>, "clock-frequency:0";
-		i2c_vc_baudrate = <&i2c_vc>, "clock-frequency:0";
-		krnbt = <&bluetooth>, "status";
-		nvme = <&pciex1>, "status";
-		pciex1 = <&pciex1>, "status";
-		pciex1_gen = <&pciex1> , "max-link-speed:0";
-		pciex1_no_l0s = <&pciex1>, "aspm-no-l0s?";
-		pciex1_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0";
-		pcie_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0";
-		random = <&random>, "status";
-		rtc = <&rpi_rtc>, "status";
-		rtc_bbat_vchg = <&rpi_rtc>, "trickle-charge-microvolt:0";
-		spi = <&spi0>, "status";
-		suspend = <&pwr_key>, "linux,code:0=205";
-		uart0 = <&uart0>, "status";
-		wifiaddr = <&wifi>, "local-mac-address[";
-
-		act_led_activelow = <&led_act>, "active-low?";
-		act_led_trigger = <&led_act>, "linux,default-trigger";
-		pwr_led_activelow = <&led_pwr>, "gpios:8";
-		pwr_led_trigger = <&led_pwr>, "linux,default-trigger";
-		eth_led0 = <&phy1>,"led-modes:0";
-		eth_led1 = <&phy1>,"led-modes:4";
-		drm_fb0_rp1_dsi0 = <&aliases>, "drm-fb0=",&dsi0;
-		drm_fb0_rp1_dsi1 = <&aliases>, "drm-fb0=",&dsi1;
-		drm_fb0_rp1_dpi = <&aliases>, "drm-fb0=",&dpi;
-		drm_fb0_vc4 = <&aliases>, "drm-fb0=",&vc4;
-		drm_fb1_rp1_dsi0 = <&aliases>, "drm-fb1=",&dsi0;
-		drm_fb1_rp1_dsi1 = <&aliases>, "drm-fb1=",&dsi1;
-		drm_fb1_rp1_dpi = <&aliases>, "drm-fb1=",&dpi;
-		drm_fb1_vc4 = <&aliases>, "drm-fb1=",&vc4;
-		drm_fb2_rp1_dsi0 = <&aliases>, "drm-fb2=",&dsi0;
-		drm_fb2_rp1_dsi1 = <&aliases>, "drm-fb2=",&dsi1;
-		drm_fb2_rp1_dpi = <&aliases>, "drm-fb2=",&dpi;
-		drm_fb2_vc4 = <&aliases>, "drm-fb2=",&vc4;
-
-		ant1 =  <&ant1>,"output-high?=on",
-			<&ant1>, "output-low?=off",
-			<&ant2>, "output-high?=off",
-			<&ant2>, "output-low?=on";
-		ant2 =  <&ant1>,"output-high?=off",
-			<&ant1>, "output-low?=on",
-			<&ant2>, "output-high?=on",
-			<&ant2>, "output-low?=off";
-		noant = <&ant1>,"output-high?=off",
-			<&ant1>, "output-low?=on",
-			<&ant2>, "output-high?=off",
-			<&ant2>, "output-low?=on";
-
-		fan_temp0 = <&cpu_tepid>,"temperature:0";
-		fan_temp1 = <&cpu_warm>,"temperature:0";
-		fan_temp2 = <&cpu_hot>,"temperature:0";
-		fan_temp3 = <&cpu_vhot>,"temperature:0";
-		fan_temp0_hyst = <&cpu_tepid>,"hysteresis:0";
-		fan_temp1_hyst = <&cpu_warm>,"hysteresis:0";
-		fan_temp2_hyst = <&cpu_hot>,"hysteresis:0";
-		fan_temp3_hyst = <&cpu_vhot>,"hysteresis:0";
-		fan_temp0_speed = <&fan>, "cooling-levels:4";
-		fan_temp1_speed = <&fan>, "cooling-levels:8";
-		fan_temp2_speed = <&fan>, "cooling-levels:12";
-		fan_temp3_speed = <&fan>, "cooling-levels:16";
-	};
-};
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
@@ -0,0 +1,884 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/rp1.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/mfd/rp1.h>
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
+
+#define i2c0 _i2c0
+#define i2c3 _i2c3
+#define i2c4 _i2c4
+#define i2c5 _i2c5
+#define i2c6 _i2c6
+#define i2c8 _i2c8
+#define i2s _i2s
+#define pwm0 _pwm0
+#define pwm1 _pwm1
+#define spi0 _spi0
+#define spi3 _spi3
+#define spi4 _spi4
+#define spi5 _spi5
+#define spi6 _spi6
+#define uart0 _uart0
+#define uart2 _uart2
+#define uart5 _uart5
+
+#include "bcm2712.dtsi"
+
+#undef i2c0
+#undef i2c3
+#undef i2c4
+#undef i2c5
+#undef i2c6
+#undef i2c8
+#undef i2s
+#undef pwm0
+#undef pwm1
+#undef spi0
+#undef spi3
+#undef spi4
+#undef spi5
+#undef spi6
+#undef uart0
+#undef uart2
+#undef uart3
+#undef uart4
+#undef uart5
+
+/ {
+	compatible = "raspberrypi,5-compute-module", "brcm,bcm2712";
+	model = "Raspberry Pi Compute Module 5";
+
+	/* Will be filled by the bootloader */
+	memory@0 {
+		device_type = "memory";
+		reg = <0 0 0x28000000>;
+	};
+
+	leds: leds {
+		compatible = "gpio-leds";
+
+		led_pwr: led-pwr {
+			label = "PWR";
+			gpios = <&rp1_gpio 44 GPIO_ACTIVE_LOW>;
+			default-state = "off";
+			linux,default-trigger = "none";
+		};
+
+		led_act: led-act {
+			label = "ACT";
+			gpios = <&gio_aon 9 GPIO_ACTIVE_LOW>;
+			default-state = "off";
+			linux,default-trigger = "mmc0";
+		};
+	};
+
+	sd_io_1v8_reg: sd_io_1v8_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "vdd-sd-io";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-always-on;
+	};
+
+	sd_vcc_reg: sd_vcc_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc-sd";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+		enable-active-high;
+		gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
+		status = "okay";
+	};
+
+	wl_on_reg: wl_on_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "wl-on-regulator";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		pinctrl-0 = <&wl_on_pins>;
+		pinctrl-names = "default";
+
+		gpio = <&gio 28 GPIO_ACTIVE_HIGH>;
+
+		startup-delay-us = <150000>;
+		enable-active-high;
+	};
+
+	clocks: clocks {
+	};
+
+	cam1_clk: cam1_clk {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		status = "disabled";
+	};
+
+	cam0_clk: cam0_clk {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		status = "disabled";
+	};
+
+	cam0_reg: cam0_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "cam0_reg";
+		enable-active-high;
+		status = "okay";
+		gpio = <&rp1_gpio 34 0>; // CD0_IO0_MICCLK, to CAM_GPIO on connector
+	};
+
+	cam_dummy_reg: cam_dummy_reg {
+		compatible = "regulator-fixed";
+		regulator-name = "cam-dummy-reg";
+		status = "okay";
+	};
+
+	dummy: dummy {
+		// A target for unwanted overlay fragments
+	};
+
+
+	// A few extra labels to keep overlays happy
+
+	i2c0if: i2c0if {};
+	i2c0mux: i2c0mux {};
+};
+
+rp1_target: &pcie2 {
+	brcm,enable-mps-rcb;
+	brcm,vdm-qos-map = <0xbbaa9888>;
+	aspm-no-l0s;
+	status = "okay";
+};
+
+// Add some labels to 2712 device
+
+// The system UART
+uart10: &_uart0 { status = "okay"; };
+
+// The system SPI for the bootloader EEPROM
+spi10: &_spi0 { status = "okay"; };
+
+i2c_rp1boot: &_i2c3 { };
+
+#include "rp1.dtsi"
+
+&rp1 {
+	// PCIe address space layout:
+	// 00_00000000-00_00xxxxxx = RP1 peripherals
+	// 10_00000000-1x_xxxxxxxx = up to 64GB system RAM
+
+	// outbound access aimed at PCIe 0_00xxxxxx -> RP1 c0_40xxxxxx
+	// This is the RP1 peripheral space
+	ranges = <0xc0 0x40000000
+		  0x02000000 0x00 0x00000000
+		  0x00 0x00400000>;
+
+	dma-ranges =
+	// inbound RP1 1x_xxxxxxxx -> PCIe 1x_xxxxxxxx
+		     <0x10 0x00000000
+		      0x43000000 0x10 0x00000000
+		      0x10 0x00000000>,
+
+	// inbound RP1 c0_40xxxxxx -> PCIe 00_00xxxxxx
+	// This allows the RP1 DMA controller to address RP1 hardware
+		     <0xc0 0x40000000
+		      0x02000000 0x0 0x00000000
+		      0x0 0x00400000>,
+
+	// inbound RP1 0x_xxxxxxxx -> PCIe 1x_xxxxxxxx
+		     <0x00 0x00000000
+		      0x02000000 0x10 0x00000000
+		      0x10 0x00000000>;
+};
+
+// Expose RP1 nodes as system nodes with labels
+
+&rp1_dma  {
+	status = "okay";
+};
+
+&rp1_eth {
+	status = "okay";
+	phy-handle = <&phy1>;
+	phy-reset-gpios = <&rp1_gpio 32 GPIO_ACTIVE_LOW>;
+	phy-reset-duration = <5>;
+
+	phy1: ethernet-phy@1 {
+		reg = <0x1>;
+		brcm,powerdown-enable;
+		interrupt-parent = <&gpio>;
+		interrupts = <37 IRQ_TYPE_LEVEL_LOW>;
+	};
+};
+
+gpio: &rp1_gpio {
+	status = "okay";
+};
+
+aux: &dummy {};
+
+&rp1_usb0 {
+	pinctrl-0 = <&usb_vbus_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&rp1_usb1 {
+	status = "okay";
+};
+
+#include "bcm2712-rpi.dtsi"
+
+i2c_csi_dsi0: &i2c6 { // Note: This is for MIPI0 connector only
+	pinctrl-0 = <&rp1_i2c6_38_39>;
+	pinctrl-names = "default";
+	clock-frequency = <100000>;
+};
+
+i2c_csi_dsi1: &i2c0 { // Note: This is for MIPI1 connector
+};
+
+i2c_csi_dsi: &i2c_csi_dsi1 { }; // An alias for compatibility
+
+cam1_reg: &cam0_reg { // Shares CAM_GPIO with cam0_reg
+};
+
+csi0: &rp1_csi0 { };
+csi1: &rp1_csi1 { };
+dsi0: &rp1_dsi0 { };
+dsi1: &rp1_dsi1 { };
+dpi: &rp1_dpi { };
+vec: &rp1_vec { };
+dpi_gpio0:              &rp1_dpi_24bit_gpio0        { };
+dpi_gpio1:              &rp1_dpi_24bit_gpio2        { };
+dpi_18bit_cpadhi_gpio0: &rp1_dpi_18bit_cpadhi_gpio0 { };
+dpi_18bit_cpadhi_gpio2: &rp1_dpi_18bit_cpadhi_gpio2 { };
+dpi_18bit_gpio0:        &rp1_dpi_18bit_gpio0        { };
+dpi_18bit_gpio2:        &rp1_dpi_18bit_gpio2        { };
+dpi_16bit_cpadhi_gpio0: &rp1_dpi_16bit_cpadhi_gpio0 { };
+dpi_16bit_cpadhi_gpio2: &rp1_dpi_16bit_cpadhi_gpio2 { };
+dpi_16bit_gpio0:        &rp1_dpi_16bit_gpio0        { };
+dpi_16bit_gpio2:        &rp1_dpi_16bit_gpio2        { };
+
+/* Add the IOMMUs for some RP1 bus masters */
+
+&csi0 {
+	iommus = <&iommu5>;
+};
+
+&csi1 {
+	iommus = <&iommu5>;
+};
+
+&dsi0 {
+	iommus = <&iommu5>;
+};
+
+&dsi1 {
+	iommus = <&iommu5>;
+};
+
+&dpi {
+	iommus = <&iommu5>;
+};
+
+&vec {
+	iommus = <&iommu5>;
+};
+
+&ddc0 {
+	status = "disabled";
+};
+
+&ddc1 {
+	status = "disabled";
+};
+
+&hdmi0 {
+	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
+	clock-names = "hdmi", "bvb", "audio", "cec";
+	status = "disabled";
+};
+
+&hdmi1 {
+	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
+	clock-names = "hdmi", "bvb", "audio", "cec";
+	status = "disabled";
+};
+
+&hvs {
+	clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
+	clock-names = "core", "disp";
+};
+
+&mop {
+	status = "disabled";
+};
+
+&moplet {
+	status = "disabled";
+};
+
+&pixelvalve0 {
+	status = "disabled";
+};
+
+&pixelvalve1 {
+	status = "disabled";
+};
+
+&disp_intr {
+	status = "disabled";
+};
+
+/* SDIO1 is used to drive the eMMC/SD card */
+&sdio1 {
+	pinctrl-0 = <&emmc_cmddat_pulls>, <&emmc_ds_pull>;
+	pinctrl-names = "default";
+	vqmmc-supply = <&sd_io_1v8_reg>;
+	vmmc-supply = <&sd_vcc_reg>;
+	bus-width = <8>;
+	sd-uhs-sdr50;
+	sd-uhs-ddr50;
+	sd-uhs-sdr104;
+	mmc-hs200-1_8v;
+	mmc-hs400-1_8v;
+	mmc-hs400-enhanced-strobe;
+	broken-cd;
+	supports-cqe;
+	status = "okay";
+};
+
+&pinctrl_aon {
+	ant_pins: ant_pins {
+		function = "gpio";
+		pins = "aon_gpio5", "aon_gpio6";
+	};
+
+	/* Slight hack - only one PWM pin (status LED) is usable */
+	aon_pwm_1pin: aon_pwm_1pin {
+		function = "aon_pwm";
+		pins = "aon_gpio9";
+	};
+};
+
+&pinctrl {
+	pwr_button_pins: pwr_button_pins {
+		function = "gpio";
+		pins = "gpio20";
+		bias-pull-up;
+	};
+
+	wl_on_pins: wl_on_pins {
+		function = "gpio";
+		pins = "gpio28";
+	};
+
+	bt_shutdown_pins: bt_shutdown_pins {
+		function = "gpio";
+		pins = "gpio29";
+	};
+
+	emmc_ds_pull: emmc_ds_pull {
+		pins = "emmc_ds";
+		bias-pull-down;
+	};
+
+	emmc_cmddat_pulls: emmc_cmddat_pulls {
+		pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3",
+		       "emmc_dat4", "emmc_dat5", "emmc_dat6", "emmc_dat7";
+		bias-pull-up;
+	};
+};
+
+/* uarta communicates with the BT module */
+&uarta {
+	uart-has-rtscts;
+	auto-flow-control;
+	status = "okay";
+	clock-frequency = <96000000>;
+	pinctrl-0 = <&uarta_24_pins &bt_shutdown_pins>;
+	pinctrl-names = "default";
+
+	bluetooth: bluetooth {
+		compatible = "brcm,bcm43438-bt";
+		max-speed = <3000000>;
+		shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
+		local-bd-address = [ 00 00 00 00 00 00 ];
+	};
+};
+
+&i2c_rp1boot {
+	clock-frequency = <400000>;
+	pinctrl-0 = <&i2c3_m4_agpio0_pins>;
+	pinctrl-names = "default";
+};
+
+/ {
+	chosen: chosen {
+		bootargs = "reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe";
+		stdout-path = "serial10:115200n8";
+	};
+
+	fan: cooling_fan {
+		status = "disabled";
+		compatible = "pwm-fan";
+		#cooling-cells = <2>;
+		cooling-min-state = <0>;
+		cooling-max-state = <3>;
+		cooling-levels = <0 75 125 175 250>;
+		pwms = <&rp1_pwm1 3 41566 PWM_POLARITY_INVERTED>;
+		rpm-regmap = <&rp1_pwm1>;
+		rpm-offset = <0x3c>;
+	};
+
+	pwr_button {
+		compatible = "gpio-keys";
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&pwr_button_pins>;
+		status = "okay";
+
+		pwr_key: pwr {
+			label = "pwr_button";
+			// linux,code = <205>; // KEY_SUSPEND
+			linux,code = <116>; // KEY_POWER
+			gpios = <&gio 20 GPIO_ACTIVE_LOW>;
+			debounce-interval = <50>; // ms
+		};
+	};
+};
+
+&usb {
+	power-domains = <&power RPI_POWER_DOMAIN_USB>;
+};
+
+/* SDIO2 drives the WLAN interface */
+&sdio2 {
+	pinctrl-0 = <&sdio2_30_pins>, <&ant_pins>;
+	pinctrl-names = "default";
+	bus-width = <4>;
+	vmmc-supply = <&wl_on_reg>;
+	sd-uhs-ddr50;
+	non-removable;
+	status = "okay";
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	wifi: wifi@1 {
+		reg = <1>;
+		compatible = "brcm,bcm4329-fmac";
+		local-mac-address = [00 00 00 00 00 00];
+	};
+};
+
+&rpivid {
+	status = "okay";
+};
+
+&pinctrl {
+	spi10_gpio2: spi10_gpio2 {
+		function = "vc_spi0";
+		pins = "gpio2", "gpio3", "gpio4";
+		bias-disable;
+	};
+
+	spi10_cs_gpio1: spi10_cs_gpio1 {
+		function = "gpio";
+		pins = "gpio1";
+		bias-pull-up;
+	};
+};
+
+spi10_pins: &spi10_gpio2 {};
+spi10_cs_pins: &spi10_cs_gpio1 {};
+
+&spi10 {
+	pinctrl-names = "default";
+	cs-gpios = <&gio 1 1>;
+	pinctrl-0 = <&spi10_pins &spi10_cs_pins>;
+
+	spidev10: spidev@0 {
+		compatible = "spidev";
+		reg = <0>;	/* CE0 */
+		#address-cells = <1>;
+		#size-cells = <0>;
+		spi-max-frequency = <20000000>;
+		status = "okay";
+	};
+};
+
+// =============================================
+// Board specific stuff here
+
+&gio_aon {
+	// Don't use GIO_AON as an interrupt controller because it will
+	// clash with the firmware monitoring the PMIC interrupt via the VPU.
+
+	/delete-property/ interrupt-controller;
+};
+
+&main_aon_irq {
+	// Don't use the MAIN_AON_IRQ interrupt controller because it will
+	// clash with the firmware monitoring the PMIC interrupt via the VPU.
+
+	status = "disabled";
+};
+
+&rp1_pwm1 {
+	status = "disabled";
+	pinctrl-0 = <&rp1_pwm1_gpio45>;
+	pinctrl-names = "default";
+};
+
+&thermal_trips {
+	cpu_tepid: cpu-tepid {
+		temperature = <50000>;
+		hysteresis = <5000>;
+		type = "active";
+	};
+
+	cpu_warm: cpu-warm {
+		temperature = <60000>;
+		hysteresis = <5000>;
+		type = "active";
+	};
+
+	cpu_hot: cpu-hot {
+		temperature = <67500>;
+		hysteresis = <5000>;
+		type = "active";
+	};
+
+	cpu_vhot: cpu-vhot {
+		temperature = <75000>;
+		hysteresis = <5000>;
+		type = "active";
+	};
+};
+
+&cooling_maps {
+	tepid {
+		trip = <&cpu_tepid>;
+		cooling-device = <&fan 1 1>;
+	};
+
+	warm {
+		trip = <&cpu_warm>;
+		cooling-device = <&fan 2 2>;
+	};
+
+	hot {
+		trip = <&cpu_hot>;
+		cooling-device = <&fan 3 3>;
+	};
+
+	vhot {
+		trip = <&cpu_vhot>;
+		cooling-device = <&fan 4 4>;
+	};
+
+	melt {
+		trip = <&cpu_crit>;
+		cooling-device = <&fan 4 4>;
+	};
+};
+
+&gio {
+	// The GPIOs above 35 are not used on Pi 5, so shrink the upper bank
+	// to reduce the clutter in gpioinfo/pinctrl
+	brcm,gpio-bank-widths = <32 4>;
+
+	gpio-line-names =
+		"-", // GPIO_000
+		"2712_BOOT_CS_N", // GPIO_001
+		"2712_BOOT_MISO", // GPIO_002
+		"2712_BOOT_MOSI", // GPIO_003
+		"2712_BOOT_SCLK", // GPIO_004
+		"-", // GPIO_005
+		"-", // GPIO_006
+		"-", // GPIO_007
+		"-", // GPIO_008
+		"-", // GPIO_009
+		"-", // GPIO_010
+		"-", // GPIO_011
+		"-", // GPIO_012
+		"-", // GPIO_013
+		"-", // GPIO_014
+		"-", // GPIO_015
+		"-", // GPIO_016
+		"-", // GPIO_017
+		"-", // GPIO_018
+		"-", // GPIO_019
+		"PWR_GPIO", // GPIO_020
+		"2712_G21_FS", // GPIO_021
+		"-", // GPIO_022
+		"-", // GPIO_023
+		"BT_RTS", // GPIO_024
+		"BT_CTS", // GPIO_025
+		"BT_TXD", // GPIO_026
+		"BT_RXD", // GPIO_027
+		"WL_ON", // GPIO_028
+		"BT_ON", // GPIO_029
+		"WIFI_SDIO_CLK", // GPIO_030
+		"WIFI_SDIO_CMD", // GPIO_031
+		"WIFI_SDIO_D0", // GPIO_032
+		"WIFI_SDIO_D1", // GPIO_033
+		"WIFI_SDIO_D2", // GPIO_034
+		"WIFI_SDIO_D3"; // GPIO_035
+};
+
+&gio_aon {
+	gpio-line-names =
+		"RP1_SDA", // AON_GPIO_00
+		"RP1_SCL", // AON_GPIO_01
+		"RP1_RUN", // AON_GPIO_02
+		"SD_IOVDD_SEL", // AON_GPIO_03
+		"SD_PWR_ON", // AON_GPIO_04
+		"ANT1", // AON_GPIO_05
+		"ANT2", // AON_GPIO_06
+		"-", // AON_GPIO_07
+		"2712_WAKE", // AON_GPIO_08
+		"2712_STAT_LED", // AON_GPIO_09
+		"-", // AON_GPIO_10
+		"-", // AON_GPIO_11
+		"PMIC_INT", // AON_GPIO_12
+		"UART_TX_FS", // AON_GPIO_13
+		"UART_RX_FS", // AON_GPIO_14
+		"-", // AON_GPIO_15
+		"-", // AON_GPIO_16
+
+		// Pad bank0 out to 32 entries
+		"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+
+		"HDMI0_SCL", // AON_SGPIO_00
+		"HDMI0_SDA", // AON_SGPIO_01
+		"HDMI1_SCL", // AON_SGPIO_02
+		"HDMI1_SDA", // AON_SGPIO_03
+		"PMIC_SCL", // AON_SGPIO_04
+		"PMIC_SDA"; // AON_SGPIO_05
+
+	rp1_run_hog {
+		gpio-hog;
+		gpios = <2 GPIO_ACTIVE_HIGH>;
+		output-high;
+		line-name = "RP1 RUN pin";
+	};
+
+	ant1: ant1-hog {
+		gpio-hog;
+		gpios = <5 GPIO_ACTIVE_HIGH>;
+		/* internal antenna enabled */
+		output-high;
+		line-name = "ant1";
+	};
+
+	ant2: ant2-hog {
+		gpio-hog;
+		gpios = <6 GPIO_ACTIVE_HIGH>;
+		/* external antenna disabled */
+		output-low;
+		line-name = "ant2";
+	};
+};
+
+&rp1_gpio {
+	gpio-line-names =
+		"ID_SDA", // GPIO0
+		"ID_SCL", // GPIO1
+		"GPIO2", // GPIO2
+		"GPIO3", // GPIO3
+		"GPIO4", // GPIO4
+		"GPIO5", // GPIO5
+		"GPIO6", // GPIO6
+		"GPIO7", // GPIO7
+		"GPIO8", // GPIO8
+		"GPIO9", // GPIO9
+		"GPIO10", // GPIO10
+		"GPIO11", // GPIO11
+		"GPIO12", // GPIO12
+		"GPIO13", // GPIO13
+		"GPIO14", // GPIO14
+		"GPIO15", // GPIO15
+		"GPIO16", // GPIO16
+		"GPIO17", // GPIO17
+		"GPIO18", // GPIO18
+		"GPIO19", // GPIO19
+		"GPIO20", // GPIO20
+		"GPIO21", // GPIO21
+		"GPIO22", // GPIO22
+		"GPIO23", // GPIO23
+		"GPIO24", // GPIO24
+		"GPIO25", // GPIO25
+		"GPIO26", // GPIO26
+		"GPIO27", // GPIO27
+
+		"PCIE_PWR_EN", // GPIO28
+		"FAN_TACH", // GPIO29
+		"HOST_SDA", // GPIO30
+		"HOST_SCL", // GPIO31
+		"ETH_RST_N", // GPIO32
+		"PCIE_DET_WAKE", // GPIO33
+
+		"CD0_IO0_MICCLK", // GPIO34
+		"CD0_IO0_MICDAT0", // GPIO35
+		"RP1_PCIE_CLKREQ_N", // GPIO36
+		"ETH_IRQ_N", // GPIO37
+		"SDA0", // GPIO38
+		"SCL0", // GPIO39
+		"-", // GPIO40
+		"-", // GPIO41
+		"USB_VBUS_EN", // GPIO42
+		"USB_OC_N", // GPIO43
+		"RP1_STAT_LED", // GPIO44
+		"FAN_PWM", // GPIO45
+		"-", // GPIO46
+		"2712_WAKE", // GPIO47
+		"-", // GPIO48
+		"-", // GPIO49
+		"-", // GPIO50
+		"-", // GPIO51
+		"-", // GPIO52
+		"-"; // GPIO53
+
+	usb_vbus_pins: usb_vbus_pins {
+		function = "vbus1";
+		pins = "gpio42", "gpio43";
+	};
+};
+
+/ {
+	aliases: aliases {
+		blconfig = &blconfig;
+		blpubkey = &blpubkey;
+		bluetooth = &bluetooth;
+		console = &uart10;
+		ethernet0 = &rp1_eth;
+		wifi0 = &wifi;
+		fb = &fb;
+		mailbox = &mailbox;
+		mmc0 = &sdio1;
+		uart0 = &uart0;
+		uart1 = &uart1;
+		uart2 = &uart2;
+		uart3 = &uart3;
+		uart4 = &uart4;
+		uart10 = &uart10;
+		serial0 = &uart0;
+		serial1 = &uart1;
+		serial2 = &uart2;
+		serial3 = &uart3;
+		serial4 = &uart4;
+		serial10 = &uart10;
+		i2c = &i2c_arm;
+		i2c0 = &i2c0;
+		i2c1 = &i2c1;
+		i2c2 = &i2c2;
+		i2c3 = &i2c3;
+		i2c4 = &i2c4;
+		i2c5 = &i2c5;
+		i2c6 = &i2c6;
+		i2c10 = &i2c_rp1boot;
+		// Bit-bashed i2c_gpios start at 10
+		spi0 = &spi0;
+		spi1 = &spi1;
+		spi2 = &spi2;
+		spi3 = &spi3;
+		spi4 = &spi4;
+		spi5 = &spi5;
+		spi10 = &spi10;
+		gpio0 = &gpio;
+		gpio1 = &gio;
+		gpio2 = &gio_aon;
+		gpio3 = &pinctrl;
+		gpio4 = &pinctrl_aon;
+		usb0 = &rp1_usb0;
+		usb1 = &rp1_usb1;
+		drm-dsi1 = &dsi0;
+		drm-dsi2 = &dsi1;
+	};
+
+	__overrides__ {
+		bdaddr = <&bluetooth>, "local-bd-address[";
+		button_debounce = <&pwr_key>, "debounce-interval:0";
+		cooling_fan = <&fan>, "status", <&rp1_pwm1>, "status";
+		uart0_console = <&uart0>,"status", <&aliases>, "console=",&uart0;
+		i2c0 = <&i2c0>, "status";
+		i2c1 = <&i2c1>, "status";
+		i2c = <&i2c1>, "status";
+		i2c_arm = <&i2c_arm>, "status";
+		i2c_vc = <&i2c_vc>, "status";
+		i2c_csi_dsi = <&i2c_csi_dsi>, "status";
+		i2c_csi_dsi0 = <&i2c_csi_dsi0>, "status";
+		i2c_csi_dsi1 = <&i2c_csi_dsi1>, "status";
+		i2c0_baudrate = <&i2c0>, "clock-frequency:0";
+		i2c1_baudrate = <&i2c1>, "clock-frequency:0";
+		i2c_baudrate = <&i2c_arm>, "clock-frequency:0";
+		i2c_arm_baudrate = <&i2c_arm>, "clock-frequency:0";
+		i2c_vc_baudrate = <&i2c_vc>, "clock-frequency:0";
+		krnbt = <&bluetooth>, "status";
+		nvme = <&pciex1>, "status";
+		pciex1 = <&pciex1>, "status";
+		pciex1_gen = <&pciex1> , "max-link-speed:0";
+		pciex1_no_l0s = <&pciex1>, "aspm-no-l0s?";
+		pciex1_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0";
+		pcie_tperst_clk_ms = <&pciex1>, "brcm,tperst-clk-ms:0";
+		random = <&random>, "status";
+		rtc = <&rpi_rtc>, "status";
+		rtc_bbat_vchg = <&rpi_rtc>, "trickle-charge-microvolt:0";
+		spi = <&spi0>, "status";
+		suspend = <&pwr_key>, "linux,code:0=205";
+		uart0 = <&uart0>, "status";
+		wifiaddr = <&wifi>, "local-mac-address[";
+
+		act_led_activelow = <&led_act>, "active-low?";
+		act_led_trigger = <&led_act>, "linux,default-trigger";
+		pwr_led_activelow = <&led_pwr>, "gpios:8";
+		pwr_led_trigger = <&led_pwr>, "linux,default-trigger";
+		eth_led0 = <&phy1>,"led-modes:0";
+		eth_led1 = <&phy1>,"led-modes:4";
+		drm_fb0_rp1_dsi0 = <&aliases>, "drm-fb0=",&dsi0;
+		drm_fb0_rp1_dsi1 = <&aliases>, "drm-fb0=",&dsi1;
+		drm_fb0_rp1_dpi = <&aliases>, "drm-fb0=",&dpi;
+		drm_fb0_vc4 = <&aliases>, "drm-fb0=",&vc4;
+		drm_fb1_rp1_dsi0 = <&aliases>, "drm-fb1=",&dsi0;
+		drm_fb1_rp1_dsi1 = <&aliases>, "drm-fb1=",&dsi1;
+		drm_fb1_rp1_dpi = <&aliases>, "drm-fb1=",&dpi;
+		drm_fb1_vc4 = <&aliases>, "drm-fb1=",&vc4;
+		drm_fb2_rp1_dsi0 = <&aliases>, "drm-fb2=",&dsi0;
+		drm_fb2_rp1_dsi1 = <&aliases>, "drm-fb2=",&dsi1;
+		drm_fb2_rp1_dpi = <&aliases>, "drm-fb2=",&dpi;
+		drm_fb2_vc4 = <&aliases>, "drm-fb2=",&vc4;
+
+		ant1 =  <&ant1>,"output-high?=on",
+			<&ant1>, "output-low?=off",
+			<&ant2>, "output-high?=off",
+			<&ant2>, "output-low?=on";
+		ant2 =  <&ant1>,"output-high?=off",
+			<&ant1>, "output-low?=on",
+			<&ant2>, "output-high?=on",
+			<&ant2>, "output-low?=off";
+		noant = <&ant1>,"output-high?=off",
+			<&ant1>, "output-low?=on",
+			<&ant2>, "output-high?=off",
+			<&ant2>, "output-low?=on";
+
+		fan_temp0 = <&cpu_tepid>,"temperature:0";
+		fan_temp1 = <&cpu_warm>,"temperature:0";
+		fan_temp2 = <&cpu_hot>,"temperature:0";
+		fan_temp3 = <&cpu_vhot>,"temperature:0";
+		fan_temp0_hyst = <&cpu_tepid>,"hysteresis:0";
+		fan_temp1_hyst = <&cpu_warm>,"hysteresis:0";
+		fan_temp2_hyst = <&cpu_hot>,"hysteresis:0";
+		fan_temp3_hyst = <&cpu_vhot>,"hysteresis:0";
+		fan_temp0_speed = <&fan>, "cooling-levels:4";
+		fan_temp1_speed = <&fan>, "cooling-levels:8";
+		fan_temp2_speed = <&fan>, "cooling-levels:12";
+		fan_temp3_speed = <&fan>, "cooling-levels:16";
+	};
+};
--- a/arch/arm64/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts
@@ -1,2 +1,107 @@
 // SPDX-License-Identifier: GPL-2.0
-#include "../../../../arm/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts"
+#include "bcm2712-rpi-5-b.dts"
+
+&gio {
+	brcm,gpio-bank-widths = <32 4>;
+
+	gpio-line-names =
+		"", // GPIO_000
+		"2712_BOOT_CS_N", // GPIO_001
+		"2712_BOOT_MISO", // GPIO_002
+		"2712_BOOT_MOSI", // GPIO_003
+		"2712_BOOT_SCLK", // GPIO_004
+		"", // GPIO_005
+		"", // GPIO_006
+		"", // GPIO_007
+		"", // GPIO_008
+		"", // GPIO_009
+		"", // GPIO_010
+		"", // GPIO_011
+		"", // GPIO_012
+		"", // GPIO_013
+		"PCIE_SDA", // GPIO_014
+		"PCIE_SCL", // GPIO_015
+		"", // GPIO_016
+		"", // GPIO_017
+		"-", // GPIO_018
+		"-", // GPIO_019
+		"PWR_GPIO", // GPIO_020
+		"2712_G21_FS", // GPIO_021
+		"-", // GPIO_022
+		"-", // GPIO_023
+		"BT_RTS", // GPIO_024
+		"BT_CTS", // GPIO_025
+		"BT_TXD", // GPIO_026
+		"BT_RXD", // GPIO_027
+		"WL_ON", // GPIO_028
+		"BT_ON", // GPIO_029
+		"WIFI_SDIO_CLK", // GPIO_030
+		"WIFI_SDIO_CMD", // GPIO_031
+		"WIFI_SDIO_D0", // GPIO_032
+		"WIFI_SDIO_D1", // GPIO_033
+		"WIFI_SDIO_D2", // GPIO_034
+		"WIFI_SDIO_D3"; // GPIO_035
+};
+
+&gio_aon {
+	brcm,gpio-bank-widths = <15 6>;
+
+	gpio-line-names =
+		"RP1_SDA", // AON_GPIO_00
+		"RP1_SCL", // AON_GPIO_01
+		"RP1_RUN", // AON_GPIO_02
+		"SD_IOVDD_SEL", // AON_GPIO_03
+		"SD_PWR_ON", // AON_GPIO_04
+		"SD_CDET_N", // AON_GPIO_05
+		"SD_FLG_N", // AON_GPIO_06
+		"", // AON_GPIO_07
+		"2712_WAKE", // AON_GPIO_08
+		"2712_STAT_LED", // AON_GPIO_09
+		"", // AON_GPIO_10
+		"", // AON_GPIO_11
+		"PMIC_INT", // AON_GPIO_12
+		"UART_TX_FS", // AON_GPIO_13
+		"UART_RX_FS", // AON_GPIO_14
+		"", // AON_GPIO_15
+		"", // AON_GPIO_16
+
+		// Pad bank0 out to 32 entries
+		"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+
+		"HDMI0_SCL", // AON_SGPIO_00
+		"HDMI0_SDA", // AON_SGPIO_01
+		"HDMI1_SCL", // AON_SGPIO_02
+		"HDMI1_SDA", // AON_SGPIO_03
+		"PMIC_SCL", // AON_SGPIO_04
+		"PMIC_SDA"; // AON_SGPIO_05
+};
+
+&pinctrl {
+	compatible = "brcm,bcm2712d0-pinctrl";
+	reg = <0x7d504100 0x20>;
+};
+
+&pinctrl_aon {
+	compatible = "brcm,bcm2712d0-aon-pinctrl";
+	reg = <0x7d510700 0x1c>;
+};
+
+&vc4 {
+	compatible = "brcm,bcm2712d0-vc6";
+};
+
+&uart10 {
+	interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&spi10 {
+	dmas = <&dma40 3>, <&dma40 4>;
+};
+
+&hdmi0 {
+	dmas = <&dma40 (12|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
+};
+
+&hdmi1 {
+	dmas = <&dma40 (13|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
+};
--- a/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi
+++ /dev/null
@@ -1,351 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-
-#include <dt-bindings/power/raspberrypi-power.h>
-
-&soc {
-	firmware: firmware {
-		compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
-		#address-cells = <1>;
-		#size-cells = <1>;
-
-		mboxes = <&mailbox>;
-		dma-ranges;
-
-		firmware_clocks: clocks {
-			compatible = "raspberrypi,firmware-clocks";
-			#clock-cells = <1>;
-		};
-
-		reset: reset {
-			compatible = "raspberrypi,firmware-reset";
-			#reset-cells = <1>;
-		};
-
-		vcio: vcio {
-			compatible = "raspberrypi,vcio";
-		};
-	};
-
-	power: power {
-		compatible = "raspberrypi,bcm2835-power";
-		firmware = <&firmware>;
-		#power-domain-cells = <1>;
-	};
-
-	fb: fb {
-		compatible = "brcm,bcm2708-fb";
-		firmware = <&firmware>;
-		status = "okay";
-	};
-
-	rpi_rtc: rpi_rtc {
-		compatible = "raspberrypi,rpi-rtc";
-		firmware = <&firmware>;
-		status = "okay";
-		trickle-charge-microvolt = <0>;
-	};
-
-	nvmem {
-		compatible = "simple-bus";
-		#address-cells = <1>;
-		#size-cells = <1>;
-
-		nvmem_otp: nvmem_otp {
-			compatible = "raspberrypi,rpi-otp";
-			firmware = <&firmware>;
-			reg = <0 192>;
-			status = "okay";
-		};
-
-		nvmem_cust: nvmem_cust {
-			compatible = "raspberrypi,rpi-otp";
-			firmware = <&firmware>;
-			reg = <1 8>;
-			status = "okay";
-		};
-
-		nvmem_mac: nvmem_mac {
-			compatible = "raspberrypi,rpi-otp";
-			firmware = <&firmware>;
-			reg = <2 6>;
-			status = "okay";
-		};
-
-		nvmem_priv: nvmem_priv {
-			compatible = "raspberrypi,rpi-otp";
-			firmware = <&firmware>;
-			reg = <3 16>;
-			status = "okay";
-		};
-	};
-
-	/* Define these notional regulators for use by overlays, etc. */
-	vdd_3v3_reg: fixedregulator_3v3 {
-		compatible = "regulator-fixed";
-		regulator-always-on;
-		regulator-max-microvolt = <3300000>;
-		regulator-min-microvolt = <3300000>;
-		regulator-name = "3v3";
-	};
-
-	vdd_5v0_reg: fixedregulator_5v0 {
-		compatible = "regulator-fixed";
-		regulator-always-on;
-		regulator-max-microvolt = <5000000>;
-		regulator-min-microvolt = <5000000>;
-		regulator-name = "5v0";
-	};
-};
-
-/ {
-	__overrides__ {
-		arm_freq;
-		axiperf = <&axiperf>,"status";
-
-		nvmem_cust_rw = <&nvmem_cust>,"rw?";
-		nvmem_priv_rw = <&nvmem_priv>,"rw?";
-		nvmem_mac_rw = <&nvmem_mac>,"rw?";
-		strict_gpiod = <&chosen>, "bootargs=pinctrl_rp1.persist_gpio_outputs=n";
-
-		cam0_reg = <&cam0_reg>,"status";
-		cam0_reg_gpio = <&cam0_reg>,"gpio:4",
-				<&cam0_reg>,"gpio:0=", <&gpio>;
-		cam1_reg = <&cam1_reg>,"status";
-		cam1_reg_gpio = <&cam1_reg>,"gpio:4",
-				<&cam1_reg>,"gpio:0=", <&gpio>;
-
-	};
-};
-
-pciex1: &pcie1 { };
-pciex4: &pcie2 { };
-
-&dma32 {
-	/* The VPU firmware uses DMA channel 11 for VCHIQ */
-	brcm,dma-channel-mask = <0x03f>;
-};
-
-&dma40 {
-	/* The VPU firmware DMA channel 11 for VCHIQ */
-	brcm,dma-channel-mask = <0x07c0>;
-};
-
-&hdmi0 {
-	dmas = <&dma40 (10|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
-};
-
-&hdmi1 {
-	dmas = <&dma40 (17|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
-};
-
-&spi10 {
-	dmas = <&dma40 6>, <&dma40 7>;
-	dma-names = "tx", "rx";
-};
-
-&usb {
-	power-domains = <&power RPI_POWER_DOMAIN_USB>;
-};
-
-&rmem {
-	/*
-	 * RPi5's co-processor will copy the board's bootloader configuration
-	 * into memory for the OS to consume. It'll also update this node with
-	 * its placement information.
-	 */
-	blconfig: nvram@0 {
-		compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
-		#address-cells = <1>;
-		#size-cells = <1>;
-		reg = <0x0 0x0 0x0>;
-		no-map;
-		status = "disabled";
-	};
-	/*
-	 * RPi5 will copy the binary public key blob (if present) from the bootloader
-	 * into memory for use by the OS.
-	 */
-	blpubkey: nvram@1 {
-		compatible = "raspberrypi,bootloader-public-key", "nvmem-rmem";
-		#address-cells = <1>;
-		#size-cells = <1>;
-		reg = <0x0 0x0 0x0>;
-		no-map;
-		status = "disabled";
-	};
-};
-
-&rp1_adc {
-	status = "okay";
-};
-
-/* Add some gpiomem nodes to make the devices accessible to userspace.
- * /dev/gpiomem<n> should expose the registers for the interface with DT alias
- * gpio<n>.
- */
-
-&rp1 {
-	gpiomem@d0000 {
-		/* Export IO_BANKs, RIO_BANKs and PADS_BANKs to userspace */
-		compatible = "raspberrypi,gpiomem";
-		reg = <0xc0 0x400d0000  0x0 0x30000>;
-		chardev-name = "gpiomem0";
-	};
-};
-
-&soc {
-	gpiomem@7d508500 {
-		compatible = "raspberrypi,gpiomem";
-		reg = <0x7d508500 0x40>;
-		chardev-name = "gpiomem1";
-	};
-
-	gpiomem@7d517c00 {
-		compatible = "raspberrypi,gpiomem";
-		reg = <0x7d517c00 0x40>;
-		chardev-name = "gpiomem2";
-	};
-
-	gpiomem@7d504100 {
-		compatible = "raspberrypi,gpiomem";
-		reg = <0x7d504100 0x20>;
-		chardev-name = "gpiomem3";
-	};
-
-	gpiomem@7d510700 {
-		compatible = "raspberrypi,gpiomem";
-		reg = <0x7d510700 0x20>;
-		chardev-name = "gpiomem4";
-	};
-
-	sound: sound {
-		status = "disabled";
-	};
-};
-
-i2c0: &rp1_i2c0 { };
-i2c1: &rp1_i2c1 { };
-i2c2: &rp1_i2c2 { };
-i2c3: &rp1_i2c3 { };
-i2c4: &rp1_i2c4 { };
-i2c5: &rp1_i2c5 { };
-i2c6: &rp1_i2c6 { };
-i2s:  &rp1_i2s0 { };
-i2s_clk_producer: &rp1_i2s0 { };
-i2s_clk_consumer: &rp1_i2s1 { };
-pwm0: &rp1_pwm0 { };
-pwm1: &rp1_pwm1 { };
-pwm: &pwm0 { };
-spi0: &rp1_spi0 { };
-spi1: &rp1_spi1 { };
-spi2: &rp1_spi2 { };
-spi3: &rp1_spi3 { };
-spi4: &rp1_spi4 { };
-spi5: &rp1_spi5 { };
-
-uart0_pins: &rp1_uart0_14_15 {};
-uart0_ctsrts_pins: &rp1_uart0_ctsrts_16_17 {};
-uart0: &rp1_uart0 {
-	pinctrl-0 = <&uart0_pins>;
-};
-
-uart1_pins: &rp1_uart1_0_1 {};
-uart1_ctsrts_pins: &rp1_uart1_ctsrts_2_3 {};
-uart1: &rp1_uart1 { };
-
-uart2_pins: &rp1_uart2_4_5 {};
-uart2_ctsrts_pins: &rp1_uart2_ctsrts_6_7 {};
-uart2: &rp1_uart2 { };
-
-uart3_pins: &rp1_uart3_8_9 {};
-uart3_ctsrts_pins: &rp1_uart3_ctsrts_10_11 {};
-uart3: &rp1_uart3 { };
-
-uart4_pins: &rp1_uart4_12_13 {};
-uart4_ctsrts_pins: &rp1_uart4_ctsrts_14_15 {};
-uart4: &rp1_uart4 { };
-
-i2c0_pins: &rp1_i2c0_0_1 {};
-i2c_vc: &i2c0 {      // This is pins 27,28 on the header (not MIPI)
-	pinctrl-0 = <&i2c0_pins>;
-	pinctrl-names = "default";
-	clock-frequency = <100000>;
-};
-
-i2c1_pins: &rp1_i2c1_2_3 {};
-i2c_arm: &i2c1 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c1_pins>;
-	clock-frequency = <100000>;
-};
-
-i2c2_pins: &rp1_i2c2_4_5 {};
-&i2c2 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c2_pins>;
-};
-
-i2c3_pins: &rp1_i2c3_6_7 {};
-&i2c3 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c3_pins>;
-};
-
-&i2s_clk_producer {
-	pinctrl-names = "default";
-	pinctrl-0 = <&rp1_i2s0_18_21>;
-};
-
-&i2s_clk_consumer {
-	pinctrl-names = "default";
-	pinctrl-0 = <&rp1_i2s1_18_21>;
-};
-
-spi0_pins: &rp1_spi0_gpio9 {};
-spi0_cs_pins: &rp1_spi0_cs_gpio7 {};
-
-&spi0 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
-	cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
-
-	spidev0: spidev@0 {
-		compatible = "spidev";
-		reg = <0>;	/* CE0 */
-		#address-cells = <1>;
-		#size-cells = <0>;
-		spi-max-frequency = <125000000>;
-	};
-
-	spidev1: spidev@1 {
-		compatible = "spidev";
-		reg = <1>;	/* CE1 */
-		#address-cells = <1>;
-		#size-cells = <0>;
-		spi-max-frequency = <125000000>;
-	};
-};
-
-spi2_pins: &rp1_spi2_gpio1 {};
-&spi2 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&spi2_pins>;
-};
-
-spi3_pins: &rp1_spi3_gpio5 {};
-&spi3 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&spi3_pins>;
-};
-
-spi4_pins: &rp1_spi4_gpio9 {};
-&spi4 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&spi4_pins>;
-};
-
-spi5_pins: &rp1_spi5_gpio13 {};
-&spi5 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&spi5_pins>;
-};
--- a/arch/arm/boot/dts/broadcom/bcm2712.dtsi
+++ /dev/null
@@ -1,1302 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/soc/bcm2835-pm.h>
-#include <dt-bindings/phy/phy.h>
-
-/ {
-	compatible = "brcm,bcm2712", "brcm,bcm2711";
-	model = "BCM2712";
-
-	#address-cells = <2>;
-	#size-cells = <1>;
-
-	interrupt-parent = <&gicv2>;
-
-	rmem: reserved-memory {
-		#address-cells = <2>;
-		#size-cells = <1>;
-		ranges;
-
-		atf@0 {
-			reg = <0x0 0x0 0x80000>;
-			no-map;
-		};
-
-		cma: linux,cma {
-			compatible = "shared-dma-pool";
-			size = <0x4000000>; /* 64MB */
-			reusable;
-			linux,cma-default;
-
-			/*
-			 * arm64 reserves the CMA by default somewhere in
-			 * ZONE_DMA32, that's not good enough for the BCM2711
-			 * as some devices can only address the lower 1G of
-			 * memory (ZONE_DMA).
-			 */
-			alloc-ranges = <0x0 0x00000000 0x40000000>;
-		};
-	};
-
-	thermal-zones {
-		cpu_thermal: cpu-thermal {
-			polling-delay-passive = <2000>;
-			polling-delay = <1000>;
-			coefficients = <(-550) 450000>;
-			thermal-sensors = <&thermal>;
-
-			thermal_trips: trips {
-				cpu_crit: cpu-crit {
-					temperature	= <110000>;
-					hysteresis	= <0>;
-					type		= "critical";
-				};
-			};
-
-			cooling_maps: cooling-maps {
-			};
-		};
-	};
-
-	clk_27MHz: clk-27M {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <27000000>;
-		clock-output-names = "27MHz-clock";
-	};
-
-	clk_108MHz: clk-108M {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <108000000>;
-		clock-output-names = "108MHz-clock";
-	};
-
-	hvs: hvs@107c580000 {
-		compatible = "brcm,bcm2712-hvs";
-		reg = <0x10 0x7c580000 0x1a000>;
-		interrupt-parent = <&disp_intr>;
-		interrupts = <2>, <9>, <16>;
-		interrupt-names = "ch0-eof", "ch1-eof", "ch2-eof";
-		//iommus = <&iommu4>;
-		status = "disabled";
-	};
-
-	soc: soc {
-		compatible = "simple-bus";
-		#address-cells = <1>;
-		#size-cells = <1>;
-
-		ranges     = <0x7c000000  0x10 0x7c000000  0x04000000>;
-		/* Emulate a contiguous 30-bit address range for DMA */
-		dma-ranges = <0xc0000000  0x00 0x00000000  0x40000000>,
-			     <0x7c000000  0x10 0x7c000000  0x04000000>;
-
-		system_timer: timer@7c003000 {
-			compatible = "brcm,bcm2835-system-timer";
-			reg = <0x7c003000 0x1000>;
-			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
-		     		     <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
-		     		     <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
-			clock-frequency = <1000000>;
-		};
-
-		firmwarekms: firmwarekms@7d503000 {
-			compatible = "raspberrypi,rpi-firmware-kms-2712";
-			/* SUN_L2 interrupt reg */
-			reg = <0x7d503000 0x18>;
-			interrupt-parent = <&cpu_l2_irq>;
-			interrupts = <19>;
-			brcm,firmware = <&firmware>;
-			status = "disabled";
-		};
-
-		axiperf: axiperf {
-			compatible = "brcm,bcm2712-axiperf";
-			reg = <0x7c012800 0x100>,
-				<0x7e000000 0x100>;
-			firmware = <&firmware>;
-			status = "disabled";
-		};
-
-		mailbox: mailbox@7c013880 {
-			compatible = "brcm,bcm2835-mbox";
-			reg = <0x7c013880 0x40>;
-			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
-			#mbox-cells = <0>;
-		};
-
-		pixelvalve0: pixelvalve@7c410000 {
-			compatible = "brcm,bcm2712-pixelvalve0";
-			reg = <0x7c410000 0x100>;
-			interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
-		pixelvalve1: pixelvalve@7c411000 {
-			compatible = "brcm,bcm2712-pixelvalve1";
-			reg = <0x7c411000 0x100>;
-			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
-		mop: mop@7c500000 {
-			compatible = "brcm,bcm2712-mop";
-			reg = <0x7c500000 0x28>;
-			interrupt-parent = <&disp_intr>;
-			interrupts = <1>;
-			status = "disabled";
-		};
-
-		moplet: moplet@7c501000 {
-			compatible = "brcm,bcm2712-moplet";
-			reg = <0x7c501000 0x20>;
-			interrupt-parent = <&disp_intr>;
-			interrupts = <0>;
-			status = "disabled";
-		};
-
-		disp_intr: interrupt-controller@7c502000 {
-			compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
-			reg = <0x7c502000 0x30>;
-			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-			status = "disabled";
-		};
-
-		dvp: clock@7c700000 {
-			compatible = "brcm,brcm2711-dvp";
-			reg = <0x7c700000 0x10>;
-			clocks = <&clk_108MHz>;
-			#clock-cells = <1>;
-			#reset-cells = <1>;
-		};
-
-		/*
-		 * This node is the provider for the enable-method for
-		 * bringing up secondary cores.
-		 */
-		local_intc: local_intc@7cd00000 {
-			compatible = "brcm,bcm2836-l1-intc";
-			reg = <0x7cd00000 0x100>;
-		};
-
-		uart0: serial@7d001000 {
-			compatible = "arm,pl011", "arm,primecell";
-			reg = <0x7d001000 0x200>;
-			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_uart>,
-				 <&clk_vpu>;
-			clock-names = "uartclk", "apb_pclk";
-			arm,primecell-periphid = <0x00241011>;
-			status = "disabled";
-		};
-
-		uart2: serial@7d001400 {
-			compatible = "arm,pl011", "arm,primecell";
-			reg = <0x7d001400 0x200>;
-			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_uart>,
-				 <&clk_vpu>;
-			clock-names = "uartclk", "apb_pclk";
-			arm,primecell-periphid = <0x00241011>;
-			status = "disabled";
-		};
-
-		uart5: serial@7d001a00 {
-			compatible = "arm,pl011", "arm,primecell";
-			reg = <0x7d001a00 0x200>;
-			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_uart>,
-				 <&clk_vpu>;
-			clock-names = "uartclk", "apb_pclk";
-			arm,primecell-periphid = <0x00241011>;
-			status = "disabled";
-		};
-
-		sdhost: mmc@7d002000 {
-			compatible = "brcm,bcm2835-sdhost";
-			reg = <0x7d002000 0x100>;
-			//interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			status = "disabled";
-		};
-
-		i2s: i2s@7d003000 {
-			compatible = "brcm,bcm2835-i2s";
-			reg = <0x7d003000 0x24>;
-			//clocks = <&cprman BCM2835_CLOCK_PCM>;
-			status = "disabled";
-		};
-
-		spi0: spi@7d004000 {
-			compatible = "brcm,bcm2835-spi";
-			reg = <0x7d004000 0x200>;
-			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			num-cs = <1>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi3: spi@7d004600 {
-			compatible = "brcm,bcm2835-spi";
-			reg = <0x7d004600 0x0200>;
-			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi4: spi@7d004800 {
-			compatible = "brcm,bcm2835-spi";
-			reg = <0x7d004800 0x0200>;
-			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi5: spi@7d004a00 {
-			compatible = "brcm,bcm2835-spi";
-			reg = <0x7d004a00 0x0200>;
-			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi6: spi@7d004c00 {
-			compatible = "brcm,bcm2835-spi";
-			reg = <0x7d004c00 0x0200>;
-			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c0: i2c@7d005000 {
-			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
-			reg = <0x7d005000 0x20>;
-			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c3: i2c@7d005600 {
-			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
-			reg = <0x7d005600 0x20>;
-			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c4: i2c@7d005800 {
-			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
-			reg = <0x7d005800 0x20>;
-			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c5: i2c@7d005a00 {
-			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
-			reg = <0x7d005a00 0x20>;
-			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c6: i2c@7d005c00 {
-			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
-			reg = <0x7d005c00 0x20>;
-			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c8: i2c@7d005e00 {
-			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
-			reg = <0x7d005e00 0x20>;
-			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_vpu>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		pwm0: pwm@7d00c000 {
-			compatible = "brcm,bcm2835-pwm";
-			reg = <0x7d00c000 0x28>;
-			assigned-clock-rates = <50000000>;
-			#pwm-cells = <3>;
-			status = "disabled";
-		};
-
-		pwm1: pwm@7d00c800 {
-			compatible = "brcm,bcm2835-pwm";
-			reg = <0x7d00c800 0x28>;
-			assigned-clock-rates = <50000000>;
-			#pwm-cells = <3>;
-			status = "disabled";
-		};
-
-		pm: watchdog@7d200000 {
-			compatible = "brcm,bcm2712-pm";
-			reg = <0x7d200000 0x308>;
-			reg-names = "pm";
-			#power-domain-cells = <1>;
-			#reset-cells = <1>;
-			//clocks = <&cprman BCM2835_CLOCK_V3D>,
-			//	 <&cprman BCM2835_CLOCK_PERI_IMAGE>,
-			//	 <&cprman BCM2835_CLOCK_H264>,
-			//	 <&cprman BCM2835_CLOCK_ISP>;
-			clock-names = "v3d", "peri_image", "h264", "isp";
-			system-power-controller;
-		};
-
-		cprman: cprman@7d202000 {
-			compatible = "brcm,bcm2711-cprman";
-			reg = <0x7d202000 0x2000>;
-			#clock-cells = <1>;
-
-			/* CPRMAN derives almost everything from the
-			 * platform's oscillator.  However, the DSI
-			 * pixel clocks come from the DSI analog PHY.
-			 */
-			clocks = <&clk_osc>;
-			status = "disabled";
-		};
-
-		random: rng@7d208000 {
-			compatible = "brcm,bcm2711-rng200";
-			reg = <0x7d208000 0x28>;
-			status = "okay";
-		};
-
-		cpu_l2_irq: intc@7d503000 {
-			compatible = "brcm,l2-intc";
-			reg = <0x7d503000 0x18>;
-			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-		};
-
-		pinctrl: pinctrl@7d504100 {
-			compatible = "brcm,bcm2712-pinctrl";
-			reg = <0x7d504100 0x30>;
-
-			uarta_24_pins: uarta_24_pins {
-				pin_rts {
-					function = "uart0";
-					pins = "gpio24";
-					bias-disable;
-				};
-				pin_cts {
-					function = "uart0";
-					pins = "gpio25";
-					bias-pull-up;
-				};
-				pin_txd {
-					function = "uart0";
-					pins = "gpio26";
-					bias-disable;
-				};
-				pin_rxd {
-					function = "uart0";
-					pins = "gpio27";
-					bias-pull-up;
-				};
-			};
-
-			sdio2_30_pins: sdio2_30_pins {
-				pin_clk {
-					function = "sd2";
-					pins = "gpio30";
-					bias-disable;
-				};
-				pin_cmd {
-					function = "sd2";
-					pins = "gpio31";
-					bias-pull-up;
-				};
-				pins_dat {
-					function = "sd2";
-					pins = "gpio32", "gpio33", "gpio34", "gpio35";
-					bias-pull-up;
-				};
-			};
-		};
-
-		ddc0: i2c@7d508200 {
-			compatible = "brcm,brcmstb-i2c";
-			reg = <0x7d508200 0x58>;
-			interrupt-parent = <&bsc_irq>;
-			interrupts = <1>;
-			clock-frequency = <97500>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		ddc1: i2c@7d508280 {
-			compatible = "brcm,brcmstb-i2c";
-			reg = <0x7d508280 0x58>;
-			interrupt-parent = <&bsc_irq>;
-			interrupts = <2>;
-			clock-frequency = <97500>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		bscd: i2c@7d508300 {
-			compatible = "brcm,brcmstb-i2c";
-			reg = <0x7d508300 0x58>;
-			interrupt-parent = <&bsc_irq>;
-			interrupts = <0>;
-			clock-frequency = <200000>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		bsc_irq: intc@7d508380 {
-			compatible = "brcm,bcm7271-l2-intc";
-			reg = <0x7d508380 0x10>;
-			interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-		};
-
-		main_irq: intc@7d508400 {
-			compatible = "brcm,bcm7271-l2-intc";
-			reg = <0x7d508400 0x10>;
-			interrupts = <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-		};
-
-		gio: gpio@7d508500 {
-			compatible = "brcm,brcmstb-gpio";
-			reg = <0x7d508500 0x40>;
-			interrupt-parent = <&main_irq>;
-			interrupts = <0>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			brcm,gpio-bank-widths = <32 22>;
-			brcm,gpio-direct;
-		};
-
-		uarta: serial@7d50c000 {
-			compatible = "brcm,bcm7271-uart";
-			reg = <0x7d50c000 0x20>;
-			reg-names = "uart";
-			reg-shift = <2>;
-			reg-io-width = <4>;
-			interrupts = <GIC_SPI 276 IRQ_TYPE_LEVEL_HIGH>;
-			skip-init;
-			status = "disabled";
-		};
-
-		uartb: serial@7d50d000 {
-			compatible = "brcm,bcm7271-uart";
-			reg = <0x7d50d000 0x20>;
-			reg-names = "uart";
-			reg-shift = <2>;
-			reg-io-width = <4>;
-			interrupts = <GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH>;
-			skip-init;
-			status = "disabled";
-		};
-
-		aon_intr: interrupt-controller@7d510600 {
-			compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
-			reg = <0x7d510600 0x30>;
-			interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-			status = "disabled";
-		};
-
-		pinctrl_aon: pinctrl@7d510700 {
-			compatible = "brcm,bcm2712-aon-pinctrl";
-			reg = <0x7d510700 0x20>;
-
-			i2c3_m4_agpio0_pins: i2c3_m4_agpio0_pins {
-				function = "vc_i2c3";
-				pins = "aon_gpio0", "aon_gpio1";
-				bias-pull-up;
-			};
-
-			bsc_m1_agpio13_pins: bsc_m1_agpio13_pins {
-				function = "bsc_m1";
-				pins = "aon_gpio13", "aon_gpio14";
-				bias-pull-up;
-			};
-
-			bsc_pmu_sgpio4_pins: bsc_pmu_sgpio4_pins {
-				function = "avs_pmu_bsc";
-				pins = "aon_sgpio4", "aon_sgpio5";
-			};
-
-			bsc_m2_sgpio4_pins: bsc_m2_sgpio4_pins {
-				function = "bsc_m2";
-				pins = "aon_sgpio4", "aon_sgpio5";
-			};
-
-			pwm_aon_agpio1_pins: pwm_aon_agpio1_pins {
-				function = "aon_pwm";
-				pins = "aon_gpio1", "aon_gpio2";
-			};
-
-			pwm_aon_agpio4_pins: pwm_aon_agpio4_pins {
-				function = "vc_pwm0";
-				pins = "aon_gpio4", "aon_gpio5";
-			};
-
-			pwm_aon_agpio7_pins: pwm_aon_agpio7_pins {
-				function = "aon_pwm";
-				pins = "aon_gpio7", "aon_gpio9";
-			};
-		};
-
-		intc@7d517000 {
-			compatible = "brcm,bcm7271-l2-intc";
-			reg = <0x7d517000 0x10>;
-			interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-			status = "disabled";
-		};
-
-		bscc: i2c@7d517a00 {
-			compatible = "brcm,brcmstb-i2c";
-			reg = <0x7d517a00 0x58>;
-			interrupt-parent = <&bsc_aon_irq>;
-			interrupts = <0>;
-			clock-frequency = <200000>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		pwm_aon: pwm@7d517a80 {
-			compatible = "brcm,bcm7038-pwm";
-			reg = <0x7d517a80 0x28>;
-			#pwm-cells = <3>;
-			clocks = <&clk_27MHz>;
-		};
-
-		main_aon_irq: intc@7d517ac0 {
-			compatible = "brcm,bcm7271-l2-intc";
-			reg = <0x7d517ac0 0x10>;
-			interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-		};
-
-		bsc_aon_irq: intc@7d517b00 {
-			compatible = "brcm,bcm7271-l2-intc";
-			reg = <0x7d517b00 0x10>;
-			interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-		};
-
-		gio_aon: gpio@7d517c00 {
-			compatible = "brcm,brcmstb-gpio";
-			reg = <0x7d517c00 0x40>;
-			interrupt-parent = <&main_aon_irq>;
-			interrupts = <0>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			brcm,gpio-bank-widths = <17 6>;
-			brcm,gpio-direct;
-		};
-
-		avs_monitor: avs-monitor@7d542000 {
-			compatible = "brcm,bcm2711-avs-monitor",
-				     "syscon", "simple-mfd";
-			reg = <0x7d542000 0xf00>;
-			status = "okay";
-
-			thermal: thermal {
-				compatible = "brcm,bcm2711-thermal";
-				#thermal-sensor-cells = <0>;
-			};
-		};
-
-		bsc_pmu: i2c@7d544000 {
-			compatible = "brcm,brcmstb-i2c";
-			reg = <0x7d544000 0x58>;
-			interrupt-parent = <&bsc_aon_irq>;
-			interrupts = <1>;
-			clock-frequency = <200000>;
-			status = "disabled";
-		};
-
-		hdmi0: hdmi@7ef00700 {
-			compatible = "brcm,bcm2712-hdmi0";
-			reg = <0x7c701400 0x300>,
-			      <0x7c701000 0x200>,
-			      <0x7c701d00 0x300>,
-			      <0x7c702000 0x80>,
-			      <0x7c703800 0x200>,
-			      <0x7c704000 0x800>,
-			      <0x7c700100 0x80>,
-			      <0x7d510800 0x100>,
-			      <0x7c720000 0x100>;
-			reg-names = "hdmi",
-				    "dvp",
-				    "phy",
-				    "rm",
-				    "packet",
-				    "metadata",
-				    "csc",
-				    "cec",
-				    "hd";
-			resets = <&dvp 1>;
-			interrupt-parent = <&aon_intr>;
-			interrupts = <1>, <2>, <3>,
-				     <7>, <8>;
-			interrupt-names = "cec-tx", "cec-rx", "cec-low",
-					  "hpd-connected", "hpd-removed";
-			ddc = <&ddc0>;
-			dmas = <&dma32 10>;
-			dma-names = "audio-rx";
-			status = "disabled";
-		};
-
-		hdmi1: hdmi@7ef05700 {
-			compatible = "brcm,bcm2712-hdmi1";
-			reg = <0x7c706400 0x300>,
-			      <0x7c706000 0x200>,
-			      <0x7c706d00 0x300>,
-			      <0x7c707000 0x80>,
-			      <0x7c708800 0x200>,
-			      <0x7c709000 0x800>,
-			      <0x7c700180 0x80>,
-			      <0x7d511000 0x100>,
-			      <0x7c720000 0x100>;
-			reg-names = "hdmi",
-				    "dvp",
-				    "phy",
-				    "rm",
-				    "packet",
-				    "metadata",
-				    "csc",
-				    "cec",
-				    "hd";
-			ddc = <&ddc1>;
-			resets = <&dvp 2>;
-			interrupt-parent = <&aon_intr>;
-			interrupts = <11>, <12>, <13>,
-				     <14>, <15>;
-			interrupt-names = "cec-tx", "cec-rx", "cec-low",
-					  "hpd-connected", "hpd-removed";
-			dmas = <&dma32 17>;
-			dma-names = "audio-rx";
-			status = "disabled";
-		};
-	};
-
-	arm-pmu {
-		compatible = "arm,cortex-a76-pmu";
-		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
-			<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
-			<GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
-			<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
-		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
-	};
-
-	timer {
-		compatible = "arm,armv8-timer";
-		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
-					  IRQ_TYPE_LEVEL_LOW)>,
-			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
-					  IRQ_TYPE_LEVEL_LOW)>,
-			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
-					  IRQ_TYPE_LEVEL_LOW)>,
-			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
-					  IRQ_TYPE_LEVEL_LOW)>;
-		/* This only applies to the ARMv7 stub */
-		arm,cpu-registers-not-fw-configured;
-	};
-
-	cpus: cpus {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
-
-		/* Source for d/i cache-line-size, cache-sets, cache-size
-		 * https://developer.arm.com/documentation/100798/0401
-		 * /L1-memory-system/About-the-L1-memory-system?lang=en
-		 */
-		cpu0: cpu@0 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a76";
-			reg = <0x000>;
-			enable-method = "psci";
-			d-cache-size = <0x10000>;
-			d-cache-line-size = <64>;
-			d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
-			i-cache-size = <0x10000>;
-			i-cache-line-size = <64>;
-			i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
-			next-level-cache = <&l2_cache_l0>;
-		};
-
-		cpu1: cpu@1 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a76";
-			reg = <0x100>;
-			enable-method = "psci";
-			d-cache-size = <0x10000>;
-			d-cache-line-size = <64>;
-			d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
-			i-cache-size = <0x10000>;
-			i-cache-line-size = <64>;
-			i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
-			next-level-cache = <&l2_cache_l1>;
-		};
-
-		cpu2: cpu@2 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a76";
-			reg = <0x200>;
-			enable-method = "psci";
-			d-cache-size = <0x10000>;
-			d-cache-line-size = <64>;
-			d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
-			i-cache-size = <0x10000>;
-			i-cache-line-size = <64>;
-			i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
-			next-level-cache = <&l2_cache_l2>;
-		};
-
-		cpu3: cpu@3 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a76";
-			reg = <0x300>;
-			enable-method = "psci";
-			d-cache-size = <0x10000>;
-			d-cache-line-size = <64>;
-			d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
-			i-cache-size = <0x10000>;
-			i-cache-line-size = <64>;
-			i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
-			next-level-cache = <&l2_cache_l3>;
-		};
-
-		/* Source for cache-line-size and cache-sets:
-		 * https://developer.arm.com/documentation/100798/0401
-		 * /L2-memory-system/About-the-L2-memory-system?lang=en
-		 * and for cache-size:
-		 * https://www.raspberrypi.com/documentation/computers
-		 * /processors.html#bcm2712
-		 */
-		l2_cache_l0: l2-cache-l0 {
-			compatible = "cache";
-			cache-size = <0x80000>;
-			cache-line-size = <128>;
-			cache-sets = <1024>; // 512KiB(size)/64(line-size)=8192ways/8-way set
-			cache-level = <2>;
-			cache-unified;
-			next-level-cache = <&l3_cache>;
-		};
-
-		l2_cache_l1: l2-cache-l1 {
-			compatible = "cache";
-			cache-size = <0x80000>;
-			cache-line-size = <128>;
-			cache-sets = <1024>; // 512KiB(size)/64(line-size)=8192ways/8-way set
-			cache-level = <2>;
-			cache-unified;
-			next-level-cache = <&l3_cache>;
-		};
-
-		l2_cache_l2: l2-cache-l2 {
-			compatible = "cache";
-			cache-size = <0x80000>;
-			cache-line-size = <128>;
-			cache-sets = <1024>; // 512KiB(size)/64(line-size)=8192ways/8-way set
-			cache-level = <2>;
-			cache-unified;
-			next-level-cache = <&l3_cache>;
-		};
-
-		l2_cache_l3: l2-cache-l3 {
-			compatible = "cache";
-			cache-size = <0x80000>;
-			cache-line-size = <128>;
-			cache-sets = <1024>; // 512KiB(size)/64(line-size)=8192ways/8-way set
-			cache-level = <2>;
-			cache-unified;
-			next-level-cache = <&l3_cache>;
-		};
-
-		/* Source for cache-line-size and cache-sets:
-		 * https://developer.arm.com/documentation/100453/0401/L3-cache?lang=en
-		 * Source for cache-size:
-		 * https://www.raspberrypi.com/documentation/computers/processors.html#bcm2712
-		 */
-		l3_cache: l3-cache {
-			compatible = "cache";
-			cache-size = <0x200000>;
-			cache-line-size = <64>;
-			cache-sets = <2048>; // 2MiB(size)/64(line-size)=32768ways/16-way set
-			cache-level = <3>;
-		};
-	};
-
-	psci {
-		method = "smc";
-		compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci";
-		cpu_on = <0xc4000003>;
-		cpu_suspend = <0xc4000001>;
-		cpu_off = <0x84000002>;
-	};
-
-	axi: axi {
-		compatible = "simple-bus";
-		#address-cells = <2>;
-		#size-cells = <2>;
-
-		ranges = <0x00 0x00000000  0x00 0x00000000  0x10 0x00000000>,
-			 <0x10 0x00000000  0x10 0x00000000  0x01 0x00000000>,
-			 <0x14 0x00000000  0x14 0x00000000  0x04 0x00000000>,
-			 <0x18 0x00000000  0x18 0x00000000  0x04 0x00000000>,
-			 <0x1c 0x00000000  0x1c 0x00000000  0x04 0x00000000>;
-
-		dma-ranges = <0x00 0x00000000  0x00 0x00000000  0x10 0x00000000>,
-			     <0x10 0x00000000  0x10 0x00000000  0x01 0x00000000>,
-			     <0x14 0x00000000  0x14 0x00000000  0x04 0x00000000>,
-			     <0x18 0x00000000  0x18 0x00000000  0x04 0x00000000>,
-			     <0x1c 0x00000000  0x1c 0x00000000  0x04 0x00000000>;
-
-		vc4: gpu {
-			compatible = "brcm,bcm2712-vc6";
-		};
-
-		iommu2: iommu@5100 {
-			/* IOMMU2 for PISP-BE, HEVC; and (unused) H264 accelerators */
-			compatible = "brcm,bcm2712-iommu";
-			reg = <0x10 0x5100  0x0 0x80>;
-			cache = <&iommuc>;
-			#iommu-cells = <0>;
-		};
-
-		iommu4: iommu@5200 {
-			/* IOMMU4 for HVS, MPL/TXP; and (unused) Unicam, PISP-FE, MiniBVN */
-			compatible = "brcm,bcm2712-iommu";
-			reg = <0x10 0x5200  0x0 0x80>;
-			cache = <&iommuc>;
-			#iommu-cells = <0>;
-			#interconnect-cells = <0>;
-		};
-
-		iommu5: iommu@5280 {
-			/* IOMMU5 for PCIe2 (RP1); and (unused) BSTM */
-			compatible = "brcm,bcm2712-iommu";
-			reg = <0x10 0x5280  0x0 0x80>;
-			cache = <&iommuc>;
-			#iommu-cells = <0>;
-			dma-iova-offset = <0x10 0x00000000>; // HACK for RP1 masters over PCIe
-		};
-
-		iommuc: iommuc@5b00 {
-			compatible = "brcm,bcm2712-iommuc";
-			reg = <0x10 0x5b00  0x0 0x80>;
-		};
-
-		dma32: dma@10000 {
-			compatible = "brcm,bcm2712-dma";
-			reg = <0x10 0x00010000 0 0x600>;
-			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-names = "dma0",
-					  "dma1",
-					  "dma2",
-					  "dma3",
-					  "dma4",
-					  "dma5";
-			#dma-cells = <1>;
-			brcm,dma-channel-mask = <0x0035>;
-		};
-
-		dma40: dma@10600 {
-			compatible = "brcm,bcm2712-dma";
-			reg = <0x10 0x00010600 0 0x600>;
-			interrupts =
-				<GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>, /* dma4 6 */
-				<GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, /* dma4 7 */
-				<GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, /* dma4 8 */
-				<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, /* dma4 9 */
-				<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, /* dma4 10 */
-				<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; /* dma4 11 */
-			interrupt-names = "dma6",
-					  "dma7",
-					  "dma8",
-					  "dma9",
-					  "dma10",
-					  "dma11";
-			#dma-cells = <1>;
-			brcm,dma-channel-mask = <0x0fc0>;
-		};
-
-		// Single-lane Gen3 PCIe
-		// Outbound window at 0x14_000000-0x17_ffffff
-		pcie0: pcie@100000 {
-			compatible = "brcm,bcm2712-pcie";
-			reg = <0x10 0x00100000  0x0 0x9310>;
-			device_type = "pci";
-			max-link-speed = <2>;
-			#address-cells = <3>;
-			#interrupt-cells = <1>;
-			#size-cells = <2>;
-			/*
-			 * Unused interrupts:
-			 * 208: AER
-			 * 215: NMI
-			 * 216: PME
-			 */
-			interrupt-parent = <&gicv2>;
-			interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-names = "pcie", "msi";
-			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
-			interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 209
-							IRQ_TYPE_LEVEL_HIGH>,
-					<0 0 0 2 &gicv2 GIC_SPI 210
-							IRQ_TYPE_LEVEL_HIGH>,
-					<0 0 0 3 &gicv2 GIC_SPI 211
-							IRQ_TYPE_LEVEL_HIGH>,
-					<0 0 0 4 &gicv2 GIC_SPI 212
-							IRQ_TYPE_LEVEL_HIGH>;
-			resets = <&bcm_reset 5>, <&bcm_reset 42>, <&pcie_rescal>;
-			reset-names = "swinit", "bridge", "rescal";
-			msi-controller;
-			msi-parent = <&pcie0>;
-
-			ranges = <0x02000000 0x00 0x00000000
-				  0x17 0x00000000
-				  0x0 0xfffffffc>,
-				 <0x43000000 0x04 0x00000000
-				  0x14 0x00000000
-				  0x3 0x00000000>;
-
-			dma-ranges = <0x43000000 0x10 0x00000000
-				      0x00 0x00000000
-				      0x10 0x00000000>;
-
-			status = "disabled";
-		};
-
-		// Single-lane Gen3 PCIe
-		// Outbound window at 0x18_000000-0x1b_ffffff
-		pcie1: pcie@110000 {
-			compatible = "brcm,bcm2712-pcie";
-			reg = <0x10 0x00110000  0x0 0x9310>;
-			device_type = "pci";
-			max-link-speed = <2>;
-			#address-cells = <3>;
-			#interrupt-cells = <1>;
-			#size-cells = <2>;
-			/*
-			 * Unused interrupts:
-			 * 218: AER
-			 * 225: NMI
-			 * 226: PME
-			 */
-			interrupt-parent = <&gicv2>;
-			interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-names = "pcie", "msi";
-			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
-			interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 219
-							IRQ_TYPE_LEVEL_HIGH>,
-					<0 0 0 2 &gicv2 GIC_SPI 220
-							IRQ_TYPE_LEVEL_HIGH>,
-					<0 0 0 3 &gicv2 GIC_SPI 221
-							IRQ_TYPE_LEVEL_HIGH>,
-					<0 0 0 4 &gicv2 GIC_SPI 222
-							IRQ_TYPE_LEVEL_HIGH>;
-			resets = <&bcm_reset 7>, <&bcm_reset 43>, <&pcie_rescal>;
-			reset-names = "swinit", "bridge", "rescal";
-			msi-controller;
-			msi-parent = <&mip1>;
-
-			ranges = <0x02000000 0x00 0x00000000
-				  0x1b 0x00000000
-				  0x00 0xfffffffc>,
-				 <0x43000000 0x04 0x00000000
-				  0x18 0x00000000
-				  0x03 0x00000000>;
-
-			dma-ranges = <0x03000000 0x10 0x00000000
-				      0x00 0x00000000
-				      0x10 0x00000000>;
-
-			status = "disabled";
-		};
-
-		pcie_rescal: reset-controller@119500 {
-			compatible = "brcm,bcm7216-pcie-sata-rescal";
-			reg = <0x10 0x00119500  0x0 0x10>;
-			#reset-cells = <0>;
-		};
-
-		// Quad-lane Gen3 PCIe
-		// Outbound window at 0x1c_000000-0x1f_ffffff
-		pcie2: pcie@120000 {
-			compatible = "brcm,bcm2712-pcie";
-			reg = <0x10 0x00120000  0x0 0x9310>;
-			device_type = "pci";
-			max-link-speed = <2>;
-			#address-cells = <3>;
-			#interrupt-cells = <1>;
-			#size-cells = <2>;
-			/*
-			 * Unused interrupts:
-			 * 228: AER
-			 * 235: NMI
-			 * 236: PME
-			 */
-			interrupt-parent = <&gicv2>;
-			interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-names = "pcie", "msi";
-			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
-			interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 229
-							IRQ_TYPE_LEVEL_HIGH>,
-					<0 0 0 2 &gicv2 GIC_SPI 230
-							IRQ_TYPE_LEVEL_HIGH>,
-					<0 0 0 3 &gicv2 GIC_SPI 231
-							IRQ_TYPE_LEVEL_HIGH>,
-					<0 0 0 4 &gicv2 GIC_SPI 232
-							IRQ_TYPE_LEVEL_HIGH>;
-			resets = <&bcm_reset 32>, <&bcm_reset 44>, <&pcie_rescal>;
-			reset-names = "swinit", "bridge", "rescal";
-			msi-controller;
-			msi-parent = <&mip0>;
-
-			// ~4GB, 32-bit, not-prefetchable at PCIe 00_00000000
-			ranges = <0x02000000 0x00 0x00000000
-				  0x1f 0x00000000
-				  0x0 0xfffffffc>,
-			// 12GB, 64-bit, prefetchable at PCIe 04_00000000
-				 <0x43000000 0x04 0x00000000
-				  0x1c 0x00000000
-				  0x03 0x00000000>;
-
-			// 64GB system RAM space at PCIe 10_00000000
-			dma-ranges = <0x02000000 0x00 0x00000000
-				      0x1f 0x00000000
-				      0x00 0x00400000>,
-				     <0x43000000 0x10 0x00000000
-				      0x00 0x00000000
-				      0x10 0x00000000>;
-
-			status = "disabled";
-		};
-
-		mip0: msi-controller@130000 {
-			compatible = "brcm,bcm2712-mip-intc";
-			reg = <0x10 0x00130000  0x0 0xc0>;
-			msi-controller;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			brcm,msi-base-spi = <128>;
-			brcm,msi-num-spis = <64>;
-			brcm,msi-offset = <0>;
-			brcm,msi-pci-addr = <0xff 0xfffff000>;
-		};
-
-		mip1: msi-controller@131000 {
-			compatible = "brcm,bcm2712-mip-intc";
-			reg = <0x10 0x00131000  0x0 0xc0>;
-			msi-controller;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			brcm,msi-base-spi = <247>;
-			/* Actually 20 total, but the others are
-			 * both sparse and non-consecutive */
-			brcm,msi-num-spis = <8>;
-			brcm,msi-offset = <8>;
-			brcm,msi-pci-addr = <0xff 0xffffe000>;
-		};
-
-		syscon_piarbctl: syscon@400018 {
-			compatible = "brcm,syscon-piarbctl", "syscon", "simple-mfd";
-			reg = <0x10 0x00400018  0x0 0x18>;
-		};
-
-		usb: usb@480000 {
-			compatible = "brcm,bcm2835-usb";
-			reg = <0x10 0x00480000 0x0 0x10000>;
-			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			clocks = <&clk_usb>;
-			clock-names = "otg";
-			phys = <&usbphy>;
-			phy-names = "usb2-phy";
-			status = "disabled";
-		};
-
-		rpivid: codec@800000 {
-			compatible = "raspberrypi,rpivid-vid-decoder";
-			reg = <0x10 0x00800000  0x0 0x10000>, /* HEVC */
-			      <0x10 0x00840000  0x0 0x1000>;  /* INTC */
-			reg-names = "hevc",
-				    "intc";
-
-			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
-
-			clocks = <&firmware_clocks 11>;
-			clock-names = "hevc";
-			iommus = <&iommu2>;
-			status = "disabled";
-		};
-
-		sdio1: mmc@fff000 {
-			compatible = "brcm,bcm2712-sdhci";
-			reg = <0x10 0x00fff000  0x0 0x260>,
-			      <0x10 0x00fff400  0x0 0x200>,
-			      <0x10 0x015040b0  0x0 0x4>,  // Bus isolation control
-			      <0x10 0x015200f0  0x0 0x24>; // LCPLL control misc0-8
-			reg-names = "host", "cfg", "busisol", "lcpll";
-			interrupts = <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_emmc2>;
-			sdhci-caps-mask = <0x0000C000 0x0>;
-			sdhci-caps = <0x0 0x0>;
-			mmc-ddr-3_3v;
-		};
-
-		sdio2: mmc@1100000 {
-			compatible = "brcm,bcm2712-sdhci";
-			reg = <0x10 0x01100000  0x0 0x260>,
-			      <0x10 0x01100400  0x0 0x200>;
-			reg-names = "host", "cfg";
-			interrupts = <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&clk_emmc2>;
-			sdhci-caps-mask = <0x0000C000 0x0>;
-			sdhci-caps = <0x0 0x0>;
-			supports-cqe;
-			mmc-ddr-3_3v;
-			status = "disabled";
-		};
-
-		bcm_reset: reset-controller@1504318 {
-			compatible = "brcm,brcmstb-reset";
-			reg = <0x10 0x01504318  0x0 0x30>;
-			#reset-cells = <1>;
-		};
-
-		v3d: v3d@2000000 {
-			compatible = "brcm,2712-v3d";
-			reg = <0x10 0x02000000  0x0 0x4000>,
-			      <0x10 0x02008000  0x0 0x6000>;
-			reg-names = "hub", "core0";
-
-			power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
-			resets = <&pm BCM2835_RESET_V3D>;
-			clocks = <&firmware_clocks 5>;
-			clocks-names = "v3d";
-			interrupts = <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
-		gicv2: interrupt-controller@7fff9000 {
-			interrupt-controller;
-			#interrupt-cells = <3>;
-			compatible = "arm,gic-400";
-			reg =	<0x10 0x7fff9000  0x0 0x1000>,
-				<0x10 0x7fffa000  0x0 0x2000>,
-				<0x10 0x7fffc000  0x0 0x2000>,
-				<0x10 0x7fffe000  0x0 0x2000>;
-			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
-						 IRQ_TYPE_LEVEL_HIGH)>;
-		};
-
-		pisp_be: pisp_be@880000  {
-			compatible = "raspberrypi,pispbe";
-			reg = <0x10 0x00880000  0x0 0x4000>;
-			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&firmware_clocks 7>;
-			clocks-names = "isp_be";
-			status = "okay";
-			iommus = <&iommu2>;
-		};
-	};
-
-	clocks {
-		/* The oscillator is the root of the clock tree. */
-		clk_osc: clk-osc {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-output-names = "osc";
-			clock-frequency = <54000000>;
-		};
-
-		clk_usb: clk-usb {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-output-names = "otg";
-			clock-frequency = <480000000>;
-		};
-
-		clk_vpu: clk_vpu {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <750000000>;
-			clock-output-names = "vpu-clock";
-		};
-
-		clk_uart: clk_uart {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <9216000>;
-			clock-output-names = "uart-clock";
-		};
-
-		clk_emmc2: clk_emmc2 {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <200000000>;
-			clock-output-names = "emmc2-clock";
-		};
-	};
-
-	usbphy: phy {
-		compatible = "usb-nop-xceiv";
-		#phy-cells = <0>;
-	};
-};
--- a/arch/arm/boot/dts/broadcom/rp1.dtsi
+++ /dev/null
@@ -1,1287 +0,0 @@
-#include <dt-bindings/clock/rp1.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/mfd/rp1.h>
-
-&rp1_target {
-	rp1: rp1 {
-		compatible = "simple-bus";
-		#address-cells = <2>;
-		#size-cells = <2>;
-		#interrupt-cells = <2>;
-		interrupt-controller;
-		interrupt-parent = <&rp1>;
-
-		// ranges and dma-ranges must be provided by the includer
-
-		rp1_clocks: clocks@18000 {
-			compatible = "raspberrypi,rp1-clocks";
-			#clock-cells = <1>;
-			reg = <0xc0 0x40018000 0x0 0x10038>;
-			clocks = <&clk_xosc>;
-
-			assigned-clocks = <&rp1_clocks RP1_PLL_SYS_CORE>,
-					  <&rp1_clocks RP1_PLL_AUDIO_CORE>,
-					  // RP1_PLL_VIDEO_CORE and dividers are now managed by VEC,DPI drivers
-					  <&rp1_clocks RP1_PLL_SYS>,
-					  <&rp1_clocks RP1_PLL_SYS_SEC>,
-					  <&rp1_clocks RP1_PLL_AUDIO>,
-					  <&rp1_clocks RP1_PLL_AUDIO_SEC>,
-					  <&rp1_clocks RP1_CLK_SYS>,
-					  <&rp1_clocks RP1_PLL_SYS_PRI_PH>,
-					  // RP1_CLK_SLOW_SYS is used for the frequency counter (FC0)
-					  <&rp1_clocks RP1_CLK_SLOW_SYS>,
-					  <&rp1_clocks RP1_CLK_SDIO_TIMER>,
-					  <&rp1_clocks RP1_CLK_SDIO_ALT_SRC>,
-					  <&rp1_clocks RP1_CLK_ETH_TSU>;
-
-			assigned-clock-rates = <1000000000>, // RP1_PLL_SYS_CORE
-					       <1536000000>, // RP1_PLL_AUDIO_CORE
-					       <200000000>,  // RP1_PLL_SYS
-					       <125000000>,  // RP1_PLL_SYS_SEC
-					       <61440000>,   // RP1_PLL_AUDIO
-					       <192000000>,  // RP1_PLL_AUDIO_SEC
-					       <200000000>,  // RP1_CLK_SYS
-					       <100000000>,  // RP1_PLL_SYS_PRI_PH
-					       // Must match the XOSC frequency
-					       <50000000>, // RP1_CLK_SLOW_SYS
-					       <1000000>, // RP1_CLK_SDIO_TIMER
-					       <200000000>, // RP1_CLK_SDIO_ALT_SRC
-					       <50000000>; // RP1_CLK_ETH_TSU
-		};
-
-		rp1_uart0: serial@30000 {
-			compatible = "arm,pl011-axi";
-			reg = <0xc0 0x40030000  0x0 0x100>;
-			interrupts = <RP1_INT_UART0 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
-			clock-names = "uartclk", "apb_pclk";
-			dmas = <&rp1_dma RP1_DMA_UART0_TX>,
-			       <&rp1_dma RP1_DMA_UART0_RX>;
-			dma-names = "tx", "rx";
-			pinctrl-names = "default";
-			arm,primecell-periphid = <0x00541011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart1: serial@34000 {
-			compatible = "arm,pl011-axi";
-			reg = <0xc0 0x40034000  0x0 0x100>;
-			interrupts = <RP1_INT_UART1 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
-			clock-names = "uartclk", "apb_pclk";
-			// dmas = <&rp1_dma RP1_DMA_UART1_TX>,
-			//        <&rp1_dma RP1_DMA_UART1_RX>;
-			// dma-names = "tx", "rx";
-			pinctrl-names = "default";
-			arm,primecell-periphid = <0x00541011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart2: serial@38000 {
-			compatible = "arm,pl011-axi";
-			reg = <0xc0 0x40038000  0x0 0x100>;
-			interrupts = <RP1_INT_UART2 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
-			clock-names = "uartclk", "apb_pclk";
-			// dmas = <&rp1_dma RP1_DMA_UART2_TX>,
-			//        <&rp1_dma RP1_DMA_UART2_RX>;
-			// dma-names = "tx", "rx";
-			pinctrl-names = "default";
-			arm,primecell-periphid = <0x00541011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart3: serial@3c000 {
-			compatible = "arm,pl011-axi";
-			reg = <0xc0 0x4003c000  0x0 0x100>;
-			interrupts = <RP1_INT_UART3 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
-			clock-names = "uartclk", "apb_pclk";
-			// dmas = <&rp1_dma RP1_DMA_UART3_TX>,
-			//        <&rp1_dma RP1_DMA_UART3_RX>;
-			// dma-names = "tx", "rx";
-			pinctrl-names = "default";
-			arm,primecell-periphid = <0x00541011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart4: serial@40000 {
-			compatible = "arm,pl011-axi";
-			reg = <0xc0 0x40040000  0x0 0x100>;
-			interrupts = <RP1_INT_UART4 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
-			clock-names = "uartclk", "apb_pclk";
-			// dmas = <&rp1_dma RP1_DMA_UART4_TX>,
-			//        <&rp1_dma RP1_DMA_UART4_RX>;
-			// dma-names = "tx", "rx";
-			pinctrl-names = "default";
-			arm,primecell-periphid = <0x00541011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart5: serial@44000 {
-			compatible = "arm,pl011-axi";
-			reg = <0xc0 0x40044000  0x0 0x100>;
-			interrupts = <RP1_INT_UART5 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
-			clock-names = "uartclk", "apb_pclk";
-			// dmas = <&rp1_dma RP1_DMA_UART5_TX>,
-			//        <&rp1_dma RP1_DMA_UART5_RX>;
-			// dma-names = "tx", "rx";
-			pinctrl-names = "default";
-			arm,primecell-periphid = <0x00541011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_spi8: spi@4c000 {
-			reg = <0xc0 0x4004c000  0x0 0x130>;
-			compatible = "snps,dw-apb-ssi";
-			interrupts = <RP1_INT_SPI8 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			clock-names = "ssi_clk";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			num-cs = <2>;
-			dmas = <&rp1_dma RP1_DMA_SPI8_TX>,
-			       <&rp1_dma RP1_DMA_SPI8_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		rp1_spi0: spi@50000 {
-			reg = <0xc0 0x40050000  0x0 0x130>;
-			compatible = "snps,dw-apb-ssi";
-			interrupts = <RP1_INT_SPI0 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			clock-names = "ssi_clk";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			num-cs = <2>;
-			dmas = <&rp1_dma RP1_DMA_SPI0_TX>,
-			       <&rp1_dma RP1_DMA_SPI0_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		rp1_spi1: spi@54000 {
-			reg = <0xc0 0x40054000  0x0 0x130>;
-			compatible = "snps,dw-apb-ssi";
-			interrupts = <RP1_INT_SPI1 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			clock-names = "ssi_clk";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			num-cs = <2>;
-			dmas = <&rp1_dma RP1_DMA_SPI1_TX>,
-			       <&rp1_dma RP1_DMA_SPI1_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		rp1_spi2: spi@58000 {
-			reg = <0xc0 0x40058000  0x0 0x130>;
-			compatible = "snps,dw-apb-ssi";
-			interrupts = <RP1_INT_SPI2 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			clock-names = "ssi_clk";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			num-cs = <2>;
-			dmas = <&rp1_dma RP1_DMA_SPI2_TX>,
-			       <&rp1_dma RP1_DMA_SPI2_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		rp1_spi3: spi@5c000 {
-			reg = <0xc0 0x4005c000  0x0 0x130>;
-			compatible = "snps,dw-apb-ssi";
-			interrupts = <RP1_INT_SPI3 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			clock-names = "ssi_clk";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			num-cs = <2>;
-			dmas = <&rp1_dma RP1_DMA_SPI3_TX>,
-			       <&rp1_dma RP1_DMA_SPI3_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		// SPI4 is a target/slave interface
-		rp1_spi4: spi@60000 {
-			reg = <0xc0 0x40060000  0x0 0x130>;
-			compatible = "snps,dw-apb-ssi";
-			interrupts = <RP1_INT_SPI4 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			clock-names = "ssi_clk";
-			#address-cells = <0>;
-			#size-cells = <0>;
-			num-cs = <1>;
-			spi-slave;
-			dmas = <&rp1_dma RP1_DMA_SPI4_TX>,
-			       <&rp1_dma RP1_DMA_SPI4_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-
-			slave {
-				compatible = "spidev";
-				spi-max-frequency = <1000000>;
-			};
-		};
-
-		rp1_spi5: spi@64000 {
-			reg = <0xc0 0x40064000  0x0 0x130>;
-			compatible = "snps,dw-apb-ssi";
-			interrupts = <RP1_INT_SPI5 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			clock-names = "ssi_clk";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			num-cs = <2>;
-			dmas = <&rp1_dma RP1_DMA_SPI5_TX>,
-			       <&rp1_dma RP1_DMA_SPI5_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		rp1_spi6: spi@68000 {
-			reg = <0xc0 0x40068000  0x0 0x130>;
-			compatible = "snps,dw-apb-ssi";
-			interrupts = <RP1_INT_SPI6 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			clock-names = "ssi_clk";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			num-cs = <2>;
-			dmas = <&rp1_dma RP1_DMA_SPI6_TX>,
-			       <&rp1_dma RP1_DMA_SPI6_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		// SPI7 is a target/slave interface
-		rp1_spi7: spi@6c000 {
-			reg = <0xc0 0x4006c000  0x0 0x130>;
-			compatible = "snps,dw-apb-ssi";
-			interrupts = <RP1_INT_SPI7 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			clock-names = "ssi_clk";
-			#address-cells = <0>;
-			#size-cells = <0>;
-			num-cs = <1>;
-			spi-slave;
-			dmas = <&rp1_dma RP1_DMA_SPI7_TX>,
-			       <&rp1_dma RP1_DMA_SPI7_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-
-			slave {
-				compatible = "spidev";
-				spi-max-frequency = <1000000>;
-			};
-		};
-
-		rp1_i2c0: i2c@70000 {
-			reg = <0xc0 0x40070000  0x0 0x1000>;
-			compatible = "snps,designware-i2c";
-			interrupts = <RP1_INT_I2C0 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			i2c-scl-rising-time-ns = <65>;
-			i2c-scl-falling-time-ns = <100>;
-			status = "disabled";
-		};
-
-		rp1_i2c1: i2c@74000 {
-			reg = <0xc0 0x40074000  0x0 0x1000>;
-			compatible = "snps,designware-i2c";
-			interrupts = <RP1_INT_I2C1 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			i2c-scl-rising-time-ns = <65>;
-			i2c-scl-falling-time-ns = <100>;
-			status = "disabled";
-		};
-
-		rp1_i2c2: i2c@78000 {
-			reg = <0xc0 0x40078000  0x0 0x1000>;
-			compatible = "snps,designware-i2c";
-			interrupts = <RP1_INT_I2C2 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			i2c-scl-rising-time-ns = <65>;
-			i2c-scl-falling-time-ns = <100>;
-			status = "disabled";
-		};
-
-		rp1_i2c3: i2c@7c000 {
-			reg = <0xc0 0x4007c000  0x0 0x1000>;
-			compatible = "snps,designware-i2c";
-			interrupts = <RP1_INT_I2C3 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			i2c-scl-rising-time-ns = <65>;
-			i2c-scl-falling-time-ns = <100>;
-			status = "disabled";
-		};
-
-		rp1_i2c4: i2c@80000 {
-			reg = <0xc0 0x40080000  0x0 0x1000>;
-			compatible = "snps,designware-i2c";
-			interrupts = <RP1_INT_I2C4 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			i2c-scl-rising-time-ns = <65>;
-			i2c-scl-falling-time-ns = <100>;
-			status = "disabled";
-		};
-
-		rp1_i2c5: i2c@84000 {
-			reg = <0xc0 0x40084000  0x0 0x1000>;
-			compatible = "snps,designware-i2c";
-			interrupts = <RP1_INT_I2C5 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			i2c-scl-rising-time-ns = <65>;
-			i2c-scl-falling-time-ns = <100>;
-			status = "disabled";
-		};
-
-		rp1_i2c6: i2c@88000 {
-			reg = <0xc0 0x40088000  0x0 0x1000>;
-			compatible = "snps,designware-i2c";
-			interrupts = <RP1_INT_I2C6 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS>;
-			i2c-scl-rising-time-ns = <65>;
-			i2c-scl-falling-time-ns = <100>;
-			status = "disabled";
-		};
-
-		rp1_pwm0: pwm@98000 {
-			compatible = "raspberrypi,rp1-pwm";
-			reg = <0xc0 0x40098000  0x0 0x100>;
-			#pwm-cells = <3>;
-			clocks = <&rp1_clocks RP1_CLK_PWM0>;
-			assigned-clocks = <&rp1_clocks RP1_CLK_PWM0>;
-			assigned-clock-rates = <50000000>;
-			status = "disabled";
-		};
-
-		rp1_pwm1: pwm@9c000 {
-			compatible = "raspberrypi,rp1-pwm";
-			reg = <0xc0 0x4009c000  0x0 0x100>;
-			#pwm-cells = <3>;
-			clocks = <&rp1_clocks RP1_CLK_PWM1>;
-			assigned-clocks = <&rp1_clocks RP1_CLK_PWM1>;
-			assigned-clock-rates = <50000000>;
-			status = "disabled";
-		};
-
-		rp1_i2s0: i2s@a0000 {
-			reg = <0xc0 0x400a0000  0x0 0x1000>;
-			compatible = "snps,designware-i2s";
-			// Providing an interrupt disables DMA
-			// interrupts = <RP1_INT_I2S0 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_I2S>;
-			clock-names = "i2sclk";
-			#sound-dai-cells = <0>;
-			dmas = <&rp1_dma RP1_DMA_I2S0_TX>,<&rp1_dma RP1_DMA_I2S0_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		rp1_i2s1: i2s@a4000 {
-			reg = <0xc0 0x400a4000  0x0 0x1000>;
-			compatible = "snps,designware-i2s";
-			// Providing an interrupt disables DMA
-			// interrupts = <RP1_INT_I2S1 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_I2S>;
-			clock-names = "i2sclk";
-			#sound-dai-cells = <0>;
-			dmas = <&rp1_dma RP1_DMA_I2S1_TX>,<&rp1_dma RP1_DMA_I2S1_RX>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		rp1_i2s2: i2s@a8000 {
-			reg = <0xc0 0x400a8000  0x0 0x1000>;
-			compatible = "snps,designware-i2s";
-			// Providing an interrupt disables DMA
-			// interrupts = <RP1_INT_I2S2 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_I2S>;
-			status = "disabled";
-		};
-
-		rp1_sdio_clk0: sdio_clk0@b0004 {
-			compatible = "raspberrypi,rp1-sdio-clk";
-			reg = <0xc0 0x400b0004 0x0 0x1c>;
-			clocks = <&sdio_src &sdhci_core>;
-			clock-names = "src", "base";
-			#clock-cells = <0>;
-			status = "disabled";
-		};
-
-		rp1_sdio_clk1: sdio_clk1@b4004 {
-			compatible = "raspberrypi,rp1-sdio-clk";
-			reg = <0xc0 0x400b4004 0x0 0x1c>;
-			clocks = <&sdio_src &sdhci_core>;
-			clock-names = "src", "base";
-			#clock-cells = <0>;
-			status = "disabled";
-		};
-
-		rp1_adc: adc@c8000 {
-			compatible = "raspberrypi,rp1-adc";
-			reg = <0xc0 0x400c8000 0x0 0x4000>;
-			clocks = <&rp1_clocks RP1_CLK_ADC>;
-			clock-names = "adcclk";
-			#clock-cells = <0>;
-			vref-supply = <&rp1_vdd_3v3>;
-			status = "disabled";
-		};
-
-		rp1_gpio: gpio@d0000 {
-			reg = <0xc0 0x400d0000  0x0 0xc000>,
-			      <0xc0 0x400e0000  0x0 0xc000>,
-			      <0xc0 0x400f0000  0x0 0xc000>;
-			compatible = "raspberrypi,rp1-gpio";
-			interrupts = <RP1_INT_IO_BANK0 IRQ_TYPE_LEVEL_HIGH>,
-				     <RP1_INT_IO_BANK1 IRQ_TYPE_LEVEL_HIGH>,
-			             <RP1_INT_IO_BANK2 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			gpio-ranges = <&rp1_gpio 0 0 54>;
-
-			rp1_uart0_14_15: rp1_uart0_14_15 {
-				pin_txd {
-					function = "uart0";
-					pins = "gpio14";
-					bias-disable;
-				};
-				pin_rxd {
-					function = "uart0";
-					pins = "gpio15";
-					bias-pull-up;
-				};
-			};
-			rp1_uart0_ctsrts_16_17: rp1_uart0_ctsrts_16_17 {
-				pin_cts {
-					function = "uart0";
-					pins = "gpio16";
-					bias-pull-up;
-				};
-				pin_rts {
-					function = "uart0";
-					pins = "gpio17";
-					bias-disable;
-				};
-			};
-			rp1_uart1_0_1: rp1_uart1_0_1 {
-				pin_txd {
-					function = "uart1";
-					pins = "gpio0";
-					bias-disable;
-				};
-				pin_rxd {
-					function = "uart1";
-					pins = "gpio1";
-					bias-pull-up;
-				};
-			};
-			rp1_uart1_ctsrts_2_3: rp1_uart1_ctsrts_2_3 {
-				pin_cts {
-					function = "uart1";
-					pins = "gpio2";
-					bias-pull-up;
-				};
-				pin_rts {
-					function = "uart1";
-					pins = "gpio3";
-					bias-disable;
-				};
-			};
-			rp1_uart2_4_5: rp1_uart2_4_5 {
-				pin_txd {
-					function = "uart2";
-					pins = "gpio4";
-					bias-disable;
-				};
-				pin_rxd {
-					function = "uart2";
-					pins = "gpio5";
-					bias-pull-up;
-				};
-			};
-			rp1_uart2_ctsrts_6_7: rp1_uart2_ctsrts_6_7 {
-				pin_cts {
-					function = "uart2";
-					pins = "gpio6";
-					bias-pull-up;
-				};
-				pin_rts {
-					function = "uart2";
-					pins = "gpio7";
-					bias-disable;
-				};
-			};
-			rp1_uart3_8_9: rp1_uart3_8_9 {
-				pin_txd {
-					function = "uart3";
-					pins = "gpio8";
-					bias-disable;
-				};
-				pin_rxd {
-					function = "uart3";
-					pins = "gpio9";
-					bias-pull-up;
-				};
-			};
-			rp1_uart3_ctsrts_10_11: rp1_uart3_ctsrts_10_11 {
-				pin_cts {
-					function = "uart3";
-					pins = "gpio10";
-					bias-pull-up;
-				};
-				pin_rts {
-					function = "uart3";
-					pins = "gpio11";
-					bias-disable;
-				};
-			};
-			rp1_uart4_12_13: rp1_uart4_12_13 {
-				pin_txd {
-					function = "uart4";
-					pins = "gpio12";
-					bias-disable;
-				};
-				pin_rxd {
-					function = "uart4";
-					pins = "gpio13";
-					bias-pull-up;
-				};
-			};
-			rp1_uart4_ctsrts_14_15: rp1_uart4_ctsrts_14_15 {
-				pin_cts {
-					function = "uart4";
-					pins = "gpio14";
-					bias-pull-up;
-				};
-				pin_rts {
-					function = "uart4";
-					pins = "gpio15";
-					bias-disable;
-				};
-			};
-
-			rp1_sdio0_22_27: rp1_sdio0_22_27 {
-				pin_clk {
-					function = "sd0";
-					pins = "gpio22";
-					bias-disable;
-					drive-strength = <12>;
-					slew-rate = <1>;
-				};
-				pin_cmd {
-					function = "sd0";
-					pins = "gpio23";
-					bias-pull-up;
-					drive-strength = <12>;
-					slew-rate = <1>;
-				};
-				pins_dat {
-					function = "sd0";
-					pins = "gpio24", "gpio25", "gpio26", "gpio27";
-					bias-pull-up;
-					drive-strength = <12>;
-					slew-rate = <1>;
-				};
-			};
-
-			rp1_sdio1_28_33: rp1_sdio1_28_33 {
-				pin_clk {
-					function = "sd1";
-					pins = "gpio28";
-					bias-disable;
-					drive-strength = <12>;
-					slew-rate = <1>;
-				};
-				pin_cmd {
-					function = "sd1";
-					pins = "gpio29";
-					bias-pull-up;
-					drive-strength = <12>;
-					slew-rate = <1>;
-				};
-				pins_dat {
-					function = "sd1";
-					pins = "gpio30", "gpio31", "gpio32", "gpio33";
-					bias-pull-up;
-					drive-strength = <12>;
-					slew-rate = <1>;
-				};
-			};
-
-			rp1_i2s0_18_21: rp1_i2s0_18_21 {
-				function = "i2s0";
-				pins = "gpio18", "gpio19", "gpio20", "gpio21";
-				bias-disable;
-			};
-
-			rp1_i2s1_18_21: rp1_i2s1_18_21 {
-				function = "i2s1";
-				pins = "gpio18", "gpio19", "gpio20", "gpio21";
-				bias-disable;
-			};
-
-			rp1_i2c4_34_35: rp1_i2c4_34_35 {
-				function = "i2c4";
-				pins = "gpio34", "gpio35";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c6_38_39: rp1_i2c6_38_39 {
-				function = "i2c6";
-				pins = "gpio38", "gpio39";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c4_40_41: rp1_i2c4_40_41 {
-				function = "i2c4";
-				pins = "gpio40", "gpio41";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c5_44_45: rp1_i2c5_44_45 {
-				function = "i2c5";
-				pins = "gpio44", "gpio45";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c0_0_1: rp1_i2c0_0_1 {
-				function = "i2c0";
-				pins = "gpio0", "gpio1";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c0_8_9: rp1_i2c0_8_9 {
-				function = "i2c0";
-				pins = "gpio8", "gpio9";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c1_2_3: rp1_i2c1_2_3 {
-				function = "i2c1";
-				pins = "gpio2", "gpio3";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c1_10_11: rp1_i2c1_10_11 {
-				function = "i2c1";
-				pins = "gpio10", "gpio11";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c2_4_5: rp1_i2c2_4_5 {
-				function = "i2c2";
-				pins = "gpio4", "gpio5";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c2_12_13: rp1_i2c2_12_13 {
-				function = "i2c2";
-				pins = "gpio12", "gpio13";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c3_6_7: rp1_i2c3_6_7 {
-				function = "i2c3";
-				pins = "gpio6", "gpio7";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c3_14_15: rp1_i2c3_14_15 {
-				function = "i2c3";
-				pins = "gpio14", "gpio15";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-			rp1_i2c3_22_23: rp1_i2c3_22_23 {
-				function = "i2c3";
-				pins = "gpio22", "gpio23";
-				drive-strength = <12>;
-				bias-pull-up;
-			};
-
-			// DPI mappings with HSYNC,VSYNC but without PIXCLK,DE
-			rp1_dpi_16bit_gpio2: rp1_dpi_16bit_gpio2 { /* Mode 2, not fully supported by RP1 */
-				function = "dpi";
-				pins = "gpio2", "gpio3", "gpio4", "gpio5",
-				       "gpio6", "gpio7", "gpio8", "gpio9",
-				       "gpio10", "gpio11", "gpio12", "gpio13",
-				       "gpio14", "gpio15", "gpio16", "gpio17",
-				       "gpio18", "gpio19";
-				bias-disable;
-			};
-			rp1_dpi_16bit_cpadhi_gpio2: rp1_dpi_16bit_cpadhi_gpio2 { /* Mode 3 */
-				function = "dpi";
-				pins = "gpio2", "gpio3", "gpio4", "gpio5",
-				       "gpio6", "gpio7", "gpio8",
-				       "gpio12", "gpio13", "gpio14", "gpio15",
-				       "gpio16", "gpio17",
-				       "gpio20", "gpio21", "gpio22", "gpio23",
-				       "gpio24";
-				bias-disable;
-			};
-			rp1_dpi_16bit_pad666_gpio2: rp1_dpi_16bit_pad666_gpio2 { /* Mode 4 */
-				function = "dpi";
-				pins = "gpio2", "gpio3",
-				       "gpio5", "gpio6", "gpio7", "gpio8",
-				       "gpio9",
-				       "gpio12", "gpio13", "gpio14", "gpio15",
-				       "gpio16", "gpio17",
-				       "gpio21", "gpio22", "gpio23", "gpio24",
-				       "gpio25";
-				bias-disable;
-			};
-			rp1_dpi_18bit_gpio2: rp1_dpi_18bit_gpio2 { /* Mode 5, not fully supported by RP1 */
-				function = "dpi";
-				pins = "gpio2", "gpio3", "gpio4", "gpio5",
-				       "gpio6", "gpio7", "gpio8", "gpio9",
-				       "gpio10", "gpio11", "gpio12", "gpio13",
-				       "gpio14", "gpio15", "gpio16", "gpio17",
-				       "gpio18", "gpio19", "gpio20", "gpio21";
-				bias-disable;
-			};
-			rp1_dpi_18bit_cpadhi_gpio2: rp1_dpi_18bit_cpadhi_gpio2 { /* Mode 6 */
-				function = "dpi";
-				pins = "gpio2", "gpio3", "gpio4", "gpio5",
-				       "gpio6", "gpio7", "gpio8", "gpio9",
-				       "gpio12", "gpio13", "gpio14", "gpio15",
-				       "gpio16", "gpio17",
-				       "gpio20", "gpio21", "gpio22", "gpio23",
-				       "gpio24", "gpio25";
-				bias-disable;
-			};
-			rp1_dpi_24bit_gpio2: rp1_dpi_24bit_gpio2 { /* Mode 7 */
-				function = "dpi";
-				pins = "gpio2", "gpio3", "gpio4", "gpio5",
-				       "gpio6", "gpio7", "gpio8", "gpio9",
-				       "gpio10", "gpio11", "gpio12", "gpio13",
-				       "gpio14", "gpio15", "gpio16", "gpio17",
-				       "gpio18", "gpio19", "gpio20", "gpio21",
-				       "gpio22", "gpio23", "gpio24", "gpio25",
-				       "gpio26", "gpio27";
-				bias-disable;
-			};
-			rp1_dpi_hvsync: rp1_dpi_hvsync { /* Sync only, for use with int VDAC */
-				function = "dpi";
-				pins = "gpio2", "gpio3";
-				bias-disable;
-			};
-
-			// More DPI mappings, including PIXCLK,DE on GPIOs 0,1
-			rp1_dpi_16bit_gpio0: rp1_dpi_16bit_gpio0 { /* Mode 2, not fully supported by RP1 */
-				function = "dpi";
-				pins = "gpio0", "gpio1", "gpio2", "gpio3",
-				       "gpio4", "gpio5", "gpio6", "gpio7",
-				       "gpio8", "gpio9", "gpio10", "gpio11",
-				       "gpio12", "gpio13", "gpio14", "gpio15",
-				       "gpio16", "gpio17", "gpio18", "gpio19";
-				bias-disable;
-			};
-			rp1_dpi_16bit_cpadhi_gpio0: rp1_dpi_16bit_cpadhi_gpio0 { /* Mode 3 */
-				function = "dpi";
-				pins = "gpio0", "gpio1", "gpio2", "gpio3",
-				       "gpio4", "gpio5", "gpio6", "gpio7",
-				       "gpio8",
-				       "gpio12", "gpio13", "gpio14", "gpio15",
-				       "gpio16", "gpio17",
-				       "gpio20", "gpio21", "gpio22", "gpio23",
-				       "gpio24";
-				bias-disable;
-			};
-			rp1_dpi_16bit_pad666_gpio0: rp1_dpi_16bit_pad666_gpio0 { /* Mode 4 */
-				function = "dpi";
-				pins = "gpio0", "gpio1", "gpio2", "gpio3",
-				       "gpio5", "gpio6", "gpio7", "gpio8",
-				       "gpio9",
-				       "gpio12", "gpio13", "gpio14", "gpio15",
-				       "gpio16", "gpio17",
-				       "gpio21", "gpio22", "gpio23", "gpio24",
-				       "gpio25";
-				bias-disable;
-			};
-			rp1_dpi_18bit_gpio0: rp1_dpi_18bit_gpio0 { /* Mode 5, not fully supported by RP1 */
-				function = "dpi";
-				pins = "gpio0", "gpio1", "gpio2", "gpio3",
-				       "gpio4", "gpio5", "gpio6", "gpio7",
-				       "gpio8", "gpio9", "gpio10", "gpio11",
-				       "gpio12", "gpio13", "gpio14", "gpio15",
-				       "gpio16", "gpio17", "gpio18", "gpio19",
-				       "gpio20", "gpio21";
-				bias-disable;
-			};
-			rp1_dpi_18bit_cpadhi_gpio0: rp1_dpi_18bit_cpadhi_gpio0 { /* Mode 6 */
-				function = "dpi";
-				pins = "gpio0", "gpio1", "gpio2", "gpio3",
-				       "gpio4", "gpio5", "gpio6", "gpio7",
-				       "gpio8", "gpio9",
-				       "gpio12", "gpio13", "gpio14", "gpio15",
-				       "gpio16", "gpio17",
-				       "gpio20", "gpio21", "gpio22", "gpio23",
-				       "gpio24", "gpio25";
-				bias-disable;
-			};
-			rp1_dpi_24bit_gpio0: rp1_dpi_24bit_gpio0 { /* Mode 7 -- All GPIOs used! */
-				function = "dpi";
-				pins = "gpio0", "gpio1", "gpio2", "gpio3",
-				       "gpio4", "gpio5", "gpio6", "gpio7",
-				       "gpio8", "gpio9", "gpio10", "gpio11",
-				       "gpio12", "gpio13", "gpio14", "gpio15",
-				       "gpio16", "gpio17", "gpio18", "gpio19",
-				       "gpio20", "gpio21", "gpio22", "gpio23",
-				       "gpio24", "gpio25", "gpio26", "gpio27";
-				bias-disable;
-			};
-
-			rp1_gpclksrc0_gpio4: rp1_gpclksrc0_gpio4 {
-				function = "gpclk0";
-				pins = "gpio4";
-				bias-disable;
-			};
-
-			rp1_gpclksrc0_gpio20: rp1_gpclksrc0_gpio20 {
-				function = "gpclk0";
-				pins = "gpio20";
-				bias-disable;
-			};
-
-			rp1_gpclksrc1_gpio5: rp1_gpclksrc1_gpio5 {
-				function = "gpclk1";
-				pins = "gpio5";
-				bias-disable;
-			};
-
-			rp1_gpclksrc1_gpio18: rp1_gpclksrc1_gpio18 {
-				function = "gpclk1";
-				pins = "gpio18";
-				bias-disable;
-			};
-
-			rp1_gpclksrc1_gpio21: rp1_gpclksrc1_gpio21 {
-				function = "gpclk1";
-				pins = "gpio21";
-				bias-disable;
-			};
-
-			rp1_pwm1_gpio45: rp1_pwm1_gpio45 {
-				function = "pwm1";
-				pins = "gpio45";
-				bias-pull-down;
-			};
-
-			rp1_spi0_gpio9: rp1_spi0_gpio9 {
-				function = "spi0";
-				pins = "gpio9", "gpio10", "gpio11";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
-
-			rp1_spi0_cs_gpio7: rp1_spi0_cs_gpio7 {
-				function = "spi0";
-				pins = "gpio7", "gpio8";
-				bias-pull-up;
-			};
-
-			rp1_spi1_gpio19: rp1_spi1_gpio19 {
-				function = "spi1";
-				pins = "gpio19", "gpio20", "gpio21";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
-
-			rp1_spi2_gpio1: rp1_spi2_gpio1 {
-				function = "spi2";
-				pins = "gpio1", "gpio2", "gpio3";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
-
-			rp1_spi3_gpio5: rp1_spi3_gpio5 {
-				function = "spi3";
-				pins = "gpio5", "gpio6", "gpio7";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
-
-			rp1_spi4_gpio9: rp1_spi4_gpio9 {
-				function = "spi4";
-				pins = "gpio9", "gpio10", "gpio11";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
-
-			rp1_spi5_gpio13: rp1_spi5_gpio13 {
-				function = "spi5";
-				pins = "gpio13", "gpio14", "gpio15";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
-
-			rp1_spi8_gpio49: rp1_spi8_gpio49 {
-				function = "spi8";
-				pins = "gpio49", "gpio50", "gpio51";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
-
-			rp1_spi8_cs_gpio52: rp1_spi8_cs_gpio52 {
-				function = "spi0";
-				pins = "gpio52", "gpio53";
-				bias-pull-up;
-			};
-		};
-
-		rp1_eth: ethernet@100000 {
-			reg = <0xc0 0x40100000  0x0 0x4000>;
-			compatible = "cdns,macb";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			interrupts = <RP1_INT_ETH IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&macb_pclk &macb_hclk &rp1_clocks RP1_CLK_ETH_TSU>;
-			clock-names = "pclk", "hclk", "tsu_clk";
-			phy-mode = "rgmii-id";
-			cdns,aw2w-max-pipe = /bits/ 8 <8>;
-			cdns,ar2r-max-pipe = /bits/ 8 <8>;
-			cdns,use-aw2b-fill;
-			local-mac-address = [00 00 00 00 00 00];
-			status = "disabled";
-		};
-
-		rp1_csi0: csi@110000 {
-			compatible = "raspberrypi,rp1-cfe";
-			reg = <0xc0 0x40110000  0x0 0x100>, // CSI2 DMA address
-			      <0xc0 0x40114000  0x0 0x100>, // PHY/CSI Host address
-			      <0xc0 0x40120000  0x0 0x100>, // MIPI CFG address
-			      <0xc0 0x40124000  0x0 0x1000>; // PiSP FE address
-
-			// interrupts must match rp1_pisp_fe setup
-			interrupts = <RP1_INT_MIPI0 IRQ_TYPE_LEVEL_HIGH>;
-
-			clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
-			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
-			assigned-clock-rates = <25000000>;
-
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		rp1_csi1: csi@128000 {
-			compatible = "raspberrypi,rp1-cfe";
-			reg = <0xc0 0x40128000  0x0 0x100>, // CSI2 DMA address
-			      <0xc0 0x4012c000  0x0 0x100>, // PHY/CSI Host address
-			      <0xc0 0x40138000  0x0 0x100>, // MIPI CFG address
-			      <0xc0 0x4013c000  0x0 0x1000>; // PiSP FE address
-
-			// interrupts must match rp1_pisp_fe setup
-			interrupts = <RP1_INT_MIPI1 IRQ_TYPE_LEVEL_HIGH>;
-
-			clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
-			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
-			assigned-clock-rates = <25000000>;
-
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		rp1_mmc0: mmc@180000 {
-			reg = <0xc0 0x40180000  0x0 0x100>;
-			compatible = "raspberrypi,rp1-dwcmshc";
-			interrupts = <RP1_INT_SDIO0 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS &sdhci_core
-			          &rp1_clocks RP1_CLK_SDIO_TIMER
-			          &rp1_sdio_clk0>;
-			clock-names = "bus", "core", "timeout", "sdio";
-			/* Bank 0 VDDIO is fixed */
-			no-1-8-v;
-			bus-width = <4>;
-			vmmc-supply = <&rp1_vdd_3v3>;
-			broken-cd;
-			status = "disabled";
-		};
-
-		rp1_mmc1: mmc@184000 {
-			reg = <0xc0 0x40184000  0x0 0x100>;
-			compatible = "raspberrypi,rp1-dwcmshc";
-			interrupts = <RP1_INT_SDIO1 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS &sdhci_core
-			          &rp1_clocks RP1_CLK_SDIO_TIMER
-			          &rp1_sdio_clk1>;
-			clock-names = "bus", "core", "timeout", "sdio";
-			bus-width = <4>;
-			vmmc-supply = <&rp1_vdd_3v3>;
-			/* Nerf SDR speeds */
-			sdhci-caps-mask = <0x3 0x0>;
-			broken-cd;
-			status = "disabled";
-		};
-
-		rp1_dma: dma@188000 {
-			reg = <0xc0 0x40188000  0x0 0x1000>;
-			compatible = "snps,axi-dma-1.01a";
-			interrupts = <RP1_INT_DMA IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&sdhci_core &rp1_clocks RP1_CLK_SYS>;
-			clock-names = "core-clk", "cfgr-clk";
-
-			#dma-cells = <1>;
-			dma-channels = <8>;
-			snps,dma-masters = <1>;
-			snps,dma-targets = <64>;
-			snps,data-width = <4>; // (8 << 4) == 128 bits
-			snps,block-size = <0x40000 0x40000 0x40000 0x40000 0x40000 0x40000 0x40000 0x40000>;
-			snps,priority = <0 1 2 3 4 5 6 7>;
-			snps,axi-max-burst-len = <8>;
-			status = "disabled";
-		};
-
-		rp1_usb0: usb@200000 {
-			reg = <0xc0 0x40200000  0x0 0x100000>;
-			compatible = "snps,dwc3";
-			dr_mode = "host";
-			usb3-lpm-capable;
-			snps,axi-pipe-limit = /bits/ 8 <8>;
-			snps,dis_rxdet_inp3_quirk;
-			snps,parkmode-disable-ss-quirk;
-			snps,parkmode-disable-hs-quirk;
-			snps,parkmode-disable-fsls-quirk;
-			snps,tx-max-burst = /bits/ 8 <8>;
-			snps,tx-thr-num-pkt = /bits/ 8 <2>;
-			interrupts = <RP1_INT_USBHOST0_0 IRQ_TYPE_EDGE_RISING>;
-			status = "disabled";
-		};
-
-		rp1_usb1: usb@300000 {
-			reg = <0xc0 0x40300000  0x0 0x100000>;
-			compatible = "snps,dwc3";
-			dr_mode = "host";
-			usb3-lpm-capable;
-			snps,axi-pipe-limit = /bits/ 8 <8>;
-			snps,dis_rxdet_inp3_quirk;
-			snps,parkmode-disable-ss-quirk;
-			snps,parkmode-disable-hs-quirk;
-			snps,parkmode-disable-fsls-quirk;
-			snps,tx-max-burst = /bits/ 8 <8>;
-			snps,tx-thr-num-pkt = /bits/ 8 <2>;
-			interrupts = <RP1_INT_USBHOST1_0 IRQ_TYPE_EDGE_RISING>;
-			status = "disabled";
-		};
-
-		rp1_dsi0: dsi@110000 {
-			compatible = "raspberrypi,rp1dsi";
-			status = "disabled";
-			reg = <0xc0 0x40118000  0x0 0x1000>,  // MIPI0 DSI DMA (ArgonDPI)
-			      <0xc0 0x4011c000  0x0 0x1000>,  // MIPI0 DSI Host (SNPS)
-			      <0xc0 0x40120000  0x0 0x1000>;  // MIPI0 CFG
-
-			interrupts = <RP1_INT_MIPI0 IRQ_TYPE_LEVEL_HIGH>;
-
-			clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>,
-				 <&rp1_clocks RP1_CLK_MIPI0_DPI>,
-				 <&rp1_clocks RP1_CLK_MIPI0_DSI_BYTECLOCK>,
-				 <&clk_xosc>,                // hardwired to DSI "refclk"
-				 <&rp1_clocks RP1_PLL_SYS>;  // alternate parent for divide
-			clock-names = "cfgclk", "dpiclk", "byteclk", "refclk", "pllsys";
-
-			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
-			assigned-clock-rates = <25000000>;
-		};
-
-		rp1_dsi1: dsi@128000 {
-			compatible = "raspberrypi,rp1dsi";
-			status = "disabled";
-			reg = <0xc0 0x40130000  0x0 0x1000>,  // MIPI1 DSI DMA (ArgonDPI)
-		              <0xc0 0x40134000  0x0 0x1000>,  // MIPI1 DSI Host (SNPS)
-		              <0xc0 0x40138000  0x0 0x1000>;  // MIPI1 CFG
-
-			interrupts = <RP1_INT_MIPI1 IRQ_TYPE_LEVEL_HIGH>;
-
-			clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>,
-				 <&rp1_clocks RP1_CLK_MIPI1_DPI>,
-				 <&rp1_clocks RP1_CLK_MIPI1_DSI_BYTECLOCK>,
-				 <&clk_xosc>,               // hardwired to DSI "refclk"
-				 <&rp1_clocks RP1_PLL_SYS>; // alternate parent for divide
-			clock-names = "cfgclk", "dpiclk", "byteclk", "refclk", "pllsys";
-
-			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
-			assigned-clock-rates = <25000000>;
-		};
-
-		/* VEC and DPI both need to control PLL_VIDEO and cannot work together;   */
-		/* config.txt should enable one or other using dtparam=vec or an overlay. */
-		rp1_vec: vec@144000 {
-			compatible = "raspberrypi,rp1vec";
-			status = "disabled";
-			reg = <0xc0 0x40144000  0x0 0x1000>, // VIDEO_OUT_VEC
-			      <0xc0 0x40140000  0x0 0x1000>; // VIDEO_OUT_CFG
-
-			interrupts = <RP1_INT_VIDEO_OUT IRQ_TYPE_LEVEL_HIGH>;
-
-			clocks = <&rp1_clocks RP1_CLK_VEC>;
-
-			assigned-clocks = <&rp1_clocks RP1_PLL_VIDEO_CORE>,
-					  <&rp1_clocks RP1_PLL_VIDEO_SEC>,
-					  <&rp1_clocks RP1_CLK_VEC>;
-			assigned-clock-rates = <1188000000>,
-					       <108000000>,
-					       <108000000>;
-			assigned-clock-parents = <0>,
-						 <&rp1_clocks RP1_PLL_VIDEO_CORE>,
-						 <&rp1_clocks RP1_PLL_VIDEO_SEC>;
-		};
-
-		rp1_dpi: dpi@148000 {
-			compatible = "raspberrypi,rp1dpi";
-			status = "disabled";
-			reg = <0xc0 0x40148000  0x0 0x1000>, // VIDEO_OUT DPI
-			      <0xc0 0x40140000  0x0 0x1000>; // VIDEO_OUT_CFG
-
-			interrupts = <RP1_INT_VIDEO_OUT IRQ_TYPE_LEVEL_HIGH>;
-
-			clocks = <&rp1_clocks RP1_CLK_DPI>,        // DPI pixel clock
-				 <&rp1_clocks RP1_PLL_VIDEO>,      // PLL primary divider, and
-				 <&rp1_clocks RP1_PLL_VIDEO_CORE>; // VCO, which we also control
-			clock-names = "dpiclk", "plldiv", "pllcore";
-
-			assigned-clocks        = <&rp1_clocks RP1_CLK_DPI>;
-			assigned-clock-parents = <&rp1_clocks RP1_PLL_VIDEO>;
-		};
-	};
-};
-
-&clocks {
-	clk_xosc: clk_xosc {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-output-names = "xosc";
-		clock-frequency = <50000000>;
-	};
-	macb_pclk: macb_pclk {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-output-names = "pclk";
-		clock-frequency = <200000000>;
-	};
-	macb_hclk: macb_hclk {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-output-names = "hclk";
-		clock-frequency = <200000000>;
-	};
-	sdio_src: sdio_src {
-		// 400 MHz on FPGA. PLL sys VCO on asic
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-output-names = "src";
-		clock-frequency = <1000000000>;
-	};
-	sdhci_core: sdhci_core {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-output-names = "core";
-		clock-frequency = <50000000>;
-	};
-	/* GPIO derived clock sources. Each GPIO with a GPCLK function
-	 * can drive its output from the respective GPCLK
-	 * generator, and provide a clock source to other internal
-	 * dividers. Add dummy sources here so that they can be overridden
-	 * with overlays.
-	 */
-	clksrc_gp0: clksrc_gp0 {
-		status = "disabled";
-		compatible = "fixed-factor-clock";
-		#clock-cells = <0>;
-		clock-div = <1>;
-		clock-mult = <1>;
-		clocks = <&rp1_clocks RP1_CLK_GP0>;
-		clock-output-names = "clksrc_gp0";
-	};
-	clksrc_gp1: clksrc_gp1 {
-		status = "disabled";
-		compatible = "fixed-factor-clock";
-		#clock-cells = <0>;
-		clock-div = <1>;
-		clock-mult = <1>;
-		clocks = <&rp1_clocks RP1_CLK_GP1>;
-		clock-output-names = "clksrc_gp1";
-	};
-	clksrc_gp2: clksrc_gp2 {
-		status = "disabled";
-		compatible = "fixed-factor-clock";
-		clock-div = <1>;
-		clock-mult = <1>;
-		#clock-cells = <0>;
-		clocks = <&rp1_clocks RP1_CLK_GP2>;
-		clock-output-names = "clksrc_gp2";
-	};
-	clksrc_gp3: clksrc_gp3 {
-		status = "disabled";
-		compatible = "fixed-factor-clock";
-		clock-div = <1>;
-		clock-mult = <1>;
-		#clock-cells = <0>;
-		clocks = <&rp1_clocks RP1_CLK_GP3>;
-		clock-output-names = "clksrc_gp3";
-	};
-	clksrc_gp4: clksrc_gp4 {
-		status = "disabled";
-		compatible = "fixed-factor-clock";
-		#clock-cells = <0>;
-		clock-div = <1>;
-		clock-mult = <1>;
-		clocks = <&rp1_clocks RP1_CLK_GP4>;
-		clock-output-names = "clksrc_gp4";
-	};
-	clksrc_gp5: clksrc_gp5 {
-		status = "disabled";
-		compatible = "fixed-factor-clock";
-		#clock-cells = <0>;
-		clock-div = <1>;
-		clock-mult = <1>;
-		clocks = <&rp1_clocks RP1_CLK_GP5>;
-		clock-output-names = "clksrc_gp5";
-	};
-};
-
-/ {
-	rp1_vdd_3v3: rp1_vdd_3v3 {
-		compatible = "regulator-fixed";
-		regulator-name = "vdd-3v3";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-always-on;
-	};
-};
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
@@ -0,0 +1,351 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <dt-bindings/power/raspberrypi-power.h>
+
+&soc {
+	firmware: firmware {
+		compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		mboxes = <&mailbox>;
+		dma-ranges;
+
+		firmware_clocks: clocks {
+			compatible = "raspberrypi,firmware-clocks";
+			#clock-cells = <1>;
+		};
+
+		reset: reset {
+			compatible = "raspberrypi,firmware-reset";
+			#reset-cells = <1>;
+		};
+
+		vcio: vcio {
+			compatible = "raspberrypi,vcio";
+		};
+	};
+
+	power: power {
+		compatible = "raspberrypi,bcm2835-power";
+		firmware = <&firmware>;
+		#power-domain-cells = <1>;
+	};
+
+	fb: fb {
+		compatible = "brcm,bcm2708-fb";
+		firmware = <&firmware>;
+		status = "okay";
+	};
+
+	rpi_rtc: rpi_rtc {
+		compatible = "raspberrypi,rpi-rtc";
+		firmware = <&firmware>;
+		status = "okay";
+		trickle-charge-microvolt = <0>;
+	};
+
+	nvmem {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		nvmem_otp: nvmem_otp {
+			compatible = "raspberrypi,rpi-otp";
+			firmware = <&firmware>;
+			reg = <0 192>;
+			status = "okay";
+		};
+
+		nvmem_cust: nvmem_cust {
+			compatible = "raspberrypi,rpi-otp";
+			firmware = <&firmware>;
+			reg = <1 8>;
+			status = "okay";
+		};
+
+		nvmem_mac: nvmem_mac {
+			compatible = "raspberrypi,rpi-otp";
+			firmware = <&firmware>;
+			reg = <2 6>;
+			status = "okay";
+		};
+
+		nvmem_priv: nvmem_priv {
+			compatible = "raspberrypi,rpi-otp";
+			firmware = <&firmware>;
+			reg = <3 16>;
+			status = "okay";
+		};
+	};
+
+	/* Define these notional regulators for use by overlays, etc. */
+	vdd_3v3_reg: fixedregulator_3v3 {
+		compatible = "regulator-fixed";
+		regulator-always-on;
+		regulator-max-microvolt = <3300000>;
+		regulator-min-microvolt = <3300000>;
+		regulator-name = "3v3";
+	};
+
+	vdd_5v0_reg: fixedregulator_5v0 {
+		compatible = "regulator-fixed";
+		regulator-always-on;
+		regulator-max-microvolt = <5000000>;
+		regulator-min-microvolt = <5000000>;
+		regulator-name = "5v0";
+	};
+};
+
+/ {
+	__overrides__ {
+		arm_freq;
+		axiperf = <&axiperf>,"status";
+
+		nvmem_cust_rw = <&nvmem_cust>,"rw?";
+		nvmem_priv_rw = <&nvmem_priv>,"rw?";
+		nvmem_mac_rw = <&nvmem_mac>,"rw?";
+		strict_gpiod = <&chosen>, "bootargs=pinctrl_rp1.persist_gpio_outputs=n";
+
+		cam0_reg = <&cam0_reg>,"status";
+		cam0_reg_gpio = <&cam0_reg>,"gpio:4",
+				<&cam0_reg>,"gpio:0=", <&gpio>;
+		cam1_reg = <&cam1_reg>,"status";
+		cam1_reg_gpio = <&cam1_reg>,"gpio:4",
+				<&cam1_reg>,"gpio:0=", <&gpio>;
+
+	};
+};
+
+pciex1: &pcie1 { };
+pciex4: &pcie2 { };
+
+&dma32 {
+	/* The VPU firmware uses DMA channel 11 for VCHIQ */
+	brcm,dma-channel-mask = <0x03f>;
+};
+
+&dma40 {
+	/* The VPU firmware DMA channel 11 for VCHIQ */
+	brcm,dma-channel-mask = <0x07c0>;
+};
+
+&hdmi0 {
+	dmas = <&dma40 (10|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
+};
+
+&hdmi1 {
+	dmas = <&dma40 (17|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
+};
+
+&spi10 {
+	dmas = <&dma40 6>, <&dma40 7>;
+	dma-names = "tx", "rx";
+};
+
+&usb {
+	power-domains = <&power RPI_POWER_DOMAIN_USB>;
+};
+
+&rmem {
+	/*
+	 * RPi5's co-processor will copy the board's bootloader configuration
+	 * into memory for the OS to consume. It'll also update this node with
+	 * its placement information.
+	 */
+	blconfig: nvram@0 {
+		compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		reg = <0x0 0x0 0x0>;
+		no-map;
+		status = "disabled";
+	};
+	/*
+	 * RPi5 will copy the binary public key blob (if present) from the bootloader
+	 * into memory for use by the OS.
+	 */
+	blpubkey: nvram@1 {
+		compatible = "raspberrypi,bootloader-public-key", "nvmem-rmem";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		reg = <0x0 0x0 0x0>;
+		no-map;
+		status = "disabled";
+	};
+};
+
+&rp1_adc {
+	status = "okay";
+};
+
+/* Add some gpiomem nodes to make the devices accessible to userspace.
+ * /dev/gpiomem<n> should expose the registers for the interface with DT alias
+ * gpio<n>.
+ */
+
+&rp1 {
+	gpiomem@d0000 {
+		/* Export IO_BANKs, RIO_BANKs and PADS_BANKs to userspace */
+		compatible = "raspberrypi,gpiomem";
+		reg = <0xc0 0x400d0000  0x0 0x30000>;
+		chardev-name = "gpiomem0";
+	};
+};
+
+&soc {
+	gpiomem@7d508500 {
+		compatible = "raspberrypi,gpiomem";
+		reg = <0x7d508500 0x40>;
+		chardev-name = "gpiomem1";
+	};
+
+	gpiomem@7d517c00 {
+		compatible = "raspberrypi,gpiomem";
+		reg = <0x7d517c00 0x40>;
+		chardev-name = "gpiomem2";
+	};
+
+	gpiomem@7d504100 {
+		compatible = "raspberrypi,gpiomem";
+		reg = <0x7d504100 0x20>;
+		chardev-name = "gpiomem3";
+	};
+
+	gpiomem@7d510700 {
+		compatible = "raspberrypi,gpiomem";
+		reg = <0x7d510700 0x20>;
+		chardev-name = "gpiomem4";
+	};
+
+	sound: sound {
+		status = "disabled";
+	};
+};
+
+i2c0: &rp1_i2c0 { };
+i2c1: &rp1_i2c1 { };
+i2c2: &rp1_i2c2 { };
+i2c3: &rp1_i2c3 { };
+i2c4: &rp1_i2c4 { };
+i2c5: &rp1_i2c5 { };
+i2c6: &rp1_i2c6 { };
+i2s:  &rp1_i2s0 { };
+i2s_clk_producer: &rp1_i2s0 { };
+i2s_clk_consumer: &rp1_i2s1 { };
+pwm0: &rp1_pwm0 { };
+pwm1: &rp1_pwm1 { };
+pwm: &pwm0 { };
+spi0: &rp1_spi0 { };
+spi1: &rp1_spi1 { };
+spi2: &rp1_spi2 { };
+spi3: &rp1_spi3 { };
+spi4: &rp1_spi4 { };
+spi5: &rp1_spi5 { };
+
+uart0_pins: &rp1_uart0_14_15 {};
+uart0_ctsrts_pins: &rp1_uart0_ctsrts_16_17 {};
+uart0: &rp1_uart0 {
+	pinctrl-0 = <&uart0_pins>;
+};
+
+uart1_pins: &rp1_uart1_0_1 {};
+uart1_ctsrts_pins: &rp1_uart1_ctsrts_2_3 {};
+uart1: &rp1_uart1 { };
+
+uart2_pins: &rp1_uart2_4_5 {};
+uart2_ctsrts_pins: &rp1_uart2_ctsrts_6_7 {};
+uart2: &rp1_uart2 { };
+
+uart3_pins: &rp1_uart3_8_9 {};
+uart3_ctsrts_pins: &rp1_uart3_ctsrts_10_11 {};
+uart3: &rp1_uart3 { };
+
+uart4_pins: &rp1_uart4_12_13 {};
+uart4_ctsrts_pins: &rp1_uart4_ctsrts_14_15 {};
+uart4: &rp1_uart4 { };
+
+i2c0_pins: &rp1_i2c0_0_1 {};
+i2c_vc: &i2c0 {      // This is pins 27,28 on the header (not MIPI)
+	pinctrl-0 = <&i2c0_pins>;
+	pinctrl-names = "default";
+	clock-frequency = <100000>;
+};
+
+i2c1_pins: &rp1_i2c1_2_3 {};
+i2c_arm: &i2c1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_pins>;
+	clock-frequency = <100000>;
+};
+
+i2c2_pins: &rp1_i2c2_4_5 {};
+&i2c2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c2_pins>;
+};
+
+i2c3_pins: &rp1_i2c3_6_7 {};
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c3_pins>;
+};
+
+&i2s_clk_producer {
+	pinctrl-names = "default";
+	pinctrl-0 = <&rp1_i2s0_18_21>;
+};
+
+&i2s_clk_consumer {
+	pinctrl-names = "default";
+	pinctrl-0 = <&rp1_i2s1_18_21>;
+};
+
+spi0_pins: &rp1_spi0_gpio9 {};
+spi0_cs_pins: &rp1_spi0_cs_gpio7 {};
+
+&spi0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
+	cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
+
+	spidev0: spidev@0 {
+		compatible = "spidev";
+		reg = <0>;	/* CE0 */
+		#address-cells = <1>;
+		#size-cells = <0>;
+		spi-max-frequency = <125000000>;
+	};
+
+	spidev1: spidev@1 {
+		compatible = "spidev";
+		reg = <1>;	/* CE1 */
+		#address-cells = <1>;
+		#size-cells = <0>;
+		spi-max-frequency = <125000000>;
+	};
+};
+
+spi2_pins: &rp1_spi2_gpio1 {};
+&spi2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi2_pins>;
+};
+
+spi3_pins: &rp1_spi3_gpio5 {};
+&spi3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi3_pins>;
+};
+
+spi4_pins: &rp1_spi4_gpio9 {};
+&spi4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi4_pins>;
+};
+
+spi5_pins: &rp1_spi5_gpio13 {};
+&spi5 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi5_pins>;
+};
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
@@ -0,0 +1,1302 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/soc/bcm2835-pm.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+	compatible = "brcm,bcm2712", "brcm,bcm2711";
+	model = "BCM2712";
+
+	#address-cells = <2>;
+	#size-cells = <1>;
+
+	interrupt-parent = <&gicv2>;
+
+	rmem: reserved-memory {
+		#address-cells = <2>;
+		#size-cells = <1>;
+		ranges;
+
+		atf@0 {
+			reg = <0x0 0x0 0x80000>;
+			no-map;
+		};
+
+		cma: linux,cma {
+			compatible = "shared-dma-pool";
+			size = <0x4000000>; /* 64MB */
+			reusable;
+			linux,cma-default;
+
+			/*
+			 * arm64 reserves the CMA by default somewhere in
+			 * ZONE_DMA32, that's not good enough for the BCM2711
+			 * as some devices can only address the lower 1G of
+			 * memory (ZONE_DMA).
+			 */
+			alloc-ranges = <0x0 0x00000000 0x40000000>;
+		};
+	};
+
+	thermal-zones {
+		cpu_thermal: cpu-thermal {
+			polling-delay-passive = <2000>;
+			polling-delay = <1000>;
+			coefficients = <(-550) 450000>;
+			thermal-sensors = <&thermal>;
+
+			thermal_trips: trips {
+				cpu_crit: cpu-crit {
+					temperature	= <110000>;
+					hysteresis	= <0>;
+					type		= "critical";
+				};
+			};
+
+			cooling_maps: cooling-maps {
+			};
+		};
+	};
+
+	clk_27MHz: clk-27M {
+		#clock-cells = <0>;
+		compatible = "fixed-clock";
+		clock-frequency = <27000000>;
+		clock-output-names = "27MHz-clock";
+	};
+
+	clk_108MHz: clk-108M {
+		#clock-cells = <0>;
+		compatible = "fixed-clock";
+		clock-frequency = <108000000>;
+		clock-output-names = "108MHz-clock";
+	};
+
+	hvs: hvs@107c580000 {
+		compatible = "brcm,bcm2712-hvs";
+		reg = <0x10 0x7c580000 0x1a000>;
+		interrupt-parent = <&disp_intr>;
+		interrupts = <2>, <9>, <16>;
+		interrupt-names = "ch0-eof", "ch1-eof", "ch2-eof";
+		//iommus = <&iommu4>;
+		status = "disabled";
+	};
+
+	soc: soc {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		ranges     = <0x7c000000  0x10 0x7c000000  0x04000000>;
+		/* Emulate a contiguous 30-bit address range for DMA */
+		dma-ranges = <0xc0000000  0x00 0x00000000  0x40000000>,
+			     <0x7c000000  0x10 0x7c000000  0x04000000>;
+
+		system_timer: timer@7c003000 {
+			compatible = "brcm,bcm2835-system-timer";
+			reg = <0x7c003000 0x1000>;
+			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
+		     		     <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
+		     		     <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+			clock-frequency = <1000000>;
+		};
+
+		firmwarekms: firmwarekms@7d503000 {
+			compatible = "raspberrypi,rpi-firmware-kms-2712";
+			/* SUN_L2 interrupt reg */
+			reg = <0x7d503000 0x18>;
+			interrupt-parent = <&cpu_l2_irq>;
+			interrupts = <19>;
+			brcm,firmware = <&firmware>;
+			status = "disabled";
+		};
+
+		axiperf: axiperf {
+			compatible = "brcm,bcm2712-axiperf";
+			reg = <0x7c012800 0x100>,
+				<0x7e000000 0x100>;
+			firmware = <&firmware>;
+			status = "disabled";
+		};
+
+		mailbox: mailbox@7c013880 {
+			compatible = "brcm,bcm2835-mbox";
+			reg = <0x7c013880 0x40>;
+			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+			#mbox-cells = <0>;
+		};
+
+		pixelvalve0: pixelvalve@7c410000 {
+			compatible = "brcm,bcm2712-pixelvalve0";
+			reg = <0x7c410000 0x100>;
+			interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+		};
+
+		pixelvalve1: pixelvalve@7c411000 {
+			compatible = "brcm,bcm2712-pixelvalve1";
+			reg = <0x7c411000 0x100>;
+			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+		};
+
+		mop: mop@7c500000 {
+			compatible = "brcm,bcm2712-mop";
+			reg = <0x7c500000 0x28>;
+			interrupt-parent = <&disp_intr>;
+			interrupts = <1>;
+			status = "disabled";
+		};
+
+		moplet: moplet@7c501000 {
+			compatible = "brcm,bcm2712-moplet";
+			reg = <0x7c501000 0x20>;
+			interrupt-parent = <&disp_intr>;
+			interrupts = <0>;
+			status = "disabled";
+		};
+
+		disp_intr: interrupt-controller@7c502000 {
+			compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
+			reg = <0x7c502000 0x30>;
+			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			status = "disabled";
+		};
+
+		dvp: clock@7c700000 {
+			compatible = "brcm,brcm2711-dvp";
+			reg = <0x7c700000 0x10>;
+			clocks = <&clk_108MHz>;
+			#clock-cells = <1>;
+			#reset-cells = <1>;
+		};
+
+		/*
+		 * This node is the provider for the enable-method for
+		 * bringing up secondary cores.
+		 */
+		local_intc: local_intc@7cd00000 {
+			compatible = "brcm,bcm2836-l1-intc";
+			reg = <0x7cd00000 0x100>;
+		};
+
+		uart0: serial@7d001000 {
+			compatible = "arm,pl011", "arm,primecell";
+			reg = <0x7d001000 0x200>;
+			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_uart>,
+				 <&clk_vpu>;
+			clock-names = "uartclk", "apb_pclk";
+			arm,primecell-periphid = <0x00241011>;
+			status = "disabled";
+		};
+
+		uart2: serial@7d001400 {
+			compatible = "arm,pl011", "arm,primecell";
+			reg = <0x7d001400 0x200>;
+			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_uart>,
+				 <&clk_vpu>;
+			clock-names = "uartclk", "apb_pclk";
+			arm,primecell-periphid = <0x00241011>;
+			status = "disabled";
+		};
+
+		uart5: serial@7d001a00 {
+			compatible = "arm,pl011", "arm,primecell";
+			reg = <0x7d001a00 0x200>;
+			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_uart>,
+				 <&clk_vpu>;
+			clock-names = "uartclk", "apb_pclk";
+			arm,primecell-periphid = <0x00241011>;
+			status = "disabled";
+		};
+
+		sdhost: mmc@7d002000 {
+			compatible = "brcm,bcm2835-sdhost";
+			reg = <0x7d002000 0x100>;
+			//interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			status = "disabled";
+		};
+
+		i2s: i2s@7d003000 {
+			compatible = "brcm,bcm2835-i2s";
+			reg = <0x7d003000 0x24>;
+			//clocks = <&cprman BCM2835_CLOCK_PCM>;
+			status = "disabled";
+		};
+
+		spi0: spi@7d004000 {
+			compatible = "brcm,bcm2835-spi";
+			reg = <0x7d004000 0x200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			num-cs = <1>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi3: spi@7d004600 {
+			compatible = "brcm,bcm2835-spi";
+			reg = <0x7d004600 0x0200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi4: spi@7d004800 {
+			compatible = "brcm,bcm2835-spi";
+			reg = <0x7d004800 0x0200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi5: spi@7d004a00 {
+			compatible = "brcm,bcm2835-spi";
+			reg = <0x7d004a00 0x0200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		spi6: spi@7d004c00 {
+			compatible = "brcm,bcm2835-spi";
+			reg = <0x7d004c00 0x0200>;
+			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c0: i2c@7d005000 {
+			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+			reg = <0x7d005000 0x20>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c3: i2c@7d005600 {
+			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+			reg = <0x7d005600 0x20>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c4: i2c@7d005800 {
+			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+			reg = <0x7d005800 0x20>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c5: i2c@7d005a00 {
+			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+			reg = <0x7d005a00 0x20>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c6: i2c@7d005c00 {
+			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+			reg = <0x7d005c00 0x20>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c8: i2c@7d005e00 {
+			compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+			reg = <0x7d005e00 0x20>;
+			interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_vpu>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		pwm0: pwm@7d00c000 {
+			compatible = "brcm,bcm2835-pwm";
+			reg = <0x7d00c000 0x28>;
+			assigned-clock-rates = <50000000>;
+			#pwm-cells = <3>;
+			status = "disabled";
+		};
+
+		pwm1: pwm@7d00c800 {
+			compatible = "brcm,bcm2835-pwm";
+			reg = <0x7d00c800 0x28>;
+			assigned-clock-rates = <50000000>;
+			#pwm-cells = <3>;
+			status = "disabled";
+		};
+
+		pm: watchdog@7d200000 {
+			compatible = "brcm,bcm2712-pm";
+			reg = <0x7d200000 0x308>;
+			reg-names = "pm";
+			#power-domain-cells = <1>;
+			#reset-cells = <1>;
+			//clocks = <&cprman BCM2835_CLOCK_V3D>,
+			//	 <&cprman BCM2835_CLOCK_PERI_IMAGE>,
+			//	 <&cprman BCM2835_CLOCK_H264>,
+			//	 <&cprman BCM2835_CLOCK_ISP>;
+			clock-names = "v3d", "peri_image", "h264", "isp";
+			system-power-controller;
+		};
+
+		cprman: cprman@7d202000 {
+			compatible = "brcm,bcm2711-cprman";
+			reg = <0x7d202000 0x2000>;
+			#clock-cells = <1>;
+
+			/* CPRMAN derives almost everything from the
+			 * platform's oscillator.  However, the DSI
+			 * pixel clocks come from the DSI analog PHY.
+			 */
+			clocks = <&clk_osc>;
+			status = "disabled";
+		};
+
+		random: rng@7d208000 {
+			compatible = "brcm,bcm2711-rng200";
+			reg = <0x7d208000 0x28>;
+			status = "okay";
+		};
+
+		cpu_l2_irq: intc@7d503000 {
+			compatible = "brcm,l2-intc";
+			reg = <0x7d503000 0x18>;
+			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+		};
+
+		pinctrl: pinctrl@7d504100 {
+			compatible = "brcm,bcm2712-pinctrl";
+			reg = <0x7d504100 0x30>;
+
+			uarta_24_pins: uarta_24_pins {
+				pin_rts {
+					function = "uart0";
+					pins = "gpio24";
+					bias-disable;
+				};
+				pin_cts {
+					function = "uart0";
+					pins = "gpio25";
+					bias-pull-up;
+				};
+				pin_txd {
+					function = "uart0";
+					pins = "gpio26";
+					bias-disable;
+				};
+				pin_rxd {
+					function = "uart0";
+					pins = "gpio27";
+					bias-pull-up;
+				};
+			};
+
+			sdio2_30_pins: sdio2_30_pins {
+				pin_clk {
+					function = "sd2";
+					pins = "gpio30";
+					bias-disable;
+				};
+				pin_cmd {
+					function = "sd2";
+					pins = "gpio31";
+					bias-pull-up;
+				};
+				pins_dat {
+					function = "sd2";
+					pins = "gpio32", "gpio33", "gpio34", "gpio35";
+					bias-pull-up;
+				};
+			};
+		};
+
+		ddc0: i2c@7d508200 {
+			compatible = "brcm,brcmstb-i2c";
+			reg = <0x7d508200 0x58>;
+			interrupt-parent = <&bsc_irq>;
+			interrupts = <1>;
+			clock-frequency = <97500>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		ddc1: i2c@7d508280 {
+			compatible = "brcm,brcmstb-i2c";
+			reg = <0x7d508280 0x58>;
+			interrupt-parent = <&bsc_irq>;
+			interrupts = <2>;
+			clock-frequency = <97500>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		bscd: i2c@7d508300 {
+			compatible = "brcm,brcmstb-i2c";
+			reg = <0x7d508300 0x58>;
+			interrupt-parent = <&bsc_irq>;
+			interrupts = <0>;
+			clock-frequency = <200000>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		bsc_irq: intc@7d508380 {
+			compatible = "brcm,bcm7271-l2-intc";
+			reg = <0x7d508380 0x10>;
+			interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+		};
+
+		main_irq: intc@7d508400 {
+			compatible = "brcm,bcm7271-l2-intc";
+			reg = <0x7d508400 0x10>;
+			interrupts = <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+		};
+
+		gio: gpio@7d508500 {
+			compatible = "brcm,brcmstb-gpio";
+			reg = <0x7d508500 0x40>;
+			interrupt-parent = <&main_irq>;
+			interrupts = <0>;
+			gpio-controller;
+			#gpio-cells = <2>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
+			brcm,gpio-bank-widths = <32 22>;
+			brcm,gpio-direct;
+		};
+
+		uarta: serial@7d50c000 {
+			compatible = "brcm,bcm7271-uart";
+			reg = <0x7d50c000 0x20>;
+			reg-names = "uart";
+			reg-shift = <2>;
+			reg-io-width = <4>;
+			interrupts = <GIC_SPI 276 IRQ_TYPE_LEVEL_HIGH>;
+			skip-init;
+			status = "disabled";
+		};
+
+		uartb: serial@7d50d000 {
+			compatible = "brcm,bcm7271-uart";
+			reg = <0x7d50d000 0x20>;
+			reg-names = "uart";
+			reg-shift = <2>;
+			reg-io-width = <4>;
+			interrupts = <GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH>;
+			skip-init;
+			status = "disabled";
+		};
+
+		aon_intr: interrupt-controller@7d510600 {
+			compatible = "brcm,bcm2711-l2-intc", "brcm,l2-intc";
+			reg = <0x7d510600 0x30>;
+			interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			status = "disabled";
+		};
+
+		pinctrl_aon: pinctrl@7d510700 {
+			compatible = "brcm,bcm2712-aon-pinctrl";
+			reg = <0x7d510700 0x20>;
+
+			i2c3_m4_agpio0_pins: i2c3_m4_agpio0_pins {
+				function = "vc_i2c3";
+				pins = "aon_gpio0", "aon_gpio1";
+				bias-pull-up;
+			};
+
+			bsc_m1_agpio13_pins: bsc_m1_agpio13_pins {
+				function = "bsc_m1";
+				pins = "aon_gpio13", "aon_gpio14";
+				bias-pull-up;
+			};
+
+			bsc_pmu_sgpio4_pins: bsc_pmu_sgpio4_pins {
+				function = "avs_pmu_bsc";
+				pins = "aon_sgpio4", "aon_sgpio5";
+			};
+
+			bsc_m2_sgpio4_pins: bsc_m2_sgpio4_pins {
+				function = "bsc_m2";
+				pins = "aon_sgpio4", "aon_sgpio5";
+			};
+
+			pwm_aon_agpio1_pins: pwm_aon_agpio1_pins {
+				function = "aon_pwm";
+				pins = "aon_gpio1", "aon_gpio2";
+			};
+
+			pwm_aon_agpio4_pins: pwm_aon_agpio4_pins {
+				function = "vc_pwm0";
+				pins = "aon_gpio4", "aon_gpio5";
+			};
+
+			pwm_aon_agpio7_pins: pwm_aon_agpio7_pins {
+				function = "aon_pwm";
+				pins = "aon_gpio7", "aon_gpio9";
+			};
+		};
+
+		intc@7d517000 {
+			compatible = "brcm,bcm7271-l2-intc";
+			reg = <0x7d517000 0x10>;
+			interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+			status = "disabled";
+		};
+
+		bscc: i2c@7d517a00 {
+			compatible = "brcm,brcmstb-i2c";
+			reg = <0x7d517a00 0x58>;
+			interrupt-parent = <&bsc_aon_irq>;
+			interrupts = <0>;
+			clock-frequency = <200000>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		pwm_aon: pwm@7d517a80 {
+			compatible = "brcm,bcm7038-pwm";
+			reg = <0x7d517a80 0x28>;
+			#pwm-cells = <3>;
+			clocks = <&clk_27MHz>;
+		};
+
+		main_aon_irq: intc@7d517ac0 {
+			compatible = "brcm,bcm7271-l2-intc";
+			reg = <0x7d517ac0 0x10>;
+			interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+		};
+
+		bsc_aon_irq: intc@7d517b00 {
+			compatible = "brcm,bcm7271-l2-intc";
+			reg = <0x7d517b00 0x10>;
+			interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-controller;
+			#interrupt-cells = <1>;
+		};
+
+		gio_aon: gpio@7d517c00 {
+			compatible = "brcm,brcmstb-gpio";
+			reg = <0x7d517c00 0x40>;
+			interrupt-parent = <&main_aon_irq>;
+			interrupts = <0>;
+			gpio-controller;
+			#gpio-cells = <2>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
+			brcm,gpio-bank-widths = <17 6>;
+			brcm,gpio-direct;
+		};
+
+		avs_monitor: avs-monitor@7d542000 {
+			compatible = "brcm,bcm2711-avs-monitor",
+				     "syscon", "simple-mfd";
+			reg = <0x7d542000 0xf00>;
+			status = "okay";
+
+			thermal: thermal {
+				compatible = "brcm,bcm2711-thermal";
+				#thermal-sensor-cells = <0>;
+			};
+		};
+
+		bsc_pmu: i2c@7d544000 {
+			compatible = "brcm,brcmstb-i2c";
+			reg = <0x7d544000 0x58>;
+			interrupt-parent = <&bsc_aon_irq>;
+			interrupts = <1>;
+			clock-frequency = <200000>;
+			status = "disabled";
+		};
+
+		hdmi0: hdmi@7ef00700 {
+			compatible = "brcm,bcm2712-hdmi0";
+			reg = <0x7c701400 0x300>,
+			      <0x7c701000 0x200>,
+			      <0x7c701d00 0x300>,
+			      <0x7c702000 0x80>,
+			      <0x7c703800 0x200>,
+			      <0x7c704000 0x800>,
+			      <0x7c700100 0x80>,
+			      <0x7d510800 0x100>,
+			      <0x7c720000 0x100>;
+			reg-names = "hdmi",
+				    "dvp",
+				    "phy",
+				    "rm",
+				    "packet",
+				    "metadata",
+				    "csc",
+				    "cec",
+				    "hd";
+			resets = <&dvp 1>;
+			interrupt-parent = <&aon_intr>;
+			interrupts = <1>, <2>, <3>,
+				     <7>, <8>;
+			interrupt-names = "cec-tx", "cec-rx", "cec-low",
+					  "hpd-connected", "hpd-removed";
+			ddc = <&ddc0>;
+			dmas = <&dma32 10>;
+			dma-names = "audio-rx";
+			status = "disabled";
+		};
+
+		hdmi1: hdmi@7ef05700 {
+			compatible = "brcm,bcm2712-hdmi1";
+			reg = <0x7c706400 0x300>,
+			      <0x7c706000 0x200>,
+			      <0x7c706d00 0x300>,
+			      <0x7c707000 0x80>,
+			      <0x7c708800 0x200>,
+			      <0x7c709000 0x800>,
+			      <0x7c700180 0x80>,
+			      <0x7d511000 0x100>,
+			      <0x7c720000 0x100>;
+			reg-names = "hdmi",
+				    "dvp",
+				    "phy",
+				    "rm",
+				    "packet",
+				    "metadata",
+				    "csc",
+				    "cec",
+				    "hd";
+			ddc = <&ddc1>;
+			resets = <&dvp 2>;
+			interrupt-parent = <&aon_intr>;
+			interrupts = <11>, <12>, <13>,
+				     <14>, <15>;
+			interrupt-names = "cec-tx", "cec-rx", "cec-low",
+					  "hpd-connected", "hpd-removed";
+			dmas = <&dma32 17>;
+			dma-names = "audio-rx";
+			status = "disabled";
+		};
+	};
+
+	arm-pmu {
+		compatible = "arm,cortex-a76-pmu";
+		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
+			<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
+			<GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
+			<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+	};
+
+	timer {
+		compatible = "arm,armv8-timer";
+		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
+					  IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
+					  IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
+					  IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
+					  IRQ_TYPE_LEVEL_LOW)>;
+		/* This only applies to the ARMv7 stub */
+		arm,cpu-registers-not-fw-configured;
+	};
+
+	cpus: cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
+
+		/* Source for d/i cache-line-size, cache-sets, cache-size
+		 * https://developer.arm.com/documentation/100798/0401
+		 * /L1-memory-system/About-the-L1-memory-system?lang=en
+		 */
+		cpu0: cpu@0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a76";
+			reg = <0x000>;
+			enable-method = "psci";
+			d-cache-size = <0x10000>;
+			d-cache-line-size = <64>;
+			d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
+			i-cache-size = <0x10000>;
+			i-cache-line-size = <64>;
+			i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
+			next-level-cache = <&l2_cache_l0>;
+		};
+
+		cpu1: cpu@1 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a76";
+			reg = <0x100>;
+			enable-method = "psci";
+			d-cache-size = <0x10000>;
+			d-cache-line-size = <64>;
+			d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
+			i-cache-size = <0x10000>;
+			i-cache-line-size = <64>;
+			i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
+			next-level-cache = <&l2_cache_l1>;
+		};
+
+		cpu2: cpu@2 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a76";
+			reg = <0x200>;
+			enable-method = "psci";
+			d-cache-size = <0x10000>;
+			d-cache-line-size = <64>;
+			d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
+			i-cache-size = <0x10000>;
+			i-cache-line-size = <64>;
+			i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
+			next-level-cache = <&l2_cache_l2>;
+		};
+
+		cpu3: cpu@3 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a76";
+			reg = <0x300>;
+			enable-method = "psci";
+			d-cache-size = <0x10000>;
+			d-cache-line-size = <64>;
+			d-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
+			i-cache-size = <0x10000>;
+			i-cache-line-size = <64>;
+			i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
+			next-level-cache = <&l2_cache_l3>;
+		};
+
+		/* Source for cache-line-size and cache-sets:
+		 * https://developer.arm.com/documentation/100798/0401
+		 * /L2-memory-system/About-the-L2-memory-system?lang=en
+		 * and for cache-size:
+		 * https://www.raspberrypi.com/documentation/computers
+		 * /processors.html#bcm2712
+		 */
+		l2_cache_l0: l2-cache-l0 {
+			compatible = "cache";
+			cache-size = <0x80000>;
+			cache-line-size = <128>;
+			cache-sets = <1024>; // 512KiB(size)/64(line-size)=8192ways/8-way set
+			cache-level = <2>;
+			cache-unified;
+			next-level-cache = <&l3_cache>;
+		};
+
+		l2_cache_l1: l2-cache-l1 {
+			compatible = "cache";
+			cache-size = <0x80000>;
+			cache-line-size = <128>;
+			cache-sets = <1024>; // 512KiB(size)/64(line-size)=8192ways/8-way set
+			cache-level = <2>;
+			cache-unified;
+			next-level-cache = <&l3_cache>;
+		};
+
+		l2_cache_l2: l2-cache-l2 {
+			compatible = "cache";
+			cache-size = <0x80000>;
+			cache-line-size = <128>;
+			cache-sets = <1024>; // 512KiB(size)/64(line-size)=8192ways/8-way set
+			cache-level = <2>;
+			cache-unified;
+			next-level-cache = <&l3_cache>;
+		};
+
+		l2_cache_l3: l2-cache-l3 {
+			compatible = "cache";
+			cache-size = <0x80000>;
+			cache-line-size = <128>;
+			cache-sets = <1024>; // 512KiB(size)/64(line-size)=8192ways/8-way set
+			cache-level = <2>;
+			cache-unified;
+			next-level-cache = <&l3_cache>;
+		};
+
+		/* Source for cache-line-size and cache-sets:
+		 * https://developer.arm.com/documentation/100453/0401/L3-cache?lang=en
+		 * Source for cache-size:
+		 * https://www.raspberrypi.com/documentation/computers/processors.html#bcm2712
+		 */
+		l3_cache: l3-cache {
+			compatible = "cache";
+			cache-size = <0x200000>;
+			cache-line-size = <64>;
+			cache-sets = <2048>; // 2MiB(size)/64(line-size)=32768ways/16-way set
+			cache-level = <3>;
+		};
+	};
+
+	psci {
+		method = "smc";
+		compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci";
+		cpu_on = <0xc4000003>;
+		cpu_suspend = <0xc4000001>;
+		cpu_off = <0x84000002>;
+	};
+
+	axi: axi {
+		compatible = "simple-bus";
+		#address-cells = <2>;
+		#size-cells = <2>;
+
+		ranges = <0x00 0x00000000  0x00 0x00000000  0x10 0x00000000>,
+			 <0x10 0x00000000  0x10 0x00000000  0x01 0x00000000>,
+			 <0x14 0x00000000  0x14 0x00000000  0x04 0x00000000>,
+			 <0x18 0x00000000  0x18 0x00000000  0x04 0x00000000>,
+			 <0x1c 0x00000000  0x1c 0x00000000  0x04 0x00000000>;
+
+		dma-ranges = <0x00 0x00000000  0x00 0x00000000  0x10 0x00000000>,
+			     <0x10 0x00000000  0x10 0x00000000  0x01 0x00000000>,
+			     <0x14 0x00000000  0x14 0x00000000  0x04 0x00000000>,
+			     <0x18 0x00000000  0x18 0x00000000  0x04 0x00000000>,
+			     <0x1c 0x00000000  0x1c 0x00000000  0x04 0x00000000>;
+
+		vc4: gpu {
+			compatible = "brcm,bcm2712-vc6";
+		};
+
+		iommu2: iommu@5100 {
+			/* IOMMU2 for PISP-BE, HEVC; and (unused) H264 accelerators */
+			compatible = "brcm,bcm2712-iommu";
+			reg = <0x10 0x5100  0x0 0x80>;
+			cache = <&iommuc>;
+			#iommu-cells = <0>;
+		};
+
+		iommu4: iommu@5200 {
+			/* IOMMU4 for HVS, MPL/TXP; and (unused) Unicam, PISP-FE, MiniBVN */
+			compatible = "brcm,bcm2712-iommu";
+			reg = <0x10 0x5200  0x0 0x80>;
+			cache = <&iommuc>;
+			#iommu-cells = <0>;
+			#interconnect-cells = <0>;
+		};
+
+		iommu5: iommu@5280 {
+			/* IOMMU5 for PCIe2 (RP1); and (unused) BSTM */
+			compatible = "brcm,bcm2712-iommu";
+			reg = <0x10 0x5280  0x0 0x80>;
+			cache = <&iommuc>;
+			#iommu-cells = <0>;
+			dma-iova-offset = <0x10 0x00000000>; // HACK for RP1 masters over PCIe
+		};
+
+		iommuc: iommuc@5b00 {
+			compatible = "brcm,bcm2712-iommuc";
+			reg = <0x10 0x5b00  0x0 0x80>;
+		};
+
+		dma32: dma@10000 {
+			compatible = "brcm,bcm2712-dma";
+			reg = <0x10 0x00010000 0 0x600>;
+			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "dma0",
+					  "dma1",
+					  "dma2",
+					  "dma3",
+					  "dma4",
+					  "dma5";
+			#dma-cells = <1>;
+			brcm,dma-channel-mask = <0x0035>;
+		};
+
+		dma40: dma@10600 {
+			compatible = "brcm,bcm2712-dma";
+			reg = <0x10 0x00010600 0 0x600>;
+			interrupts =
+				<GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>, /* dma4 6 */
+				<GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>, /* dma4 7 */
+				<GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, /* dma4 8 */
+				<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, /* dma4 9 */
+				<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, /* dma4 10 */
+				<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; /* dma4 11 */
+			interrupt-names = "dma6",
+					  "dma7",
+					  "dma8",
+					  "dma9",
+					  "dma10",
+					  "dma11";
+			#dma-cells = <1>;
+			brcm,dma-channel-mask = <0x0fc0>;
+		};
+
+		// Single-lane Gen3 PCIe
+		// Outbound window at 0x14_000000-0x17_ffffff
+		pcie0: pcie@100000 {
+			compatible = "brcm,bcm2712-pcie";
+			reg = <0x10 0x00100000  0x0 0x9310>;
+			device_type = "pci";
+			max-link-speed = <2>;
+			#address-cells = <3>;
+			#interrupt-cells = <1>;
+			#size-cells = <2>;
+			/*
+			 * Unused interrupts:
+			 * 208: AER
+			 * 215: NMI
+			 * 216: PME
+			 */
+			interrupt-parent = <&gicv2>;
+			interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "pcie", "msi";
+			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+			interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 209
+							IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 2 &gicv2 GIC_SPI 210
+							IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 3 &gicv2 GIC_SPI 211
+							IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 4 &gicv2 GIC_SPI 212
+							IRQ_TYPE_LEVEL_HIGH>;
+			resets = <&bcm_reset 5>, <&bcm_reset 42>, <&pcie_rescal>;
+			reset-names = "swinit", "bridge", "rescal";
+			msi-controller;
+			msi-parent = <&pcie0>;
+
+			ranges = <0x02000000 0x00 0x00000000
+				  0x17 0x00000000
+				  0x0 0xfffffffc>,
+				 <0x43000000 0x04 0x00000000
+				  0x14 0x00000000
+				  0x3 0x00000000>;
+
+			dma-ranges = <0x43000000 0x10 0x00000000
+				      0x00 0x00000000
+				      0x10 0x00000000>;
+
+			status = "disabled";
+		};
+
+		// Single-lane Gen3 PCIe
+		// Outbound window at 0x18_000000-0x1b_ffffff
+		pcie1: pcie@110000 {
+			compatible = "brcm,bcm2712-pcie";
+			reg = <0x10 0x00110000  0x0 0x9310>;
+			device_type = "pci";
+			max-link-speed = <2>;
+			#address-cells = <3>;
+			#interrupt-cells = <1>;
+			#size-cells = <2>;
+			/*
+			 * Unused interrupts:
+			 * 218: AER
+			 * 225: NMI
+			 * 226: PME
+			 */
+			interrupt-parent = <&gicv2>;
+			interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "pcie", "msi";
+			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+			interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 219
+							IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 2 &gicv2 GIC_SPI 220
+							IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 3 &gicv2 GIC_SPI 221
+							IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 4 &gicv2 GIC_SPI 222
+							IRQ_TYPE_LEVEL_HIGH>;
+			resets = <&bcm_reset 7>, <&bcm_reset 43>, <&pcie_rescal>;
+			reset-names = "swinit", "bridge", "rescal";
+			msi-controller;
+			msi-parent = <&mip1>;
+
+			ranges = <0x02000000 0x00 0x00000000
+				  0x1b 0x00000000
+				  0x00 0xfffffffc>,
+				 <0x43000000 0x04 0x00000000
+				  0x18 0x00000000
+				  0x03 0x00000000>;
+
+			dma-ranges = <0x03000000 0x10 0x00000000
+				      0x00 0x00000000
+				      0x10 0x00000000>;
+
+			status = "disabled";
+		};
+
+		pcie_rescal: reset-controller@119500 {
+			compatible = "brcm,bcm7216-pcie-sata-rescal";
+			reg = <0x10 0x00119500  0x0 0x10>;
+			#reset-cells = <0>;
+		};
+
+		// Quad-lane Gen3 PCIe
+		// Outbound window at 0x1c_000000-0x1f_ffffff
+		pcie2: pcie@120000 {
+			compatible = "brcm,bcm2712-pcie";
+			reg = <0x10 0x00120000  0x0 0x9310>;
+			device_type = "pci";
+			max-link-speed = <2>;
+			#address-cells = <3>;
+			#interrupt-cells = <1>;
+			#size-cells = <2>;
+			/*
+			 * Unused interrupts:
+			 * 228: AER
+			 * 235: NMI
+			 * 236: PME
+			 */
+			interrupt-parent = <&gicv2>;
+			interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "pcie", "msi";
+			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+			interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 229
+							IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 2 &gicv2 GIC_SPI 230
+							IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 3 &gicv2 GIC_SPI 231
+							IRQ_TYPE_LEVEL_HIGH>,
+					<0 0 0 4 &gicv2 GIC_SPI 232
+							IRQ_TYPE_LEVEL_HIGH>;
+			resets = <&bcm_reset 32>, <&bcm_reset 44>, <&pcie_rescal>;
+			reset-names = "swinit", "bridge", "rescal";
+			msi-controller;
+			msi-parent = <&mip0>;
+
+			// ~4GB, 32-bit, not-prefetchable at PCIe 00_00000000
+			ranges = <0x02000000 0x00 0x00000000
+				  0x1f 0x00000000
+				  0x0 0xfffffffc>,
+			// 12GB, 64-bit, prefetchable at PCIe 04_00000000
+				 <0x43000000 0x04 0x00000000
+				  0x1c 0x00000000
+				  0x03 0x00000000>;
+
+			// 64GB system RAM space at PCIe 10_00000000
+			dma-ranges = <0x02000000 0x00 0x00000000
+				      0x1f 0x00000000
+				      0x00 0x00400000>,
+				     <0x43000000 0x10 0x00000000
+				      0x00 0x00000000
+				      0x10 0x00000000>;
+
+			status = "disabled";
+		};
+
+		mip0: msi-controller@130000 {
+			compatible = "brcm,bcm2712-mip-intc";
+			reg = <0x10 0x00130000  0x0 0xc0>;
+			msi-controller;
+			interrupt-controller;
+			#interrupt-cells = <2>;
+			brcm,msi-base-spi = <128>;
+			brcm,msi-num-spis = <64>;
+			brcm,msi-offset = <0>;
+			brcm,msi-pci-addr = <0xff 0xfffff000>;
+		};
+
+		mip1: msi-controller@131000 {
+			compatible = "brcm,bcm2712-mip-intc";
+			reg = <0x10 0x00131000  0x0 0xc0>;
+			msi-controller;
+			interrupt-controller;
+			#interrupt-cells = <2>;
+			brcm,msi-base-spi = <247>;
+			/* Actually 20 total, but the others are
+			 * both sparse and non-consecutive */
+			brcm,msi-num-spis = <8>;
+			brcm,msi-offset = <8>;
+			brcm,msi-pci-addr = <0xff 0xffffe000>;
+		};
+
+		syscon_piarbctl: syscon@400018 {
+			compatible = "brcm,syscon-piarbctl", "syscon", "simple-mfd";
+			reg = <0x10 0x00400018  0x0 0x18>;
+		};
+
+		usb: usb@480000 {
+			compatible = "brcm,bcm2835-usb";
+			reg = <0x10 0x00480000 0x0 0x10000>;
+			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			clocks = <&clk_usb>;
+			clock-names = "otg";
+			phys = <&usbphy>;
+			phy-names = "usb2-phy";
+			status = "disabled";
+		};
+
+		rpivid: codec@800000 {
+			compatible = "raspberrypi,rpivid-vid-decoder";
+			reg = <0x10 0x00800000  0x0 0x10000>, /* HEVC */
+			      <0x10 0x00840000  0x0 0x1000>;  /* INTC */
+			reg-names = "hevc",
+				    "intc";
+
+			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+
+			clocks = <&firmware_clocks 11>;
+			clock-names = "hevc";
+			iommus = <&iommu2>;
+			status = "disabled";
+		};
+
+		sdio1: mmc@fff000 {
+			compatible = "brcm,bcm2712-sdhci";
+			reg = <0x10 0x00fff000  0x0 0x260>,
+			      <0x10 0x00fff400  0x0 0x200>,
+			      <0x10 0x015040b0  0x0 0x4>,  // Bus isolation control
+			      <0x10 0x015200f0  0x0 0x24>; // LCPLL control misc0-8
+			reg-names = "host", "cfg", "busisol", "lcpll";
+			interrupts = <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_emmc2>;
+			sdhci-caps-mask = <0x0000C000 0x0>;
+			sdhci-caps = <0x0 0x0>;
+			mmc-ddr-3_3v;
+		};
+
+		sdio2: mmc@1100000 {
+			compatible = "brcm,bcm2712-sdhci";
+			reg = <0x10 0x01100000  0x0 0x260>,
+			      <0x10 0x01100400  0x0 0x200>;
+			reg-names = "host", "cfg";
+			interrupts = <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk_emmc2>;
+			sdhci-caps-mask = <0x0000C000 0x0>;
+			sdhci-caps = <0x0 0x0>;
+			supports-cqe;
+			mmc-ddr-3_3v;
+			status = "disabled";
+		};
+
+		bcm_reset: reset-controller@1504318 {
+			compatible = "brcm,brcmstb-reset";
+			reg = <0x10 0x01504318  0x0 0x30>;
+			#reset-cells = <1>;
+		};
+
+		v3d: v3d@2000000 {
+			compatible = "brcm,2712-v3d";
+			reg = <0x10 0x02000000  0x0 0x4000>,
+			      <0x10 0x02008000  0x0 0x6000>;
+			reg-names = "hub", "core0";
+
+			power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
+			resets = <&pm BCM2835_RESET_V3D>;
+			clocks = <&firmware_clocks 5>;
+			clocks-names = "v3d";
+			interrupts = <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+		};
+
+		gicv2: interrupt-controller@7fff9000 {
+			interrupt-controller;
+			#interrupt-cells = <3>;
+			compatible = "arm,gic-400";
+			reg =	<0x10 0x7fff9000  0x0 0x1000>,
+				<0x10 0x7fffa000  0x0 0x2000>,
+				<0x10 0x7fffc000  0x0 0x2000>,
+				<0x10 0x7fffe000  0x0 0x2000>;
+			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
+						 IRQ_TYPE_LEVEL_HIGH)>;
+		};
+
+		pisp_be: pisp_be@880000  {
+			compatible = "raspberrypi,pispbe";
+			reg = <0x10 0x00880000  0x0 0x4000>;
+			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&firmware_clocks 7>;
+			clocks-names = "isp_be";
+			status = "okay";
+			iommus = <&iommu2>;
+		};
+	};
+
+	clocks {
+		/* The oscillator is the root of the clock tree. */
+		clk_osc: clk-osc {
+			compatible = "fixed-clock";
+			#clock-cells = <0>;
+			clock-output-names = "osc";
+			clock-frequency = <54000000>;
+		};
+
+		clk_usb: clk-usb {
+			compatible = "fixed-clock";
+			#clock-cells = <0>;
+			clock-output-names = "otg";
+			clock-frequency = <480000000>;
+		};
+
+		clk_vpu: clk_vpu {
+			#clock-cells = <0>;
+			compatible = "fixed-clock";
+			clock-frequency = <750000000>;
+			clock-output-names = "vpu-clock";
+		};
+
+		clk_uart: clk_uart {
+			#clock-cells = <0>;
+			compatible = "fixed-clock";
+			clock-frequency = <9216000>;
+			clock-output-names = "uart-clock";
+		};
+
+		clk_emmc2: clk_emmc2 {
+			#clock-cells = <0>;
+			compatible = "fixed-clock";
+			clock-frequency = <200000000>;
+			clock-output-names = "emmc2-clock";
+		};
+	};
+
+	usbphy: phy {
+		compatible = "usb-nop-xceiv";
+		#phy-cells = <0>;
+	};
+};
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/rp1.dtsi
@@ -0,0 +1,1287 @@
+#include <dt-bindings/clock/rp1.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/mfd/rp1.h>
+
+&rp1_target {
+	rp1: rp1 {
+		compatible = "simple-bus";
+		#address-cells = <2>;
+		#size-cells = <2>;
+		#interrupt-cells = <2>;
+		interrupt-controller;
+		interrupt-parent = <&rp1>;
+
+		// ranges and dma-ranges must be provided by the includer
+
+		rp1_clocks: clocks@18000 {
+			compatible = "raspberrypi,rp1-clocks";
+			#clock-cells = <1>;
+			reg = <0xc0 0x40018000 0x0 0x10038>;
+			clocks = <&clk_xosc>;
+
+			assigned-clocks = <&rp1_clocks RP1_PLL_SYS_CORE>,
+					  <&rp1_clocks RP1_PLL_AUDIO_CORE>,
+					  // RP1_PLL_VIDEO_CORE and dividers are now managed by VEC,DPI drivers
+					  <&rp1_clocks RP1_PLL_SYS>,
+					  <&rp1_clocks RP1_PLL_SYS_SEC>,
+					  <&rp1_clocks RP1_PLL_AUDIO>,
+					  <&rp1_clocks RP1_PLL_AUDIO_SEC>,
+					  <&rp1_clocks RP1_CLK_SYS>,
+					  <&rp1_clocks RP1_PLL_SYS_PRI_PH>,
+					  // RP1_CLK_SLOW_SYS is used for the frequency counter (FC0)
+					  <&rp1_clocks RP1_CLK_SLOW_SYS>,
+					  <&rp1_clocks RP1_CLK_SDIO_TIMER>,
+					  <&rp1_clocks RP1_CLK_SDIO_ALT_SRC>,
+					  <&rp1_clocks RP1_CLK_ETH_TSU>;
+
+			assigned-clock-rates = <1000000000>, // RP1_PLL_SYS_CORE
+					       <1536000000>, // RP1_PLL_AUDIO_CORE
+					       <200000000>,  // RP1_PLL_SYS
+					       <125000000>,  // RP1_PLL_SYS_SEC
+					       <61440000>,   // RP1_PLL_AUDIO
+					       <192000000>,  // RP1_PLL_AUDIO_SEC
+					       <200000000>,  // RP1_CLK_SYS
+					       <100000000>,  // RP1_PLL_SYS_PRI_PH
+					       // Must match the XOSC frequency
+					       <50000000>, // RP1_CLK_SLOW_SYS
+					       <1000000>, // RP1_CLK_SDIO_TIMER
+					       <200000000>, // RP1_CLK_SDIO_ALT_SRC
+					       <50000000>; // RP1_CLK_ETH_TSU
+		};
+
+		rp1_uart0: serial@30000 {
+			compatible = "arm,pl011-axi";
+			reg = <0xc0 0x40030000  0x0 0x100>;
+			interrupts = <RP1_INT_UART0 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
+			clock-names = "uartclk", "apb_pclk";
+			dmas = <&rp1_dma RP1_DMA_UART0_TX>,
+			       <&rp1_dma RP1_DMA_UART0_RX>;
+			dma-names = "tx", "rx";
+			pinctrl-names = "default";
+			arm,primecell-periphid = <0x00541011>;
+			uart-has-rtscts;
+			cts-event-workaround;
+			skip-init;
+			status = "disabled";
+		};
+
+		rp1_uart1: serial@34000 {
+			compatible = "arm,pl011-axi";
+			reg = <0xc0 0x40034000  0x0 0x100>;
+			interrupts = <RP1_INT_UART1 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
+			clock-names = "uartclk", "apb_pclk";
+			// dmas = <&rp1_dma RP1_DMA_UART1_TX>,
+			//        <&rp1_dma RP1_DMA_UART1_RX>;
+			// dma-names = "tx", "rx";
+			pinctrl-names = "default";
+			arm,primecell-periphid = <0x00541011>;
+			uart-has-rtscts;
+			cts-event-workaround;
+			skip-init;
+			status = "disabled";
+		};
+
+		rp1_uart2: serial@38000 {
+			compatible = "arm,pl011-axi";
+			reg = <0xc0 0x40038000  0x0 0x100>;
+			interrupts = <RP1_INT_UART2 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
+			clock-names = "uartclk", "apb_pclk";
+			// dmas = <&rp1_dma RP1_DMA_UART2_TX>,
+			//        <&rp1_dma RP1_DMA_UART2_RX>;
+			// dma-names = "tx", "rx";
+			pinctrl-names = "default";
+			arm,primecell-periphid = <0x00541011>;
+			uart-has-rtscts;
+			cts-event-workaround;
+			skip-init;
+			status = "disabled";
+		};
+
+		rp1_uart3: serial@3c000 {
+			compatible = "arm,pl011-axi";
+			reg = <0xc0 0x4003c000  0x0 0x100>;
+			interrupts = <RP1_INT_UART3 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
+			clock-names = "uartclk", "apb_pclk";
+			// dmas = <&rp1_dma RP1_DMA_UART3_TX>,
+			//        <&rp1_dma RP1_DMA_UART3_RX>;
+			// dma-names = "tx", "rx";
+			pinctrl-names = "default";
+			arm,primecell-periphid = <0x00541011>;
+			uart-has-rtscts;
+			cts-event-workaround;
+			skip-init;
+			status = "disabled";
+		};
+
+		rp1_uart4: serial@40000 {
+			compatible = "arm,pl011-axi";
+			reg = <0xc0 0x40040000  0x0 0x100>;
+			interrupts = <RP1_INT_UART4 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
+			clock-names = "uartclk", "apb_pclk";
+			// dmas = <&rp1_dma RP1_DMA_UART4_TX>,
+			//        <&rp1_dma RP1_DMA_UART4_RX>;
+			// dma-names = "tx", "rx";
+			pinctrl-names = "default";
+			arm,primecell-periphid = <0x00541011>;
+			uart-has-rtscts;
+			cts-event-workaround;
+			skip-init;
+			status = "disabled";
+		};
+
+		rp1_uart5: serial@44000 {
+			compatible = "arm,pl011-axi";
+			reg = <0xc0 0x40044000  0x0 0x100>;
+			interrupts = <RP1_INT_UART5 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_UART &rp1_clocks RP1_PLL_SYS_PRI_PH>;
+			clock-names = "uartclk", "apb_pclk";
+			// dmas = <&rp1_dma RP1_DMA_UART5_TX>,
+			//        <&rp1_dma RP1_DMA_UART5_RX>;
+			// dma-names = "tx", "rx";
+			pinctrl-names = "default";
+			arm,primecell-periphid = <0x00541011>;
+			uart-has-rtscts;
+			cts-event-workaround;
+			skip-init;
+			status = "disabled";
+		};
+
+		rp1_spi8: spi@4c000 {
+			reg = <0xc0 0x4004c000  0x0 0x130>;
+			compatible = "snps,dw-apb-ssi";
+			interrupts = <RP1_INT_SPI8 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			clock-names = "ssi_clk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			num-cs = <2>;
+			dmas = <&rp1_dma RP1_DMA_SPI8_TX>,
+			       <&rp1_dma RP1_DMA_SPI8_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+		};
+
+		rp1_spi0: spi@50000 {
+			reg = <0xc0 0x40050000  0x0 0x130>;
+			compatible = "snps,dw-apb-ssi";
+			interrupts = <RP1_INT_SPI0 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			clock-names = "ssi_clk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			num-cs = <2>;
+			dmas = <&rp1_dma RP1_DMA_SPI0_TX>,
+			       <&rp1_dma RP1_DMA_SPI0_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+		};
+
+		rp1_spi1: spi@54000 {
+			reg = <0xc0 0x40054000  0x0 0x130>;
+			compatible = "snps,dw-apb-ssi";
+			interrupts = <RP1_INT_SPI1 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			clock-names = "ssi_clk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			num-cs = <2>;
+			dmas = <&rp1_dma RP1_DMA_SPI1_TX>,
+			       <&rp1_dma RP1_DMA_SPI1_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+		};
+
+		rp1_spi2: spi@58000 {
+			reg = <0xc0 0x40058000  0x0 0x130>;
+			compatible = "snps,dw-apb-ssi";
+			interrupts = <RP1_INT_SPI2 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			clock-names = "ssi_clk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			num-cs = <2>;
+			dmas = <&rp1_dma RP1_DMA_SPI2_TX>,
+			       <&rp1_dma RP1_DMA_SPI2_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+		};
+
+		rp1_spi3: spi@5c000 {
+			reg = <0xc0 0x4005c000  0x0 0x130>;
+			compatible = "snps,dw-apb-ssi";
+			interrupts = <RP1_INT_SPI3 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			clock-names = "ssi_clk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			num-cs = <2>;
+			dmas = <&rp1_dma RP1_DMA_SPI3_TX>,
+			       <&rp1_dma RP1_DMA_SPI3_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+		};
+
+		// SPI4 is a target/slave interface
+		rp1_spi4: spi@60000 {
+			reg = <0xc0 0x40060000  0x0 0x130>;
+			compatible = "snps,dw-apb-ssi";
+			interrupts = <RP1_INT_SPI4 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			clock-names = "ssi_clk";
+			#address-cells = <0>;
+			#size-cells = <0>;
+			num-cs = <1>;
+			spi-slave;
+			dmas = <&rp1_dma RP1_DMA_SPI4_TX>,
+			       <&rp1_dma RP1_DMA_SPI4_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+
+			slave {
+				compatible = "spidev";
+				spi-max-frequency = <1000000>;
+			};
+		};
+
+		rp1_spi5: spi@64000 {
+			reg = <0xc0 0x40064000  0x0 0x130>;
+			compatible = "snps,dw-apb-ssi";
+			interrupts = <RP1_INT_SPI5 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			clock-names = "ssi_clk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			num-cs = <2>;
+			dmas = <&rp1_dma RP1_DMA_SPI5_TX>,
+			       <&rp1_dma RP1_DMA_SPI5_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+		};
+
+		rp1_spi6: spi@68000 {
+			reg = <0xc0 0x40068000  0x0 0x130>;
+			compatible = "snps,dw-apb-ssi";
+			interrupts = <RP1_INT_SPI6 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			clock-names = "ssi_clk";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			num-cs = <2>;
+			dmas = <&rp1_dma RP1_DMA_SPI6_TX>,
+			       <&rp1_dma RP1_DMA_SPI6_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+		};
+
+		// SPI7 is a target/slave interface
+		rp1_spi7: spi@6c000 {
+			reg = <0xc0 0x4006c000  0x0 0x130>;
+			compatible = "snps,dw-apb-ssi";
+			interrupts = <RP1_INT_SPI7 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			clock-names = "ssi_clk";
+			#address-cells = <0>;
+			#size-cells = <0>;
+			num-cs = <1>;
+			spi-slave;
+			dmas = <&rp1_dma RP1_DMA_SPI7_TX>,
+			       <&rp1_dma RP1_DMA_SPI7_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+
+			slave {
+				compatible = "spidev";
+				spi-max-frequency = <1000000>;
+			};
+		};
+
+		rp1_i2c0: i2c@70000 {
+			reg = <0xc0 0x40070000  0x0 0x1000>;
+			compatible = "snps,designware-i2c";
+			interrupts = <RP1_INT_I2C0 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			i2c-scl-rising-time-ns = <65>;
+			i2c-scl-falling-time-ns = <100>;
+			status = "disabled";
+		};
+
+		rp1_i2c1: i2c@74000 {
+			reg = <0xc0 0x40074000  0x0 0x1000>;
+			compatible = "snps,designware-i2c";
+			interrupts = <RP1_INT_I2C1 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			i2c-scl-rising-time-ns = <65>;
+			i2c-scl-falling-time-ns = <100>;
+			status = "disabled";
+		};
+
+		rp1_i2c2: i2c@78000 {
+			reg = <0xc0 0x40078000  0x0 0x1000>;
+			compatible = "snps,designware-i2c";
+			interrupts = <RP1_INT_I2C2 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			i2c-scl-rising-time-ns = <65>;
+			i2c-scl-falling-time-ns = <100>;
+			status = "disabled";
+		};
+
+		rp1_i2c3: i2c@7c000 {
+			reg = <0xc0 0x4007c000  0x0 0x1000>;
+			compatible = "snps,designware-i2c";
+			interrupts = <RP1_INT_I2C3 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			i2c-scl-rising-time-ns = <65>;
+			i2c-scl-falling-time-ns = <100>;
+			status = "disabled";
+		};
+
+		rp1_i2c4: i2c@80000 {
+			reg = <0xc0 0x40080000  0x0 0x1000>;
+			compatible = "snps,designware-i2c";
+			interrupts = <RP1_INT_I2C4 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			i2c-scl-rising-time-ns = <65>;
+			i2c-scl-falling-time-ns = <100>;
+			status = "disabled";
+		};
+
+		rp1_i2c5: i2c@84000 {
+			reg = <0xc0 0x40084000  0x0 0x1000>;
+			compatible = "snps,designware-i2c";
+			interrupts = <RP1_INT_I2C5 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			i2c-scl-rising-time-ns = <65>;
+			i2c-scl-falling-time-ns = <100>;
+			status = "disabled";
+		};
+
+		rp1_i2c6: i2c@88000 {
+			reg = <0xc0 0x40088000  0x0 0x1000>;
+			compatible = "snps,designware-i2c";
+			interrupts = <RP1_INT_I2C6 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS>;
+			i2c-scl-rising-time-ns = <65>;
+			i2c-scl-falling-time-ns = <100>;
+			status = "disabled";
+		};
+
+		rp1_pwm0: pwm@98000 {
+			compatible = "raspberrypi,rp1-pwm";
+			reg = <0xc0 0x40098000  0x0 0x100>;
+			#pwm-cells = <3>;
+			clocks = <&rp1_clocks RP1_CLK_PWM0>;
+			assigned-clocks = <&rp1_clocks RP1_CLK_PWM0>;
+			assigned-clock-rates = <50000000>;
+			status = "disabled";
+		};
+
+		rp1_pwm1: pwm@9c000 {
+			compatible = "raspberrypi,rp1-pwm";
+			reg = <0xc0 0x4009c000  0x0 0x100>;
+			#pwm-cells = <3>;
+			clocks = <&rp1_clocks RP1_CLK_PWM1>;
+			assigned-clocks = <&rp1_clocks RP1_CLK_PWM1>;
+			assigned-clock-rates = <50000000>;
+			status = "disabled";
+		};
+
+		rp1_i2s0: i2s@a0000 {
+			reg = <0xc0 0x400a0000  0x0 0x1000>;
+			compatible = "snps,designware-i2s";
+			// Providing an interrupt disables DMA
+			// interrupts = <RP1_INT_I2S0 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_I2S>;
+			clock-names = "i2sclk";
+			#sound-dai-cells = <0>;
+			dmas = <&rp1_dma RP1_DMA_I2S0_TX>,<&rp1_dma RP1_DMA_I2S0_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+		};
+
+		rp1_i2s1: i2s@a4000 {
+			reg = <0xc0 0x400a4000  0x0 0x1000>;
+			compatible = "snps,designware-i2s";
+			// Providing an interrupt disables DMA
+			// interrupts = <RP1_INT_I2S1 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_I2S>;
+			clock-names = "i2sclk";
+			#sound-dai-cells = <0>;
+			dmas = <&rp1_dma RP1_DMA_I2S1_TX>,<&rp1_dma RP1_DMA_I2S1_RX>;
+			dma-names = "tx", "rx";
+			status = "disabled";
+		};
+
+		rp1_i2s2: i2s@a8000 {
+			reg = <0xc0 0x400a8000  0x0 0x1000>;
+			compatible = "snps,designware-i2s";
+			// Providing an interrupt disables DMA
+			// interrupts = <RP1_INT_I2S2 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_I2S>;
+			status = "disabled";
+		};
+
+		rp1_sdio_clk0: sdio_clk0@b0004 {
+			compatible = "raspberrypi,rp1-sdio-clk";
+			reg = <0xc0 0x400b0004 0x0 0x1c>;
+			clocks = <&sdio_src &sdhci_core>;
+			clock-names = "src", "base";
+			#clock-cells = <0>;
+			status = "disabled";
+		};
+
+		rp1_sdio_clk1: sdio_clk1@b4004 {
+			compatible = "raspberrypi,rp1-sdio-clk";
+			reg = <0xc0 0x400b4004 0x0 0x1c>;
+			clocks = <&sdio_src &sdhci_core>;
+			clock-names = "src", "base";
+			#clock-cells = <0>;
+			status = "disabled";
+		};
+
+		rp1_adc: adc@c8000 {
+			compatible = "raspberrypi,rp1-adc";
+			reg = <0xc0 0x400c8000 0x0 0x4000>;
+			clocks = <&rp1_clocks RP1_CLK_ADC>;
+			clock-names = "adcclk";
+			#clock-cells = <0>;
+			vref-supply = <&rp1_vdd_3v3>;
+			status = "disabled";
+		};
+
+		rp1_gpio: gpio@d0000 {
+			reg = <0xc0 0x400d0000  0x0 0xc000>,
+			      <0xc0 0x400e0000  0x0 0xc000>,
+			      <0xc0 0x400f0000  0x0 0xc000>;
+			compatible = "raspberrypi,rp1-gpio";
+			interrupts = <RP1_INT_IO_BANK0 IRQ_TYPE_LEVEL_HIGH>,
+				     <RP1_INT_IO_BANK1 IRQ_TYPE_LEVEL_HIGH>,
+			             <RP1_INT_IO_BANK2 IRQ_TYPE_LEVEL_HIGH>;
+			gpio-controller;
+			#gpio-cells = <2>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
+			gpio-ranges = <&rp1_gpio 0 0 54>;
+
+			rp1_uart0_14_15: rp1_uart0_14_15 {
+				pin_txd {
+					function = "uart0";
+					pins = "gpio14";
+					bias-disable;
+				};
+				pin_rxd {
+					function = "uart0";
+					pins = "gpio15";
+					bias-pull-up;
+				};
+			};
+			rp1_uart0_ctsrts_16_17: rp1_uart0_ctsrts_16_17 {
+				pin_cts {
+					function = "uart0";
+					pins = "gpio16";
+					bias-pull-up;
+				};
+				pin_rts {
+					function = "uart0";
+					pins = "gpio17";
+					bias-disable;
+				};
+			};
+			rp1_uart1_0_1: rp1_uart1_0_1 {
+				pin_txd {
+					function = "uart1";
+					pins = "gpio0";
+					bias-disable;
+				};
+				pin_rxd {
+					function = "uart1";
+					pins = "gpio1";
+					bias-pull-up;
+				};
+			};
+			rp1_uart1_ctsrts_2_3: rp1_uart1_ctsrts_2_3 {
+				pin_cts {
+					function = "uart1";
+					pins = "gpio2";
+					bias-pull-up;
+				};
+				pin_rts {
+					function = "uart1";
+					pins = "gpio3";
+					bias-disable;
+				};
+			};
+			rp1_uart2_4_5: rp1_uart2_4_5 {
+				pin_txd {
+					function = "uart2";
+					pins = "gpio4";
+					bias-disable;
+				};
+				pin_rxd {
+					function = "uart2";
+					pins = "gpio5";
+					bias-pull-up;
+				};
+			};
+			rp1_uart2_ctsrts_6_7: rp1_uart2_ctsrts_6_7 {
+				pin_cts {
+					function = "uart2";
+					pins = "gpio6";
+					bias-pull-up;
+				};
+				pin_rts {
+					function = "uart2";
+					pins = "gpio7";
+					bias-disable;
+				};
+			};
+			rp1_uart3_8_9: rp1_uart3_8_9 {
+				pin_txd {
+					function = "uart3";
+					pins = "gpio8";
+					bias-disable;
+				};
+				pin_rxd {
+					function = "uart3";
+					pins = "gpio9";
+					bias-pull-up;
+				};
+			};
+			rp1_uart3_ctsrts_10_11: rp1_uart3_ctsrts_10_11 {
+				pin_cts {
+					function = "uart3";
+					pins = "gpio10";
+					bias-pull-up;
+				};
+				pin_rts {
+					function = "uart3";
+					pins = "gpio11";
+					bias-disable;
+				};
+			};
+			rp1_uart4_12_13: rp1_uart4_12_13 {
+				pin_txd {
+					function = "uart4";
+					pins = "gpio12";
+					bias-disable;
+				};
+				pin_rxd {
+					function = "uart4";
+					pins = "gpio13";
+					bias-pull-up;
+				};
+			};
+			rp1_uart4_ctsrts_14_15: rp1_uart4_ctsrts_14_15 {
+				pin_cts {
+					function = "uart4";
+					pins = "gpio14";
+					bias-pull-up;
+				};
+				pin_rts {
+					function = "uart4";
+					pins = "gpio15";
+					bias-disable;
+				};
+			};
+
+			rp1_sdio0_22_27: rp1_sdio0_22_27 {
+				pin_clk {
+					function = "sd0";
+					pins = "gpio22";
+					bias-disable;
+					drive-strength = <12>;
+					slew-rate = <1>;
+				};
+				pin_cmd {
+					function = "sd0";
+					pins = "gpio23";
+					bias-pull-up;
+					drive-strength = <12>;
+					slew-rate = <1>;
+				};
+				pins_dat {
+					function = "sd0";
+					pins = "gpio24", "gpio25", "gpio26", "gpio27";
+					bias-pull-up;
+					drive-strength = <12>;
+					slew-rate = <1>;
+				};
+			};
+
+			rp1_sdio1_28_33: rp1_sdio1_28_33 {
+				pin_clk {
+					function = "sd1";
+					pins = "gpio28";
+					bias-disable;
+					drive-strength = <12>;
+					slew-rate = <1>;
+				};
+				pin_cmd {
+					function = "sd1";
+					pins = "gpio29";
+					bias-pull-up;
+					drive-strength = <12>;
+					slew-rate = <1>;
+				};
+				pins_dat {
+					function = "sd1";
+					pins = "gpio30", "gpio31", "gpio32", "gpio33";
+					bias-pull-up;
+					drive-strength = <12>;
+					slew-rate = <1>;
+				};
+			};
+
+			rp1_i2s0_18_21: rp1_i2s0_18_21 {
+				function = "i2s0";
+				pins = "gpio18", "gpio19", "gpio20", "gpio21";
+				bias-disable;
+			};
+
+			rp1_i2s1_18_21: rp1_i2s1_18_21 {
+				function = "i2s1";
+				pins = "gpio18", "gpio19", "gpio20", "gpio21";
+				bias-disable;
+			};
+
+			rp1_i2c4_34_35: rp1_i2c4_34_35 {
+				function = "i2c4";
+				pins = "gpio34", "gpio35";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c6_38_39: rp1_i2c6_38_39 {
+				function = "i2c6";
+				pins = "gpio38", "gpio39";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c4_40_41: rp1_i2c4_40_41 {
+				function = "i2c4";
+				pins = "gpio40", "gpio41";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c5_44_45: rp1_i2c5_44_45 {
+				function = "i2c5";
+				pins = "gpio44", "gpio45";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c0_0_1: rp1_i2c0_0_1 {
+				function = "i2c0";
+				pins = "gpio0", "gpio1";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c0_8_9: rp1_i2c0_8_9 {
+				function = "i2c0";
+				pins = "gpio8", "gpio9";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c1_2_3: rp1_i2c1_2_3 {
+				function = "i2c1";
+				pins = "gpio2", "gpio3";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c1_10_11: rp1_i2c1_10_11 {
+				function = "i2c1";
+				pins = "gpio10", "gpio11";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c2_4_5: rp1_i2c2_4_5 {
+				function = "i2c2";
+				pins = "gpio4", "gpio5";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c2_12_13: rp1_i2c2_12_13 {
+				function = "i2c2";
+				pins = "gpio12", "gpio13";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c3_6_7: rp1_i2c3_6_7 {
+				function = "i2c3";
+				pins = "gpio6", "gpio7";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c3_14_15: rp1_i2c3_14_15 {
+				function = "i2c3";
+				pins = "gpio14", "gpio15";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+			rp1_i2c3_22_23: rp1_i2c3_22_23 {
+				function = "i2c3";
+				pins = "gpio22", "gpio23";
+				drive-strength = <12>;
+				bias-pull-up;
+			};
+
+			// DPI mappings with HSYNC,VSYNC but without PIXCLK,DE
+			rp1_dpi_16bit_gpio2: rp1_dpi_16bit_gpio2 { /* Mode 2, not fully supported by RP1 */
+				function = "dpi";
+				pins = "gpio2", "gpio3", "gpio4", "gpio5",
+				       "gpio6", "gpio7", "gpio8", "gpio9",
+				       "gpio10", "gpio11", "gpio12", "gpio13",
+				       "gpio14", "gpio15", "gpio16", "gpio17",
+				       "gpio18", "gpio19";
+				bias-disable;
+			};
+			rp1_dpi_16bit_cpadhi_gpio2: rp1_dpi_16bit_cpadhi_gpio2 { /* Mode 3 */
+				function = "dpi";
+				pins = "gpio2", "gpio3", "gpio4", "gpio5",
+				       "gpio6", "gpio7", "gpio8",
+				       "gpio12", "gpio13", "gpio14", "gpio15",
+				       "gpio16", "gpio17",
+				       "gpio20", "gpio21", "gpio22", "gpio23",
+				       "gpio24";
+				bias-disable;
+			};
+			rp1_dpi_16bit_pad666_gpio2: rp1_dpi_16bit_pad666_gpio2 { /* Mode 4 */
+				function = "dpi";
+				pins = "gpio2", "gpio3",
+				       "gpio5", "gpio6", "gpio7", "gpio8",
+				       "gpio9",
+				       "gpio12", "gpio13", "gpio14", "gpio15",
+				       "gpio16", "gpio17",
+				       "gpio21", "gpio22", "gpio23", "gpio24",
+				       "gpio25";
+				bias-disable;
+			};
+			rp1_dpi_18bit_gpio2: rp1_dpi_18bit_gpio2 { /* Mode 5, not fully supported by RP1 */
+				function = "dpi";
+				pins = "gpio2", "gpio3", "gpio4", "gpio5",
+				       "gpio6", "gpio7", "gpio8", "gpio9",
+				       "gpio10", "gpio11", "gpio12", "gpio13",
+				       "gpio14", "gpio15", "gpio16", "gpio17",
+				       "gpio18", "gpio19", "gpio20", "gpio21";
+				bias-disable;
+			};
+			rp1_dpi_18bit_cpadhi_gpio2: rp1_dpi_18bit_cpadhi_gpio2 { /* Mode 6 */
+				function = "dpi";
+				pins = "gpio2", "gpio3", "gpio4", "gpio5",
+				       "gpio6", "gpio7", "gpio8", "gpio9",
+				       "gpio12", "gpio13", "gpio14", "gpio15",
+				       "gpio16", "gpio17",
+				       "gpio20", "gpio21", "gpio22", "gpio23",
+				       "gpio24", "gpio25";
+				bias-disable;
+			};
+			rp1_dpi_24bit_gpio2: rp1_dpi_24bit_gpio2 { /* Mode 7 */
+				function = "dpi";
+				pins = "gpio2", "gpio3", "gpio4", "gpio5",
+				       "gpio6", "gpio7", "gpio8", "gpio9",
+				       "gpio10", "gpio11", "gpio12", "gpio13",
+				       "gpio14", "gpio15", "gpio16", "gpio17",
+				       "gpio18", "gpio19", "gpio20", "gpio21",
+				       "gpio22", "gpio23", "gpio24", "gpio25",
+				       "gpio26", "gpio27";
+				bias-disable;
+			};
+			rp1_dpi_hvsync: rp1_dpi_hvsync { /* Sync only, for use with int VDAC */
+				function = "dpi";
+				pins = "gpio2", "gpio3";
+				bias-disable;
+			};
+
+			// More DPI mappings, including PIXCLK,DE on GPIOs 0,1
+			rp1_dpi_16bit_gpio0: rp1_dpi_16bit_gpio0 { /* Mode 2, not fully supported by RP1 */
+				function = "dpi";
+				pins = "gpio0", "gpio1", "gpio2", "gpio3",
+				       "gpio4", "gpio5", "gpio6", "gpio7",
+				       "gpio8", "gpio9", "gpio10", "gpio11",
+				       "gpio12", "gpio13", "gpio14", "gpio15",
+				       "gpio16", "gpio17", "gpio18", "gpio19";
+				bias-disable;
+			};
+			rp1_dpi_16bit_cpadhi_gpio0: rp1_dpi_16bit_cpadhi_gpio0 { /* Mode 3 */
+				function = "dpi";
+				pins = "gpio0", "gpio1", "gpio2", "gpio3",
+				       "gpio4", "gpio5", "gpio6", "gpio7",
+				       "gpio8",
+				       "gpio12", "gpio13", "gpio14", "gpio15",
+				       "gpio16", "gpio17",
+				       "gpio20", "gpio21", "gpio22", "gpio23",
+				       "gpio24";
+				bias-disable;
+			};
+			rp1_dpi_16bit_pad666_gpio0: rp1_dpi_16bit_pad666_gpio0 { /* Mode 4 */
+				function = "dpi";
+				pins = "gpio0", "gpio1", "gpio2", "gpio3",
+				       "gpio5", "gpio6", "gpio7", "gpio8",
+				       "gpio9",
+				       "gpio12", "gpio13", "gpio14", "gpio15",
+				       "gpio16", "gpio17",
+				       "gpio21", "gpio22", "gpio23", "gpio24",
+				       "gpio25";
+				bias-disable;
+			};
+			rp1_dpi_18bit_gpio0: rp1_dpi_18bit_gpio0 { /* Mode 5, not fully supported by RP1 */
+				function = "dpi";
+				pins = "gpio0", "gpio1", "gpio2", "gpio3",
+				       "gpio4", "gpio5", "gpio6", "gpio7",
+				       "gpio8", "gpio9", "gpio10", "gpio11",
+				       "gpio12", "gpio13", "gpio14", "gpio15",
+				       "gpio16", "gpio17", "gpio18", "gpio19",
+				       "gpio20", "gpio21";
+				bias-disable;
+			};
+			rp1_dpi_18bit_cpadhi_gpio0: rp1_dpi_18bit_cpadhi_gpio0 { /* Mode 6 */
+				function = "dpi";
+				pins = "gpio0", "gpio1", "gpio2", "gpio3",
+				       "gpio4", "gpio5", "gpio6", "gpio7",
+				       "gpio8", "gpio9",
+				       "gpio12", "gpio13", "gpio14", "gpio15",
+				       "gpio16", "gpio17",
+				       "gpio20", "gpio21", "gpio22", "gpio23",
+				       "gpio24", "gpio25";
+				bias-disable;
+			};
+			rp1_dpi_24bit_gpio0: rp1_dpi_24bit_gpio0 { /* Mode 7 -- All GPIOs used! */
+				function = "dpi";
+				pins = "gpio0", "gpio1", "gpio2", "gpio3",
+				       "gpio4", "gpio5", "gpio6", "gpio7",
+				       "gpio8", "gpio9", "gpio10", "gpio11",
+				       "gpio12", "gpio13", "gpio14", "gpio15",
+				       "gpio16", "gpio17", "gpio18", "gpio19",
+				       "gpio20", "gpio21", "gpio22", "gpio23",
+				       "gpio24", "gpio25", "gpio26", "gpio27";
+				bias-disable;
+			};
+
+			rp1_gpclksrc0_gpio4: rp1_gpclksrc0_gpio4 {
+				function = "gpclk0";
+				pins = "gpio4";
+				bias-disable;
+			};
+
+			rp1_gpclksrc0_gpio20: rp1_gpclksrc0_gpio20 {
+				function = "gpclk0";
+				pins = "gpio20";
+				bias-disable;
+			};
+
+			rp1_gpclksrc1_gpio5: rp1_gpclksrc1_gpio5 {
+				function = "gpclk1";
+				pins = "gpio5";
+				bias-disable;
+			};
+
+			rp1_gpclksrc1_gpio18: rp1_gpclksrc1_gpio18 {
+				function = "gpclk1";
+				pins = "gpio18";
+				bias-disable;
+			};
+
+			rp1_gpclksrc1_gpio21: rp1_gpclksrc1_gpio21 {
+				function = "gpclk1";
+				pins = "gpio21";
+				bias-disable;
+			};
+
+			rp1_pwm1_gpio45: rp1_pwm1_gpio45 {
+				function = "pwm1";
+				pins = "gpio45";
+				bias-pull-down;
+			};
+
+			rp1_spi0_gpio9: rp1_spi0_gpio9 {
+				function = "spi0";
+				pins = "gpio9", "gpio10", "gpio11";
+				bias-disable;
+				drive-strength = <12>;
+				slew-rate = <1>;
+			};
+
+			rp1_spi0_cs_gpio7: rp1_spi0_cs_gpio7 {
+				function = "spi0";
+				pins = "gpio7", "gpio8";
+				bias-pull-up;
+			};
+
+			rp1_spi1_gpio19: rp1_spi1_gpio19 {
+				function = "spi1";
+				pins = "gpio19", "gpio20", "gpio21";
+				bias-disable;
+				drive-strength = <12>;
+				slew-rate = <1>;
+			};
+
+			rp1_spi2_gpio1: rp1_spi2_gpio1 {
+				function = "spi2";
+				pins = "gpio1", "gpio2", "gpio3";
+				bias-disable;
+				drive-strength = <12>;
+				slew-rate = <1>;
+			};
+
+			rp1_spi3_gpio5: rp1_spi3_gpio5 {
+				function = "spi3";
+				pins = "gpio5", "gpio6", "gpio7";
+				bias-disable;
+				drive-strength = <12>;
+				slew-rate = <1>;
+			};
+
+			rp1_spi4_gpio9: rp1_spi4_gpio9 {
+				function = "spi4";
+				pins = "gpio9", "gpio10", "gpio11";
+				bias-disable;
+				drive-strength = <12>;
+				slew-rate = <1>;
+			};
+
+			rp1_spi5_gpio13: rp1_spi5_gpio13 {
+				function = "spi5";
+				pins = "gpio13", "gpio14", "gpio15";
+				bias-disable;
+				drive-strength = <12>;
+				slew-rate = <1>;
+			};
+
+			rp1_spi8_gpio49: rp1_spi8_gpio49 {
+				function = "spi8";
+				pins = "gpio49", "gpio50", "gpio51";
+				bias-disable;
+				drive-strength = <12>;
+				slew-rate = <1>;
+			};
+
+			rp1_spi8_cs_gpio52: rp1_spi8_cs_gpio52 {
+				function = "spi0";
+				pins = "gpio52", "gpio53";
+				bias-pull-up;
+			};
+		};
+
+		rp1_eth: ethernet@100000 {
+			reg = <0xc0 0x40100000  0x0 0x4000>;
+			compatible = "cdns,macb";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			interrupts = <RP1_INT_ETH IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&macb_pclk &macb_hclk &rp1_clocks RP1_CLK_ETH_TSU>;
+			clock-names = "pclk", "hclk", "tsu_clk";
+			phy-mode = "rgmii-id";
+			cdns,aw2w-max-pipe = /bits/ 8 <8>;
+			cdns,ar2r-max-pipe = /bits/ 8 <8>;
+			cdns,use-aw2b-fill;
+			local-mac-address = [00 00 00 00 00 00];
+			status = "disabled";
+		};
+
+		rp1_csi0: csi@110000 {
+			compatible = "raspberrypi,rp1-cfe";
+			reg = <0xc0 0x40110000  0x0 0x100>, // CSI2 DMA address
+			      <0xc0 0x40114000  0x0 0x100>, // PHY/CSI Host address
+			      <0xc0 0x40120000  0x0 0x100>, // MIPI CFG address
+			      <0xc0 0x40124000  0x0 0x1000>; // PiSP FE address
+
+			// interrupts must match rp1_pisp_fe setup
+			interrupts = <RP1_INT_MIPI0 IRQ_TYPE_LEVEL_HIGH>;
+
+			clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
+			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
+			assigned-clock-rates = <25000000>;
+
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		rp1_csi1: csi@128000 {
+			compatible = "raspberrypi,rp1-cfe";
+			reg = <0xc0 0x40128000  0x0 0x100>, // CSI2 DMA address
+			      <0xc0 0x4012c000  0x0 0x100>, // PHY/CSI Host address
+			      <0xc0 0x40138000  0x0 0x100>, // MIPI CFG address
+			      <0xc0 0x4013c000  0x0 0x1000>; // PiSP FE address
+
+			// interrupts must match rp1_pisp_fe setup
+			interrupts = <RP1_INT_MIPI1 IRQ_TYPE_LEVEL_HIGH>;
+
+			clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
+			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
+			assigned-clock-rates = <25000000>;
+
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		rp1_mmc0: mmc@180000 {
+			reg = <0xc0 0x40180000  0x0 0x100>;
+			compatible = "raspberrypi,rp1-dwcmshc";
+			interrupts = <RP1_INT_SDIO0 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS &sdhci_core
+			          &rp1_clocks RP1_CLK_SDIO_TIMER
+			          &rp1_sdio_clk0>;
+			clock-names = "bus", "core", "timeout", "sdio";
+			/* Bank 0 VDDIO is fixed */
+			no-1-8-v;
+			bus-width = <4>;
+			vmmc-supply = <&rp1_vdd_3v3>;
+			broken-cd;
+			status = "disabled";
+		};
+
+		rp1_mmc1: mmc@184000 {
+			reg = <0xc0 0x40184000  0x0 0x100>;
+			compatible = "raspberrypi,rp1-dwcmshc";
+			interrupts = <RP1_INT_SDIO1 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&rp1_clocks RP1_CLK_SYS &sdhci_core
+			          &rp1_clocks RP1_CLK_SDIO_TIMER
+			          &rp1_sdio_clk1>;
+			clock-names = "bus", "core", "timeout", "sdio";
+			bus-width = <4>;
+			vmmc-supply = <&rp1_vdd_3v3>;
+			/* Nerf SDR speeds */
+			sdhci-caps-mask = <0x3 0x0>;
+			broken-cd;
+			status = "disabled";
+		};
+
+		rp1_dma: dma@188000 {
+			reg = <0xc0 0x40188000  0x0 0x1000>;
+			compatible = "snps,axi-dma-1.01a";
+			interrupts = <RP1_INT_DMA IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&sdhci_core &rp1_clocks RP1_CLK_SYS>;
+			clock-names = "core-clk", "cfgr-clk";
+
+			#dma-cells = <1>;
+			dma-channels = <8>;
+			snps,dma-masters = <1>;
+			snps,dma-targets = <64>;
+			snps,data-width = <4>; // (8 << 4) == 128 bits
+			snps,block-size = <0x40000 0x40000 0x40000 0x40000 0x40000 0x40000 0x40000 0x40000>;
+			snps,priority = <0 1 2 3 4 5 6 7>;
+			snps,axi-max-burst-len = <8>;
+			status = "disabled";
+		};
+
+		rp1_usb0: usb@200000 {
+			reg = <0xc0 0x40200000  0x0 0x100000>;
+			compatible = "snps,dwc3";
+			dr_mode = "host";
+			usb3-lpm-capable;
+			snps,axi-pipe-limit = /bits/ 8 <8>;
+			snps,dis_rxdet_inp3_quirk;
+			snps,parkmode-disable-ss-quirk;
+			snps,parkmode-disable-hs-quirk;
+			snps,parkmode-disable-fsls-quirk;
+			snps,tx-max-burst = /bits/ 8 <8>;
+			snps,tx-thr-num-pkt = /bits/ 8 <2>;
+			interrupts = <RP1_INT_USBHOST0_0 IRQ_TYPE_EDGE_RISING>;
+			status = "disabled";
+		};
+
+		rp1_usb1: usb@300000 {
+			reg = <0xc0 0x40300000  0x0 0x100000>;
+			compatible = "snps,dwc3";
+			dr_mode = "host";
+			usb3-lpm-capable;
+			snps,axi-pipe-limit = /bits/ 8 <8>;
+			snps,dis_rxdet_inp3_quirk;
+			snps,parkmode-disable-ss-quirk;
+			snps,parkmode-disable-hs-quirk;
+			snps,parkmode-disable-fsls-quirk;
+			snps,tx-max-burst = /bits/ 8 <8>;
+			snps,tx-thr-num-pkt = /bits/ 8 <2>;
+			interrupts = <RP1_INT_USBHOST1_0 IRQ_TYPE_EDGE_RISING>;
+			status = "disabled";
+		};
+
+		rp1_dsi0: dsi@110000 {
+			compatible = "raspberrypi,rp1dsi";
+			status = "disabled";
+			reg = <0xc0 0x40118000  0x0 0x1000>,  // MIPI0 DSI DMA (ArgonDPI)
+			      <0xc0 0x4011c000  0x0 0x1000>,  // MIPI0 DSI Host (SNPS)
+			      <0xc0 0x40120000  0x0 0x1000>;  // MIPI0 CFG
+
+			interrupts = <RP1_INT_MIPI0 IRQ_TYPE_LEVEL_HIGH>;
+
+			clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>,
+				 <&rp1_clocks RP1_CLK_MIPI0_DPI>,
+				 <&rp1_clocks RP1_CLK_MIPI0_DSI_BYTECLOCK>,
+				 <&clk_xosc>,                // hardwired to DSI "refclk"
+				 <&rp1_clocks RP1_PLL_SYS>;  // alternate parent for divide
+			clock-names = "cfgclk", "dpiclk", "byteclk", "refclk", "pllsys";
+
+			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
+			assigned-clock-rates = <25000000>;
+		};
+
+		rp1_dsi1: dsi@128000 {
+			compatible = "raspberrypi,rp1dsi";
+			status = "disabled";
+			reg = <0xc0 0x40130000  0x0 0x1000>,  // MIPI1 DSI DMA (ArgonDPI)
+		              <0xc0 0x40134000  0x0 0x1000>,  // MIPI1 DSI Host (SNPS)
+		              <0xc0 0x40138000  0x0 0x1000>;  // MIPI1 CFG
+
+			interrupts = <RP1_INT_MIPI1 IRQ_TYPE_LEVEL_HIGH>;
+
+			clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>,
+				 <&rp1_clocks RP1_CLK_MIPI1_DPI>,
+				 <&rp1_clocks RP1_CLK_MIPI1_DSI_BYTECLOCK>,
+				 <&clk_xosc>,               // hardwired to DSI "refclk"
+				 <&rp1_clocks RP1_PLL_SYS>; // alternate parent for divide
+			clock-names = "cfgclk", "dpiclk", "byteclk", "refclk", "pllsys";
+
+			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
+			assigned-clock-rates = <25000000>;
+		};
+
+		/* VEC and DPI both need to control PLL_VIDEO and cannot work together;   */
+		/* config.txt should enable one or other using dtparam=vec or an overlay. */
+		rp1_vec: vec@144000 {
+			compatible = "raspberrypi,rp1vec";
+			status = "disabled";
+			reg = <0xc0 0x40144000  0x0 0x1000>, // VIDEO_OUT_VEC
+			      <0xc0 0x40140000  0x0 0x1000>; // VIDEO_OUT_CFG
+
+			interrupts = <RP1_INT_VIDEO_OUT IRQ_TYPE_LEVEL_HIGH>;
+
+			clocks = <&rp1_clocks RP1_CLK_VEC>;
+
+			assigned-clocks = <&rp1_clocks RP1_PLL_VIDEO_CORE>,
+					  <&rp1_clocks RP1_PLL_VIDEO_SEC>,
+					  <&rp1_clocks RP1_CLK_VEC>;
+			assigned-clock-rates = <1188000000>,
+					       <108000000>,
+					       <108000000>;
+			assigned-clock-parents = <0>,
+						 <&rp1_clocks RP1_PLL_VIDEO_CORE>,
+						 <&rp1_clocks RP1_PLL_VIDEO_SEC>;
+		};
+
+		rp1_dpi: dpi@148000 {
+			compatible = "raspberrypi,rp1dpi";
+			status = "disabled";
+			reg = <0xc0 0x40148000  0x0 0x1000>, // VIDEO_OUT DPI
+			      <0xc0 0x40140000  0x0 0x1000>; // VIDEO_OUT_CFG
+
+			interrupts = <RP1_INT_VIDEO_OUT IRQ_TYPE_LEVEL_HIGH>;
+
+			clocks = <&rp1_clocks RP1_CLK_DPI>,        // DPI pixel clock
+				 <&rp1_clocks RP1_PLL_VIDEO>,      // PLL primary divider, and
+				 <&rp1_clocks RP1_PLL_VIDEO_CORE>; // VCO, which we also control
+			clock-names = "dpiclk", "plldiv", "pllcore";
+
+			assigned-clocks        = <&rp1_clocks RP1_CLK_DPI>;
+			assigned-clock-parents = <&rp1_clocks RP1_PLL_VIDEO>;
+		};
+	};
+};
+
+&clocks {
+	clk_xosc: clk_xosc {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-output-names = "xosc";
+		clock-frequency = <50000000>;
+	};
+	macb_pclk: macb_pclk {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-output-names = "pclk";
+		clock-frequency = <200000000>;
+	};
+	macb_hclk: macb_hclk {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-output-names = "hclk";
+		clock-frequency = <200000000>;
+	};
+	sdio_src: sdio_src {
+		// 400 MHz on FPGA. PLL sys VCO on asic
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-output-names = "src";
+		clock-frequency = <1000000000>;
+	};
+	sdhci_core: sdhci_core {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-output-names = "core";
+		clock-frequency = <50000000>;
+	};
+	/* GPIO derived clock sources. Each GPIO with a GPCLK function
+	 * can drive its output from the respective GPCLK
+	 * generator, and provide a clock source to other internal
+	 * dividers. Add dummy sources here so that they can be overridden
+	 * with overlays.
+	 */
+	clksrc_gp0: clksrc_gp0 {
+		status = "disabled";
+		compatible = "fixed-factor-clock";
+		#clock-cells = <0>;
+		clock-div = <1>;
+		clock-mult = <1>;
+		clocks = <&rp1_clocks RP1_CLK_GP0>;
+		clock-output-names = "clksrc_gp0";
+	};
+	clksrc_gp1: clksrc_gp1 {
+		status = "disabled";
+		compatible = "fixed-factor-clock";
+		#clock-cells = <0>;
+		clock-div = <1>;
+		clock-mult = <1>;
+		clocks = <&rp1_clocks RP1_CLK_GP1>;
+		clock-output-names = "clksrc_gp1";
+	};
+	clksrc_gp2: clksrc_gp2 {
+		status = "disabled";
+		compatible = "fixed-factor-clock";
+		clock-div = <1>;
+		clock-mult = <1>;
+		#clock-cells = <0>;
+		clocks = <&rp1_clocks RP1_CLK_GP2>;
+		clock-output-names = "clksrc_gp2";
+	};
+	clksrc_gp3: clksrc_gp3 {
+		status = "disabled";
+		compatible = "fixed-factor-clock";
+		clock-div = <1>;
+		clock-mult = <1>;
+		#clock-cells = <0>;
+		clocks = <&rp1_clocks RP1_CLK_GP3>;
+		clock-output-names = "clksrc_gp3";
+	};
+	clksrc_gp4: clksrc_gp4 {
+		status = "disabled";
+		compatible = "fixed-factor-clock";
+		#clock-cells = <0>;
+		clock-div = <1>;
+		clock-mult = <1>;
+		clocks = <&rp1_clocks RP1_CLK_GP4>;
+		clock-output-names = "clksrc_gp4";
+	};
+	clksrc_gp5: clksrc_gp5 {
+		status = "disabled";
+		compatible = "fixed-factor-clock";
+		#clock-cells = <0>;
+		clock-div = <1>;
+		clock-mult = <1>;
+		clocks = <&rp1_clocks RP1_CLK_GP5>;
+		clock-output-names = "clksrc_gp5";
+	};
+};
+
+/ {
+	rp1_vdd_3v3: rp1_vdd_3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "vdd-3v3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-always-on;
+	};
+};