[PATCH] ARM: dts: ixp4xx: Use the expansion bus

Linus Walleij linus.walleij at linaro.org
Thu Jul 22 11:47:20 PDT 2021


Replace the "simple-bus" simplification by the proper bus for
IXP4xx memory or device expansion.

Use chip-select addressing with two address cells on all the
flashes mounted on the IXP4xx devices. This includes all flash
chips.

Change the unit-name from @50000000 to @c4000000 as the DTS
validation screams. The registers for controlling the bus are
at c4000000 but the actual memory windows and ranges are at
50000000. Well it is just syntax, we can live with it.

Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
 .../boot/dts/intel-ixp42x-dlink-dsm-g600.dts  |  6 ++--
 .../boot/dts/intel-ixp42x-iomega-nas100d.dts  |  6 ++--
 .../boot/dts/intel-ixp42x-linksys-nslu2.dts   |  6 ++--
 .../boot/dts/intel-ixp42x-omicron-mic256.dts  |  6 ++--
 arch/arm/boot/dts/intel-ixp42x-omicron.dtsi   |  6 ++--
 .../dts/intel-ixp42x-welltech-epbx100.dts     |  6 ++--
 arch/arm/boot/dts/intel-ixp42x.dtsi           |  4 +++
 .../dts/intel-ixp43x-gateworks-gw2358.dts     |  8 ++---
 arch/arm/boot/dts/intel-ixp43x.dtsi           |  4 +++
 arch/arm/boot/dts/intel-ixp45x-ixp46x.dtsi    |  9 ++++++
 arch/arm/boot/dts/intel-ixp4xx.dtsi           | 30 ++++++++++++++-----
 11 files changed, 61 insertions(+), 30 deletions(-)

