[PATCH linux dev-4.10 v2] ARM: dts: aspeed: Update i2c binding

Joel Stanley joel at jms.id.au
Fri Apr 28 00:43:19 AEST 2017


The I2C binding changed when upstreaming the I2C driver.

This adds aliases for the 14 built-in I2C busses to ensure userspace
sees the numbering that we had with the old driver.

Signed-off-by: Joel Stanley <joel at jms.id.au>
---

Boot tested on qemu-palmetto. We see the same i2c entries under /dev as before,
so the aliases work. Note that we can't use qemu for testing with the new
driver, tracked at https://github.com/openbmc/qemu/issues/5

 arch/arm/boot/dts/aspeed-g4.dtsi | 173 ++++++++++++++++++++++------------
 arch/arm/boot/dts/aspeed-g5.dtsi | 197 +++++++++++++++++++++++++--------------
 2 files changed, 241 insertions(+), 129 deletions(-)

diff --git a/arch/arm/boot/dts/aspeed-g4.dtsi b/arch/arm/boot/dts/aspeed-g4.dtsi
index b9a6730cc831..f7767b999791 100644
--- a/arch/arm/boot/dts/aspeed-g4.dtsi
+++ b/arch/arm/boot/dts/aspeed-g4.dtsi
@@ -18,6 +18,23 @@
 		};
 	};
 
+	aliases {
+		i2c0 = &i2c0;
+		i2c1 = &i2c1;
+		i2c2 = &i2c2;
+		i2c3 = &i2c3;
+		i2c4 = &i2c4;
+		i2c5 = &i2c5;
+		i2c6 = &i2c6;
+		i2c7 = &i2c7;
+		i2c8 = &i2c8;
+		i2c9 = &i2c9;
+		i2c10 = &i2c10;
+		i2c11 = &i2c11;
+		i2c12 = &i2c12;
+		i2c13 = &i2c13;
+	};
+
 	clocks {
 	};
 
@@ -958,200 +975,240 @@
 			};
 
 			i2c: i2c at 1e78a000 {
+				compatible = "simple-bus";
 				#address-cells = <1>;
 				#size-cells = <1>;
-				#interrupt-cells = <1>;
-
-				compatible = "aspeed,ast2400-i2c-controller";
-				reg = <0x1e78a000 0x40>;
 				ranges = <0 0x1e78a000 0x1000>;
-				interrupts = <12>;
-				clocks = <&clk_apb>;
-				clock-ranges;
-				interrupt-controller;
+
+				i2c_ic: interrupt-controller at 0 {
+					#interrupt-cells = <1>;
+					compatible = "aspeed,ast2400-i2c-ic";
+					reg = <0x0 0x40>;
+					interrupts = <12>;
+					interrupt-controller;
+				};
 
 				i2c0: i2c-bus at 40 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x40 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <0>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <0>;
-					interrupt-parent = <&i2c>;
+					interrupt-parent = <&i2c_ic>;
+					status = "disabled";
 					/* Does not need pinctrl node */
 				};
 
 				i2c1: i2c-bus at 80 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x80 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <1>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <1>;
+					interrupt-parent = <&i2c_ic>;
+					status = "disabled";
 					/* Does not need pinctrl node */
 				};
 
 				i2c2: i2c-bus at c0 {
 					#address-cells = <1>;
 					#size-cells = <0>;
-					reg = <0xC0 0x40>;
+					#interrupt-cells = <1>;
+
+					reg = <0xc0 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <2>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <2>;
-					pinctrl-names = "default";
-					pinctrl-0 = <&pinctrl_i2c3_default>;
+					interrupt-parent = <&i2c_ic>;
+					status = "disabled";
+					/* Does not need pinctrl node */
 				};
 
 				i2c3: i2c-bus at 100 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x100 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <3>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <3>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c4_default>;
+					status = "disabled";
 				};
 
 				i2c4: i2c-bus at 140 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x140 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <4>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <4>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c5_default>;
+					status = "disabled";
 				};
 
 				i2c5: i2c-bus at 180 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x180 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <5>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <5>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c6_default>;
+					status = "disabled";
 				};
 
 				i2c6: i2c-bus at 1c0 {
 					#address-cells = <1>;
 					#size-cells = <0>;
-					reg = <0x1C0 0x40>;
+					#interrupt-cells = <1>;
+
+					reg = <0x1c0 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <6>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <6>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c7_default>;
+					status = "disabled";
 				};
 
 				i2c7: i2c-bus at 300 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x300 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <7>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <7>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c8_default>;
+					status = "disabled";
 				};
 
 				i2c8: i2c-bus at 340 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x340 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <8>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <8>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c9_default>;
+					status = "disabled";
 				};
 
 				i2c9: i2c-bus at 380 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x380 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <9>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <9>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c10_default>;
+					status = "disabled";
 				};
 
 				i2c10: i2c-bus at 3c0 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x3c0 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <10>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <10>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c11_default>;
+					status = "disabled";
 				};
 
 				i2c11: i2c-bus at 400 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x400 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <11>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <11>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c12_default>;
+					status = "disabled";
 				};
 
 				i2c12: i2c-bus at 440 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x440 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <12>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <12>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c13_default>;
+					status = "disabled";
 				};
 
 				i2c13: i2c-bus at 480 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x480 0x40>;
 					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <13>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <13>;
