File 0001-dts-bcm2712-amend-the-RP1-PCI-topology.patch of Package raspberrypi-firmware-dt

From 5159490fd5bcce18d0472440d999c303deb2df00 Mon Sep 17 00:00:00 2001
From: Andrea della Porta <andrea.porta@suse.com>
Date: Thu, 18 Dec 2025 21:23:29 +0100
Subject: [PATCH] dts: bcm2712: amend the RP1 PCI topology

---
 .../boot/dts/broadcom/bcm2712-rpi-5-b.dts     |   29 -
 arch/arm64/boot/dts/broadcom/rp1.dtsi         | 2360 +++++++++--------
 2 files changed, 1185 insertions(+), 1204 deletions(-)

diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
index bd6f747..37ecc33 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
@@ -131,35 +131,6 @@ rp1_target: &pcie2 {
 
 #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 = <0x00 0x40000000
-		  0x01 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 0x00410000>,
-
-	// inbound RP1 0x_xxxxxxxx -> PCIe 1x_xxxxxxxx
-		     <0x00 0x00000000
-		      0x02000000 0x10 0x00000000
-		      0x10 0x00000000>;
-};
-
 // Expose RP1 nodes as system nodes with labels
 
 &rp1_dma  {
diff --git a/arch/arm64/boot/dts/broadcom/rp1.dtsi b/arch/arm64/boot/dts/broadcom/rp1.dtsi
index a401aae..6783e45 100644
--- a/arch/arm64/boot/dts/broadcom/rp1.dtsi
+++ b/arch/arm64/boot/dts/broadcom/rp1.dtsi
@@ -3,1253 +3,1263 @@
 #include <dt-bindings/mfd/rp1.h>
 
 &rp1_target {
-    rp1_nexus {
-	compatible = "pci1de4,1";
-	#address-cells = <3>;
-	#size-cells = <2>;
-	ranges = <0x01 0x00 0x00000000
-		  0x02000000 0x00 0x00000000
-		  0x0 0x400000>;
-	interrupt-controller;
-	#interrupt-cells = <2>;
-
-	rp1: rp1 {
-		compatible = "simple-bus";
-		#address-cells = <2>;
+	pci@0,0 {
+		reg = <0x0 0x0 0x0 0x0 0x0>;
+		ranges;
+		bus-range = <0 1>;
+		device_type = "pci";
+		#address-cells = <3>;
 		#size-cells = <2>;
 
-		// ranges and dma-ranges must be provided by the includer
-
-		rp1_mbox: mailbox@8000 {
-			compatible = "raspberrypi,rp1-mbox";
-			status = "disabled";
-			reg = <0x00 0x40008000  0x0 0x4000>;  // SYSCFG
-			interrupts = <RP1_INT_SYSCFG IRQ_TYPE_LEVEL_HIGH>;
-			#mbox-cells = <1>;
-		};
-
-		rp1_clocks: clocks@18000 {
-			compatible = "raspberrypi,rp1-clocks";
-			#clock-cells = <1>;
-			reg = <0x00 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_CLK_ETH>,
-					  <&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
-					       <125000000>,  // RP1_CLK_ETH
-					       <61440000>,   // RP1_PLL_AUDIO
-					       <153600000>,  // 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 = <0x00 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 = <0x00341011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart1: serial@34000 {
-			compatible = "arm,pl011-axi";
-			reg = <0x00 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 = <0x00341011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart2: serial@38000 {
-			compatible = "arm,pl011-axi";
-			reg = <0x00 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 = <0x00341011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart3: serial@3c000 {
-			compatible = "arm,pl011-axi";
-			reg = <0x00 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 = <0x00341011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart4: serial@40000 {
-			compatible = "arm,pl011-axi";
-			reg = <0x00 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 = <0x00341011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_uart5: serial@44000 {
-			compatible = "arm,pl011-axi";
-			reg = <0x00 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 = <0x00341011>;
-			uart-has-rtscts;
-			cts-event-workaround;
-			skip-init;
-			status = "disabled";
-		};
-
-		rp1_spi8: spi@4c000 {
-			reg = <0x00 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 = <0x00 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 = <0x00 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 = <0x00 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 = <0x00 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 = <0x00 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 = "rohm,dh2228fv";
-				spi-max-frequency = <1000000>;
-			};
-		};
-
-		rp1_spi5: spi@64000 {
-			reg = <0x00 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 = <0x00 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 = <0x00 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 = "rohm,dh2228fv";
-				spi-max-frequency = <1000000>;
-			};
-		};
-
-		rp1_i2c0: i2c@70000 {
-			reg = <0x00 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 = <0x00 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 = <0x00 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 = <0x00 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 = <0x00 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 = <0x00 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 = <0x00 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_audio_out: audio_out@94000 {
-			compatible = "raspberrypi,rp1-audio-out";
-			reg = <0x00 0x40094000 0x0 0x4000>;
-			clocks = <&rp1_clocks RP1_CLK_AUDIO_OUT>;
-			assigned-clocks = <&rp1_clocks RP1_CLK_AUDIO_OUT>;
-			assigned-clock-rates = <153600000>;
-			assigned-clock-parents = <&rp1_clocks RP1_PLL_AUDIO_SEC>;
-			dmas = <&rp1_dma RP1_DMA_AUDIO_OUT>;
-			dma-maxburst = <4>;
-			dma-names = "tx";
-			#sound-dai-cells = <0>;
-			status = "disabled";
-		};
-
-		rp1_pwm0: pwm@98000 {
-			compatible = "raspberrypi,rp1-pwm";
-			reg = <0x00 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 = <0x00 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 = <0x00 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";
-			dma-maxburst = <4>;
-			status = "disabled";
-		};
-
-		rp1_i2s1: i2s@a4000 {
-			reg = <0x00 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";
-			dma-maxburst = <4>;
-			status = "disabled";
-		};
-
-		rp1_i2s2: i2s@a8000 {
-			reg = <0x00 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 = <0x00 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 = <0x00 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 = <0x00 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 = <0x00 0x400d0000  0x0 0xc000>,
-			      <0x00 0x400e0000  0x0 0xc000>,
-			      <0x00 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>;
+		dev@0,0 {
+			compatible = "pci1de4,1";
+			reg = <0x10000 0x0 0x0 0x0 0x0>;
+			ranges = <0x1 0x0 0x0 0x82010000 0x0 0x0 0x0 0x400000>;
 			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;
+			#address-cells = <3>;
+			#size-cells = <2>;
+
+			rp1: pci-ep-bus@1 {
+				compatible = "simple-bus";
+				ranges = <0x00 0x40000000  0x01 0x00 0x00000000  0x00 0x00400000>;
+				dma-ranges = <0x10 0x00000000  0x43000000 0x10 0x00000000  0x10 0x00000000>;
+				#address-cells = <2>;
+				#size-cells = <2>;
+
+				// ranges and dma-ranges must be provided by the includer
+
+				rp1_mbox: mailbox@8000 {
+					compatible = "raspberrypi,rp1-mbox";
+					status = "disabled";
+					reg = <0x00 0x40008000  0x0 0x4000>;  // SYSCFG
+					interrupts = <RP1_INT_SYSCFG IRQ_TYPE_LEVEL_HIGH>;
+					#mbox-cells = <1>;
 				};
-				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_clocks: clocks@18000 {
+					compatible = "raspberrypi,rp1-clocks";
+					#clock-cells = <1>;
+					reg = <0x00 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_CLK_ETH>,
+							  <&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
+							       <125000000>,  // RP1_CLK_ETH
+							       <61440000>,   // RP1_PLL_AUDIO
+							       <153600000>,  // 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_uart4_12_13: rp1_uart4_12_13 {
-				pin_txd {
-					function = "uart4";
-					pins = "gpio12";
-					bias-disable;
+
+				rp1_uart0: serial@30000 {
+					compatible = "arm,pl011-axi";
+					reg = <0x00 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 = <0x00341011>;
+					uart-has-rtscts;
+					cts-event-workaround;
+					skip-init;
+					status = "disabled";
 				};
-				pin_rxd {
-					function = "uart4";
-					pins = "gpio13";
-					bias-pull-up;
+
+				rp1_uart1: serial@34000 {
+					compatible = "arm,pl011-axi";
+					reg = <0x00 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 = <0x00341011>;
+					uart-has-rtscts;
+					cts-event-workaround;
+					skip-init;
+					status = "disabled";
 				};
-			};
-			rp1_uart4_ctsrts_14_15: rp1_uart4_ctsrts_14_15 {
-				pin_cts {
-					function = "uart4";
-					pins = "gpio14";
-					bias-pull-up;
+
+				rp1_uart2: serial@38000 {
+					compatible = "arm,pl011-axi";
+					reg = <0x00 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 = <0x00341011>;
+					uart-has-rtscts;
+					cts-event-workaround;
+					skip-init;
+					status = "disabled";
 				};
-				pin_rts {
-					function = "uart4";
-					pins = "gpio15";
-					bias-disable;
+
+				rp1_uart3: serial@3c000 {
+					compatible = "arm,pl011-axi";
+					reg = <0x00 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 = <0x00341011>;
+					uart-has-rtscts;
+					cts-event-workaround;
+					skip-init;
+					status = "disabled";
 				};
-			};
 
-			rp1_sdio0_22_27: rp1_sdio0_22_27 {
-				pin_clk {
-					function = "sd0";
-					pins = "gpio22";
-					bias-disable;
-					drive-strength = <12>;
-					slew-rate = <1>;
+				rp1_uart4: serial@40000 {
+					compatible = "arm,pl011-axi";
+					reg = <0x00 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 = <0x00341011>;
+					uart-has-rtscts;
+					cts-event-workaround;
+					skip-init;
+					status = "disabled";
 				};
-				pin_cmd {
-					function = "sd0";
-					pins = "gpio23";
-					bias-pull-up;
-					drive-strength = <12>;
-					slew-rate = <1>;
+
+				rp1_uart5: serial@44000 {
+					compatible = "arm,pl011-axi";
+					reg = <0x00 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 = <0x00341011>;
+					uart-has-rtscts;
+					cts-event-workaround;
+					skip-init;
+					status = "disabled";
 				};
-				pins_dat {
-					function = "sd0";
-					pins = "gpio24", "gpio25", "gpio26", "gpio27";
-					bias-pull-up;
-					drive-strength = <12>;
-					slew-rate = <1>;
+
+				rp1_spi8: spi@4c000 {
+					reg = <0x00 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_sdio1_28_33: rp1_sdio1_28_33 {
-				pin_clk {
-					function = "sd1";
-					pins = "gpio28";
-					bias-disable;
-					drive-strength = <12>;
-					slew-rate = <1>;
+				rp1_spi0: spi@50000 {
+					reg = <0x00 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";
 				};
-				pin_cmd {
-					function = "sd1";
-					pins = "gpio29";
-					bias-pull-up;
-					drive-strength = <12>;
-					slew-rate = <1>;
+
+				rp1_spi1: spi@54000 {
+					reg = <0x00 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";
 				};
-				pins_dat {
-					function = "sd1";
-					pins = "gpio30", "gpio31", "gpio32", "gpio33";
-					bias-pull-up;
-					drive-strength = <12>;
-					slew-rate = <1>;
+
+				rp1_spi2: spi@58000 {
+					reg = <0x00 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_i2s0_18_21: rp1_i2s0_18_21 {
-				function = "i2s0";
-				pins = "gpio18", "gpio19", "gpio20", "gpio21";
-				bias-disable;
-			};
+				rp1_spi3: spi@5c000 {
+					reg = <0x00 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";
+				};
 
-			rp1_i2s1_18_21: rp1_i2s1_18_21 {
-				function = "i2s1";
-				pins = "gpio18", "gpio19", "gpio20", "gpio21";
-				bias-disable;
-			};
+				// SPI4 is a target/slave interface
+				rp1_spi4: spi@60000 {
+					reg = <0x00 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 = "rohm,dh2228fv";
+						spi-max-frequency = <1000000>;
+					};
+				};
 
-			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;
-			};
+				rp1_spi5: spi@64000 {
+					reg = <0x00 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";
+				};
 
-			// 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;
-			};
+				rp1_spi6: spi@68000 {
+					reg = <0x00 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";
+				};
 
-			// 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;
-			};
+				// SPI7 is a target/slave interface
+				rp1_spi7: spi@6c000 {
+					reg = <0x00 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 = "rohm,dh2228fv";
+						spi-max-frequency = <1000000>;
+					};
+				};
 
-			rp1_gpclksrc0_gpio4: rp1_gpclksrc0_gpio4 {
-				function = "gpclk0";
-				pins = "gpio4";
-				bias-disable;
-			};
+				rp1_i2c0: i2c@70000 {
+					reg = <0x00 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_gpclksrc0_gpio20: rp1_gpclksrc0_gpio20 {
-				function = "gpclk0";
-				pins = "gpio20";
-				bias-disable;
-			};
+				rp1_i2c1: i2c@74000 {
+					reg = <0x00 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_gpclksrc1_gpio5: rp1_gpclksrc1_gpio5 {
-				function = "gpclk1";
-				pins = "gpio5";
-				bias-disable;
-			};
+				rp1_i2c2: i2c@78000 {
+					reg = <0x00 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_gpclksrc1_gpio18: rp1_gpclksrc1_gpio18 {
-				function = "gpclk1";
-				pins = "gpio18";
-				bias-disable;
-			};
+				rp1_i2c3: i2c@7c000 {
+					reg = <0x00 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_gpclksrc1_gpio21: rp1_gpclksrc1_gpio21 {
-				function = "gpclk1";
-				pins = "gpio21";
-				bias-disable;
-			};
+				rp1_i2c4: i2c@80000 {
+					reg = <0x00 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_pwm1_gpio45: rp1_pwm1_gpio45 {
-				function = "pwm1";
-				pins = "gpio45";
-				bias-pull-down;
-			};
+				rp1_i2c5: i2c@84000 {
+					reg = <0x00 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_spi0_gpio9: rp1_spi0_gpio9 {
-				function = "spi0";
-				pins = "gpio9", "gpio10", "gpio11";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
+				rp1_i2c6: i2c@88000 {
+					reg = <0x00 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_spi0_cs_gpio7: rp1_spi0_cs_gpio7 {
-				function = "spi0";
-				pins = "gpio7", "gpio8";
-				bias-pull-up;
-			};
+				rp1_audio_out: audio_out@94000 {
+					compatible = "raspberrypi,rp1-audio-out";
+					reg = <0x00 0x40094000 0x0 0x4000>;
+					clocks = <&rp1_clocks RP1_CLK_AUDIO_OUT>;
+					assigned-clocks = <&rp1_clocks RP1_CLK_AUDIO_OUT>;
+					assigned-clock-rates = <153600000>;
+					assigned-clock-parents = <&rp1_clocks RP1_PLL_AUDIO_SEC>;
+					dmas = <&rp1_dma RP1_DMA_AUDIO_OUT>;
+					dma-maxburst = <4>;
+					dma-names = "tx";
+					#sound-dai-cells = <0>;
+					status = "disabled";
+				};
 
-			rp1_spi1_gpio19: rp1_spi1_gpio19 {
-				function = "spi1";
-				pins = "gpio19", "gpio20", "gpio21";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
+				rp1_pwm0: pwm@98000 {
+					compatible = "raspberrypi,rp1-pwm";
+					reg = <0x00 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_spi2_gpio1: rp1_spi2_gpio1 {
-				function = "spi2";
-				pins = "gpio1", "gpio2", "gpio3";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
+				rp1_pwm1: pwm@9c000 {
+					compatible = "raspberrypi,rp1-pwm";
+					reg = <0x00 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_spi3_gpio5: rp1_spi3_gpio5 {
-				function = "spi3";
-				pins = "gpio5", "gpio6", "gpio7";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
+				rp1_i2s0: i2s@a0000 {
+					reg = <0x00 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";
+					dma-maxburst = <4>;
+					status = "disabled";
+				};
 
-			rp1_spi4_gpio9: rp1_spi4_gpio9 {
-				function = "spi4";
-				pins = "gpio9", "gpio10", "gpio11";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
+				rp1_i2s1: i2s@a4000 {
+					reg = <0x00 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";
+					dma-maxburst = <4>;
+					status = "disabled";
+				};
 
-			rp1_spi5_gpio13: rp1_spi5_gpio13 {
-				function = "spi5";
-				pins = "gpio13", "gpio14", "gpio15";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
+				rp1_i2s2: i2s@a8000 {
+					reg = <0x00 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_spi8_gpio49: rp1_spi8_gpio49 {
-				function = "spi8";
-				pins = "gpio49", "gpio50", "gpio51";
-				bias-disable;
-				drive-strength = <12>;
-				slew-rate = <1>;
-			};
+				rp1_sdio_clk0: sdio_clk0@b0004 {
+					compatible = "raspberrypi,rp1-sdio-clk";
+					reg = <0x00 0x400b0004 0x0 0x1c>;
+					clocks = <&sdio_src &sdhci_core>;
+					clock-names = "src", "base";
+					#clock-cells = <0>;
+					status = "disabled";
+				};
 
-			rp1_spi8_cs_gpio52: rp1_spi8_cs_gpio52 {
-				function = "spi0";
-				pins = "gpio52", "gpio53";
-				bias-pull-up;
-			};
+				rp1_sdio_clk1: sdio_clk1@b4004 {
+					compatible = "raspberrypi,rp1-sdio-clk";
+					reg = <0x00 0x400b4004 0x0 0x1c>;
+					clocks = <&sdio_src &sdhci_core>;
+					clock-names = "src", "base";
+					#clock-cells = <0>;
+					status = "disabled";
+				};
 
-			rp1_audio_out_12_13: rp1_audio_out_12_13 {
-				function = "aaud";
-				pins = "gpio12", "gpio13";
-				bias-disable;
-			};
-		};
+				rp1_adc: adc@c8000 {
+					compatible = "raspberrypi,rp1-adc";
+					reg = <0x00 0x400c8000 0x0 0x4000>;
+					clocks = <&rp1_clocks RP1_CLK_ADC>;
+					clock-names = "adcclk";
+					#clock-cells = <0>;
+					vref-supply = <&rp1_vdd_3v3>;
+					status = "disabled";
+				};
 
-		rp1_eth: ethernet@100000 {
-			reg = <0x00 0x40100000  0x0 0x4000>;
-			compatible = "raspberrypi,rp1-gem", "cdns,macb";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			interrupts = <RP1_INT_ETH IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_SYS
-				  &rp1_clocks RP1_CLK_SYS
-				  &rp1_clocks RP1_CLK_ETH_TSU
-				  &rp1_clocks RP1_CLK_ETH>;
-			clock-names = "pclk", "hclk", "tsu_clk", "tx_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_gpio: gpio@d0000 {
+					reg = <0x00 0x400d0000  0x0 0xc000>,
+					      <0x00 0x400e0000  0x0 0xc000>,
+					      <0x00 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_audio_out_12_13: rp1_audio_out_12_13 {
+						function = "aaud";
+						pins = "gpio12", "gpio13";
+						bias-disable;
+					};
+				};
 
-		rp1_csi0: csi@110000 {
-			compatible = "raspberrypi,rp1-cfe";
-			reg = <0x00 0x40110000  0x0 0x100>, // CSI2 DMA address
-			      <0x00 0x40114000  0x0 0x100>, // PHY/CSI Host address
-			      <0x00 0x40120000  0x0 0x100>, // MIPI CFG address
-			      <0x00 0x40124000  0x0 0x1000>; // PiSP FE address
+				rp1_eth: ethernet@100000 {
+					reg = <0x00 0x40100000  0x0 0x4000>;
+					compatible = "raspberrypi,rp1-gem", "cdns,macb";
+					#address-cells = <1>;
+					#size-cells = <0>;
+					interrupts = <RP1_INT_ETH IRQ_TYPE_LEVEL_HIGH>;
+					clocks = <&rp1_clocks RP1_CLK_SYS
+						  &rp1_clocks RP1_CLK_SYS
+						  &rp1_clocks RP1_CLK_ETH_TSU
+						  &rp1_clocks RP1_CLK_ETH>;
+					clock-names = "pclk", "hclk", "tsu_clk", "tx_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";
+				};
 
-			// interrupts must match rp1_pisp_fe setup
-			interrupts = <RP1_INT_MIPI0 IRQ_TYPE_LEVEL_HIGH>;
+				rp1_csi0: csi@110000 {
+					compatible = "raspberrypi,rp1-cfe";
+					reg = <0x00 0x40110000  0x0 0x100>, // CSI2 DMA address
+					      <0x00 0x40114000  0x0 0x100>, // PHY/CSI Host address
+					      <0x00 0x40120000  0x0 0x100>, // MIPI CFG address
+					      <0x00 0x40124000  0x0 0x1000>; // PiSP FE address
 
-			clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
-			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
-			assigned-clock-rates = <25000000>;
+					// interrupts must match rp1_pisp_fe setup
+					interrupts = <RP1_INT_MIPI0 IRQ_TYPE_LEVEL_HIGH>;
 
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
+					clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
+					assigned-clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
+					assigned-clock-rates = <25000000>;
 
-		rp1_csi1: csi@128000 {
-			compatible = "raspberrypi,rp1-cfe";
-			reg = <0x00 0x40128000  0x0 0x100>, // CSI2 DMA address
-			      <0x00 0x4012c000  0x0 0x100>, // PHY/CSI Host address
-			      <0x00 0x40138000  0x0 0x100>, // MIPI CFG address
-			      <0x00 0x4013c000  0x0 0x1000>; // PiSP FE address
+					#address-cells = <1>;
+					#size-cells = <0>;
+					status = "disabled";
+				};
 
-			// interrupts must match rp1_pisp_fe setup
-			interrupts = <RP1_INT_MIPI1 IRQ_TYPE_LEVEL_HIGH>;
+				rp1_csi1: csi@128000 {
+					compatible = "raspberrypi,rp1-cfe";
+					reg = <0x00 0x40128000  0x0 0x100>, // CSI2 DMA address
+					      <0x00 0x4012c000  0x0 0x100>, // PHY/CSI Host address
+					      <0x00 0x40138000  0x0 0x100>, // MIPI CFG address
+					      <0x00 0x4013c000  0x0 0x1000>; // PiSP FE address
 
-			clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
-			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
-			assigned-clock-rates = <25000000>;
+					// interrupts must match rp1_pisp_fe setup
+					interrupts = <RP1_INT_MIPI1 IRQ_TYPE_LEVEL_HIGH>;
 
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
+					clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
+					assigned-clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
+					assigned-clock-rates = <25000000>;
 
-		rp1_pio: pio@178000 {
-			reg = <0x00 0x40178000  0x0 0x20>;
-			compatible = "raspberrypi,rp1-pio";
-			firmware = <&rp1_firmware>;
-			dmas = <&rp1_dma RP1_DMA_PIO_CH0_TX>, <&rp1_dma RP1_DMA_PIO_CH0_RX>,
-				   <&rp1_dma RP1_DMA_PIO_CH1_TX>, <&rp1_dma RP1_DMA_PIO_CH1_RX>,
-				   <&rp1_dma RP1_DMA_PIO_CH2_TX>, <&rp1_dma RP1_DMA_PIO_CH2_RX>,
-				   <&rp1_dma RP1_DMA_PIO_CH3_TX>, <&rp1_dma RP1_DMA_PIO_CH3_RX>;
-			dma-names = "tx0", "rx0", "tx1", "rx1", "tx2", "rx2", "tx3", "rx3";
-			status = "disabled";
-		};
+					#address-cells = <1>;
+					#size-cells = <0>;
+					status = "disabled";
+				};
 
-		rp1_mmc0: mmc@180000 {
-			reg = <0x00 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_pio: pio@178000 {
+					reg = <0x00 0x40178000  0x0 0x20>;
+					compatible = "raspberrypi,rp1-pio";
+					firmware = <&rp1_firmware>;
+					dmas = <&rp1_dma RP1_DMA_PIO_CH0_TX>, <&rp1_dma RP1_DMA_PIO_CH0_RX>,
+						   <&rp1_dma RP1_DMA_PIO_CH1_TX>, <&rp1_dma RP1_DMA_PIO_CH1_RX>,
+						   <&rp1_dma RP1_DMA_PIO_CH2_TX>, <&rp1_dma RP1_DMA_PIO_CH2_RX>,
+						   <&rp1_dma RP1_DMA_PIO_CH3_TX>, <&rp1_dma RP1_DMA_PIO_CH3_RX>;
+					dma-names = "tx0", "rx0", "tx1", "rx1", "tx2", "rx2", "tx3", "rx3";
+					status = "disabled";
+				};
 
-		rp1_mmc1: mmc@184000 {
-			reg = <0x00 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_mmc0: mmc@180000 {
+					reg = <0x00 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_dma: dma@188000 {
-			reg = <0x00 0x40188000  0x0 0x1000>;
-			compatible = "snps,axi-dma-1.01a";
-			interrupts = <RP1_INT_DMA IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&rp1_clocks RP1_CLK_DMA &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 = <4>;
-			status = "disabled";
-		};
+				rp1_mmc1: mmc@184000 {
+					reg = <0x00 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_usb0: usb@200000 {
-			reg = <0x00 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,enhanced-nak-fs-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_dma: dma@188000 {
+					reg = <0x00 0x40188000  0x0 0x1000>;
+					compatible = "snps,axi-dma-1.01a";
+					interrupts = <RP1_INT_DMA IRQ_TYPE_LEVEL_HIGH>;
+					clocks = <&rp1_clocks RP1_CLK_DMA &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 = <4>;
+					status = "disabled";
+				};
 
-		rp1_usb1: usb@300000 {
-			reg = <0x00 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,enhanced-nak-fs-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_usb0: usb@200000 {
+					reg = <0x00 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,enhanced-nak-fs-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_dsi0: dsi@110000 {
-			compatible = "raspberrypi,rp1dsi";
-			status = "disabled";
-			reg = <0x00 0x40118000  0x0 0x1000>,  // MIPI0 DSI DMA (ArgonDPI)
-			      <0x00 0x4011c000  0x0 0x1000>,  // MIPI0 DSI Host (SNPS)
-			      <0x00 0x40120000  0x0 0x1000>;  // MIPI0 CFG
+				rp1_usb1: usb@300000 {
+					reg = <0x00 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,enhanced-nak-fs-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";
+				};
 
-			interrupts = <RP1_INT_MIPI0 IRQ_TYPE_LEVEL_HIGH>;
+				rp1_dsi0: dsi@110000 {
+					compatible = "raspberrypi,rp1dsi";
+					status = "disabled";
+					reg = <0x00 0x40118000  0x0 0x1000>,  // MIPI0 DSI DMA (ArgonDPI)
+					      <0x00 0x4011c000  0x0 0x1000>,  // MIPI0 DSI Host (SNPS)
+					      <0x00 0x40120000  0x0 0x1000>;  // MIPI0 CFG
 
-			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";
+					interrupts = <RP1_INT_MIPI0 IRQ_TYPE_LEVEL_HIGH>;
 
-			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
-			assigned-clock-rates = <25000000>;
-		};
+					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";
 
-		rp1_dsi1: dsi@128000 {
-			compatible = "raspberrypi,rp1dsi";
-			status = "disabled";
-			reg = <0x00 0x40130000  0x0 0x1000>,  // MIPI1 DSI DMA (ArgonDPI)
-		              <0x00 0x40134000  0x0 0x1000>,  // MIPI1 DSI Host (SNPS)
-		              <0x00 0x40138000  0x0 0x1000>;  // MIPI1 CFG
+					assigned-clocks = <&rp1_clocks RP1_CLK_MIPI0_CFG>;
+					assigned-clock-rates = <25000000>;
+				};
 
-			interrupts = <RP1_INT_MIPI1 IRQ_TYPE_LEVEL_HIGH>;
+				rp1_dsi1: dsi@128000 {
+					compatible = "raspberrypi,rp1dsi";
+					status = "disabled";
+					reg = <0x00 0x40130000  0x0 0x1000>,  // MIPI1 DSI DMA (ArgonDPI)
+					      <0x00 0x40134000  0x0 0x1000>,  // MIPI1 DSI Host (SNPS)
+					      <0x00 0x40138000  0x0 0x1000>;  // MIPI1 CFG
 
-			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";
+					interrupts = <RP1_INT_MIPI1 IRQ_TYPE_LEVEL_HIGH>;
 
-			assigned-clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
-			assigned-clock-rates = <25000000>;
-		};
+					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";
 
-		/* 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 = <0x00 0x40144000  0x0 0x1000>, // VIDEO_OUT_VEC
-			      <0x00 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>;
-		};
+					assigned-clocks = <&rp1_clocks RP1_CLK_MIPI1_CFG>;
+					assigned-clock-rates = <25000000>;
+				};
 
-		rp1_dpi: dpi@148000 {
-			compatible = "raspberrypi,rp1dpi";
-			status = "disabled";
-			reg = <0x00 0x40148000  0x0 0x1000>, // VIDEO_OUT DPI
-			      <0x00 0x40140000  0x0 0x1000>; // VIDEO_OUT_CFG
+				/* 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 = <0x00 0x40144000  0x0 0x1000>, // VIDEO_OUT_VEC
+					      <0x00 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>;
+				};
 
-			interrupts = <RP1_INT_VIDEO_OUT IRQ_TYPE_LEVEL_HIGH>;
+				rp1_dpi: dpi@148000 {
+					compatible = "raspberrypi,rp1dpi";
+					status = "disabled";
+					reg = <0x00 0x40148000  0x0 0x1000>, // VIDEO_OUT DPI
+					      <0x00 0x40140000  0x0 0x1000>; // VIDEO_OUT_CFG
 
-			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";
+					interrupts = <RP1_INT_VIDEO_OUT IRQ_TYPE_LEVEL_HIGH>;
 
-			assigned-clocks        = <&rp1_clocks RP1_CLK_DPI>;
-			assigned-clock-parents = <&rp1_clocks RP1_PLL_VIDEO>;
-		};
+					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";
 
-		sram: sram@400000 {
-			compatible = "mmio-sram";
-			reg = <0x00 0x40400000  0x0 0x10000>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0  0x00 0x40400000  0x10000>;
+					assigned-clocks        = <&rp1_clocks RP1_CLK_DPI>;
+					assigned-clock-parents = <&rp1_clocks RP1_PLL_VIDEO>;
+				};
 
-			rp1_fw_shmem: shmem@ff00 {
-				compatible = "raspberrypi,rp1-shmem";
-				reg = <0xff00 0x100>; // firmware mailbox buffer
+				sram: sram@400000 {
+					compatible = "mmio-sram";
+					reg = <0x00 0x40400000  0x0 0x10000>;
+					#address-cells = <1>;
+					#size-cells = <1>;
+					ranges = <0  0x00 0x40400000  0x10000>;
+
+					rp1_fw_shmem: shmem@ff00 {
+						compatible = "raspberrypi,rp1-shmem";
+						reg = <0xff00 0x100>; // firmware mailbox buffer
+					};
+				};
 			};
 		};
 	};
-    };
 };
 
 &clocks {
-- 
2.51.0

openSUSE Build Service is sponsored by