diff --git a/arch/arm/boot/dts/intel-ixp42x-dlink-dsm-g600.dts b/arch/arm/boot/dts/intel-ixp42x-dlink-dsm-g600.dts
index fcc5ffd49227..530be10e25d0 100644
--- a/arch/arm/boot/dts/intel-ixp42x-dlink-dsm-g600.dts
+++ b/arch/arm/boot/dts/intel-ixp42x-dlink-dsm-g600.dts
@@ -99,16 +99,16 @@ gpio-poweroff {
 	};
 
 	soc {
-		bus at 50000000 {
+		bus at c4000000 {
 			/* The first 16MB region at CS0 on the expansion bus */
-			flash at 0 {
+			flash at 0,0 {
 				compatible = "intel,ixp4xx-flash", "cfi-flash";
 				bank-width = <2>;
 				/*
 				 * 16 MB of Flash in 128 0x20000 sized blocks
 				 * mapped in at CS0.
 				 */
-				reg = <0x00000000 0x1000000>;
+				reg = <0 0x00000000 0x1000000>;
 
 				partitions {
 					compatible = "redboot-fis";
diff --git a/arch/arm/boot/dts/intel-ixp42x-iomega-nas100d.dts b/arch/arm/boot/dts/intel-ixp42x-iomega-nas100d.dts
index 16114eb29e6e..283c68ad9387 100644
--- a/arch/arm/boot/dts/intel-ixp42x-iomega-nas100d.dts
+++ b/arch/arm/boot/dts/intel-ixp42x-iomega-nas100d.dts
@@ -89,16 +89,16 @@ gpio-poweroff {
 	};
 
 	soc {
-		bus at 50000000 {
+		bus at c4000000 {
 			/* The first 16MB region at CS0 on the expansion bus */
-			flash at 0 {
+			flash at 0,0 {
 				compatible = "intel,ixp4xx-flash", "cfi-flash";
 				bank-width = <2>;
 				/*
 				 * 8 MB of Flash in 0x20000 byte blocks
 				 * mapped in at CS0.
 				 */
-				reg = <0x00000000 0x800000>;
+				reg = <0 0x00000000 0x800000>;
 
 				partitions {
 					compatible = "redboot-fis";
diff --git a/arch/arm/boot/dts/intel-ixp42x-linksys-nslu2.dts b/arch/arm/boot/dts/intel-ixp42x-linksys-nslu2.dts
index 5b8dcc19deee..3feee6aa5c20 100644
--- a/arch/arm/boot/dts/intel-ixp42x-linksys-nslu2.dts
+++ b/arch/arm/boot/dts/intel-ixp42x-linksys-nslu2.dts
@@ -96,16 +96,16 @@ gpio-beeper {
 	};
 
 	soc {
-		bus at 50000000 {
+		bus at c4000000 {
 			/* The first 16MB region at CS0 on the expansion bus */
-			flash at 0 {
+			flash at 0,0 {
 				compatible = "intel,ixp4xx-flash", "cfi-flash";
 				bank-width = <2>;
 				/*
 				 * 8 MB of Flash in 0x20000 byte blocks
 				 * mapped in at CS0.
 				 */
-				reg = <0x00000000 0x800000>;
+				reg = <0 0x00000000 0x800000>;
 
 				partitions {
 					compatible = "redboot-fis";
diff --git a/arch/arm/boot/dts/intel-ixp42x-omicron-mic256.dts b/arch/arm/boot/dts/intel-ixp42x-omicron-mic256.dts
index cfde0b35c698..4ff021067c14 100644
--- a/arch/arm/boot/dts/intel-ixp42x-omicron-mic256.dts
+++ b/arch/arm/boot/dts/intel-ixp42x-omicron-mic256.dts
@@ -19,12 +19,12 @@ memory at 0 {
 
 	soc {
 		/* MIC256 has an addition 16MB of flash memory */
-		bus at 50000000 {
+		bus at c4000000 {
 			/* The second 16MB region at CS1 on the expansion bus */
-			flash at 51000000 {
+			flash at 1,0 {
 				compatible = "intel,ixp4xx-flash", "cfi-flash";
 				bank-width = <2>;
-				reg = <0x51000000 0x1000000>;
+				reg = <1 0x00000000 0x1000000>;
 			};
 		};
 	};
diff --git a/arch/arm/boot/dts/intel-ixp42x-omicron.dtsi b/arch/arm/boot/dts/intel-ixp42x-omicron.dtsi
index ef959eb39179..a0b7d3379196 100644
--- a/arch/arm/boot/dts/intel-ixp42x-omicron.dtsi
+++ b/arch/arm/boot/dts/intel-ixp42x-omicron.dtsi
@@ -27,16 +27,16 @@ aliases {
 	};
 
 	soc {
-		bus at 50000000 {
+		bus at c4000000 {
 			/* The first 16MB region at CS0 on the expansion bus */
-			flash at 0 {
+			flash at 0,0 {
 				compatible = "intel,ixp4xx-flash", "cfi-flash";
 				bank-width = <2>;
 				/*
 				 * 16 MB of Flash in 128 0x20000 sized blocks
 				 * mapped in at CS0.
 				 */
-				reg = <0x00000000 0x1000000>;
+				reg = <0 0x00000000 0x1000000>;
 				#address-cells = <1>;
 				#size-cells = <1>;
 
diff --git a/arch/arm/boot/dts/intel-ixp42x-welltech-epbx100.dts b/arch/arm/boot/dts/intel-ixp42x-welltech-epbx100.dts
index 220605e297c3..f5846a50e4d4 100644
--- a/arch/arm/boot/dts/intel-ixp42x-welltech-epbx100.dts
+++ b/arch/arm/boot/dts/intel-ixp42x-welltech-epbx100.dts
@@ -29,14 +29,14 @@ aliases {
 	};
 
 	soc {
-		bus at 50000000 {
-			flash at 0 {
+		bus at c4000000 {
+			flash at 0,0 {
 				compatible = "intel,ixp4xx-flash", "cfi-flash";
 				bank-width = <2>;
 				/*
 				 * 16 MB of Flash
 				 */
-				reg = <0x00000000 0x1000000>;
+				reg = <0 0x00000000 0x1000000>;
 
 				partitions {
 					compatible = "fixed-partitions";
diff --git a/arch/arm/boot/dts/intel-ixp42x.dtsi b/arch/arm/boot/dts/intel-ixp42x.dtsi
index 5fa063ed396c..7f5a86524432 100644
--- a/arch/arm/boot/dts/intel-ixp42x.dtsi
+++ b/arch/arm/boot/dts/intel-ixp42x.dtsi
@@ -7,6 +7,10 @@
 
 / {
 	soc {
+		bus at c4000000 {
+			compatible = "intel,ixp42x-expansion-bus-controller";
+		};
+
 		pci at c0000000 {
 			compatible = "intel,ixp42x-pci";
 		};
diff --git a/arch/arm/boot/dts/intel-ixp43x-gateworks-gw2358.dts b/arch/arm/boot/dts/intel-ixp43x-gateworks-gw2358.dts
index 60a1228a970f..5d3d353cb03c 100644
--- a/arch/arm/boot/dts/intel-ixp43x-gateworks-gw2358.dts
+++ b/arch/arm/boot/dts/intel-ixp43x-gateworks-gw2358.dts
@@ -77,15 +77,15 @@ pld1: pld at 57 {
 	};
 
 	soc {
-		bus at 50000000 {
-			flash at 0 {
+		bus at c4000000 {
+			flash at 0,0 {
 				compatible = "intel,ixp4xx-flash", "cfi-flash";
 				bank-width = <2>;
 				/*
 				 * 32 MB of Flash in 0x20000 byte blocks
-				 * mapped in at CS0.
+				 * mapped in at CS0 and CS1
 				 */
-				reg = <0x00000000 0x2000000>;
+				reg = <0 0x00000000 0x2000000>;
 
 				partitions {
 					compatible = "redboot-fis";
diff --git a/arch/arm/boot/dts/intel-ixp43x.dtsi b/arch/arm/boot/dts/intel-ixp43x.dtsi
index 1d0817c6e3f9..ba6ffe537985 100644
--- a/arch/arm/boot/dts/intel-ixp43x.dtsi
+++ b/arch/arm/boot/dts/intel-ixp43x.dtsi
@@ -8,6 +8,10 @@
 
 / {
 	soc {
+		bus at c4000000 {
+			compatible = "intel,ixp43x-expansion-bus-controller";
+		};
+
 		pci at c0000000 {
 			compatible = "intel,ixp43x-pci";
 		};
diff --git a/arch/arm/boot/dts/intel-ixp45x-ixp46x.dtsi b/arch/arm/boot/dts/intel-ixp45x-ixp46x.dtsi
index cce49e809043..e3edd4e7304b 100644
--- a/arch/arm/boot/dts/intel-ixp45x-ixp46x.dtsi
+++ b/arch/arm/boot/dts/intel-ixp45x-ixp46x.dtsi
@@ -9,6 +9,15 @@
 
 / {
 	soc {
+		bus at c4000000 {
+			compatible = "intel,ixp46x-expansion-bus-controller";
+		};
+
+		rng at 70002100 {
+			compatible = "intel,ixp46x-rng";
+			reg = <0x70002100 4>;
+		};
+
 		interrupt-controller at c8003000 {
 			compatible = "intel,ixp43x-interrupt";
 		};
diff --git a/arch/arm/boot/dts/intel-ixp4xx.dtsi b/arch/arm/boot/dts/intel-ixp4xx.dtsi
index 45cb3ad954c1..2451f96b971d 100644
--- a/arch/arm/boot/dts/intel-ixp4xx.dtsi
+++ b/arch/arm/boot/dts/intel-ixp4xx.dtsi
@@ -15,16 +15,30 @@ soc {
 		interrupt-parent = <&intcon>;
 
 		/*
-		 * The IXP4xx expansion bus is a set of 16 or 32MB
-		 * windows in the 256MB space from 0x50000000 to
-		 * 0x5fffffff.
+		 * The IXP4xx expansion bus is a set of up to 7 each up to 16MB
+		 * windows in the 256MB space from 0x50000000 to 0x5fffffff.
 		 */
-		bus at 50000000 {
-			compatible = "simple-bus";
-			#address-cells = <1>;
+		bus at c4000000 {
+			/* compatible filled in by per-soc device tree */
+			reg = <0xc4000000 0x28>;
+			#address-cells = <2>;
 			#size-cells = <1>;
-			ranges = <0x00000000 0x50000000 0x10000000>;
-			dma-ranges = <0x00000000 0x50000000 0x10000000>;
+			ranges = <0 0x0 0x50000000 0x01000000>,
+				 <1 0x0 0x51000000 0x01000000>,
+				 <2 0x0 0x52000000 0x01000000>,
+				 <3 0x0 0x53000000 0x01000000>,
+				 <4 0x0 0x54000000 0x01000000>,
+				 <5 0x0 0x55000000 0x01000000>,
+				 <6 0x0 0x56000000 0x01000000>,
+				 <7 0x0 0x57000000 0x01000000>;
+			dma-ranges = <0 0x0 0x50000000 0x01000000>,
+				 <1 0x0 0x51000000 0x01000000>,
+				 <2 0x0 0x52000000 0x01000000>,
+				 <3 0x0 0x53000000 0x01000000>,
+				 <4 0x0 0x54000000 0x01000000>,
+				 <5 0x0 0x55000000 0x01000000>,
+				 <6 0x0 0x56000000 0x01000000>,
+				 <7 0x0 0x57000000 0x01000000>;
 		};
 
 		qmgr: queue-manager at 60000000 {
-- 
2.31.1




More information about the linux-arm-kernel mailing list