-					/* Does not need pinctrl node */
+					interrupt-parent = <&i2c_ic>;
+					pinctrl-names = "default";
+					pinctrl-0 = <&pinctrl_i2c14_default>;
+					status = "disabled";
 				};
-
 			};
-
 		};
 	};
 };
diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi
index ddfb729bb85a..6aef4b7fa529 100644
--- a/arch/arm/boot/dts/aspeed-g5.dtsi
+++ b/arch/arm/boot/dts/aspeed-g5.dtsi
@@ -18,6 +18,23 @@
 		};
 	};
 
+	aliases {
+		i2c0 = &i2c0;
+		i2c1 = &i2c1;
+		i2c2 = &i2c2;
+		i2c3 = &i2c3;
+		i2c4 = &i2c4;
+		i2c5 = &i2c5;
+		i2c6 = &i2c6;
+		i2c7 = &i2c7;
+		i2c8 = &i2c8;
+		i2c9 = &i2c9;
+		i2c10 = &i2c10;
+		i2c11 = &i2c11;
+		i2c12 = &i2c12;
+		i2c13 = &i2c13;
+	};
+
 	ahb {
 		compatible = "simple-bus";
 		#address-cells = <1>;
@@ -1149,199 +1166,237 @@
 			};
 
 			i2c: i2c at 1e78a000 {
+				compatible = "simple-bus";
 				#address-cells = <1>;
 				#size-cells = <1>;
-				#interrupt-cells = <1>;
-
-				compatible = "aspeed,ast2400-i2c-controller";
-				reg = <0x1e78a000 0x40>;
 				ranges = <0 0x1e78a000 0x1000>;
-				interrupts = <12>;
-				clocks = <&clk_apb>;
-				clock-ranges;
-				interrupt-controller;
+
+				i2c_ic: interrupt-controller at 0 {
+					#interrupt-cells = <1>;
+					compatible = "aspeed,ast2500-i2c-ic";
+					reg = <0x0 0x40>;
+					interrupts = <12>;
+					interrupt-controller;
+				};
 
 				i2c0: i2c-bus at 40 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x40 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <0>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <0>;
-					interrupt-parent = <&i2c>;
+					interrupt-parent = <&i2c_ic>;
+					status = "disabled";
 				};
 
 				i2c1: i2c-bus at 80 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x80 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <1>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <1>;
+					interrupt-parent = <&i2c_ic>;
+					status = "disabled";
 				};
 
 				i2c2: i2c-bus at c0 {
 					#address-cells = <1>;
 					#size-cells = <0>;
-					reg = <0xC0 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <2>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					#interrupt-cells = <1>;
+
+					reg = <0xc0 0x40>;
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <2>;
-					pinctrl-names = "default";
-					pinctrl-0 = <&pinctrl_i2c3_default>;
+					interrupt-parent = <&i2c_ic>;
+					status = "disabled";
 				};
 
 				i2c3: i2c-bus at 100 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x100 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <3>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <3>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c4_default>;
+					status = "disabled";
 				};
 
 				i2c4: i2c-bus at 140 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x140 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <4>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <4>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c5_default>;
+					status = "disabled";
 				};
 
 				i2c5: i2c-bus at 180 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x180 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <5>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <5>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c6_default>;
+					status = "disabled";
 				};
 
 				i2c6: i2c-bus at 1c0 {
 					#address-cells = <1>;
 					#size-cells = <0>;
-					reg = <0x1C0 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <6>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					#interrupt-cells = <1>;
+
+					reg = <0x1c0 0x40>;
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <6>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c7_default>;
+					status = "disabled";
 				};
 
 				i2c7: i2c-bus at 300 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x300 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <7>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <7>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c8_default>;
+					status = "disabled";
 				};
 
 				i2c8: i2c-bus at 340 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x340 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <8>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <8>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c9_default>;
+					status = "disabled";
 				};
 
 				i2c9: i2c-bus at 380 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x380 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <9>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <9>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c10_default>;
+					status = "disabled";
 				};
 
 				i2c10: i2c-bus at 3c0 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x3c0 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <10>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <10>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c11_default>;
+					status = "disabled";
 				};
 
 				i2c11: i2c-bus at 400 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x400 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <11>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <11>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c12_default>;
+					status = "disabled";
 				};
 
 				i2c12: i2c-bus at 440 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x440 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <12>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <12>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c13_default>;
+					status = "disabled";
 				};
 
 				i2c13: i2c-bus at 480 {
 					#address-cells = <1>;
 					#size-cells = <0>;
+					#interrupt-cells = <1>;
+
 					reg = <0x480 0x40>;
-					compatible = "aspeed,ast2400-i2c-bus";
-					bus = <13>;
-					clock-frequency = <100000>;
-					status = "disabled";
+					compatible = "aspeed,ast2500-i2c-bus";
+					clocks = <&clk_apb>;
+					bus-frequency = <100000>;
 					interrupts = <13>;
+					interrupt-parent = <&i2c_ic>;
 					pinctrl-names = "default";
 					pinctrl-0 = <&pinctrl_i2c14_default>;
+					status = "disabled";
 				};
-
 			};
-
 		};
 	};
 };
-- 
2.11.0



More information about the openbmc mailing list