[RFC PATCH 1/3] arm: mvebu: add new dts file for old variant of Openblocks AX3-4

Gregory CLEMENT gregory.clement at free-electrons.com
Tue Dec 31 11:44:51 EST 2013


The first variants of Openblocks AX3-4 used the revision A0 of the
Armada XP SoCs. These early variants have issues related to the i2c
controller which prevent to use the offload mechanism and lead to a
kernel hang during boot.

The new dts file uses the compatible string marvell,mv78230-a0-i2c for
the i2c controller, thanks to this the driver disable the offload
mechanism and the kernel no more hangs on these boards.

Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
---
 .../arm/boot/dts/armada-xp-a0-openblocks-ax3-4.dts |  40 +++++
 .../dts/armada-xp-common-openblocks-ax3-4.dtsi     | 177 +++++++++++++++++++++
 arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts   | 164 +------------------
 3 files changed, 218 insertions(+), 163 deletions(-)
 create mode 100644 arch/arm/boot/dts/armada-xp-a0-openblocks-ax3-4.dts
 create mode 100644 arch/arm/boot/dts/armada-xp-common-openblocks-ax3-4.dtsi

diff --git a/arch/arm/boot/dts/armada-xp-a0-openblocks-ax3-4.dts b/arch/arm/boot/dts/armada-xp-a0-openblocks-ax3-4.dts
new file mode 100644
index 000000000000..b3ea65255c19
--- /dev/null
+++ b/arch/arm/boot/dts/armada-xp-a0-openblocks-ax3-4.dts
@@ -0,0 +1,40 @@
+/*
+ * Device Tree file for OpenBlocks AX3-4 board with A0 SoC
+ *
+ * Copyright (C) 2012 Marvell
+ *
+ * Gregory CLEMENT <gregory.clement at free-electrons.com>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+#include "armada-xp-common-openblocks-ax3-4.dtsi"
+
+/ {
+	model = "PlatHome OpenBlocks AX3-4 board (A0 SoC)";
+	compatible = "plathome,openblocks-ax3-4", "marvell,armadaxp-mv78260", "marvell,armadaxp", "marvell,armada-370-xp";
+
+	chosen {
+		bootargs = "console=ttyS0,115200 earlyprintk";
+	};
+
+	memory {
+		device_type = "memory";
+		reg = <0 0x00000000 0 0xC0000000>; /* 3 GB */
+	};
+
+	soc {
+
+		internal-regs {
+			i2c at 11000 {
+				compatible = "marvell,mv78230-a0-i2c", "marvell,mv64xxx-i2c";
+			};
+			i2c at 11100 {
+				compatible = "marvell,mv78230-a0-i2c", "marvell,mv64xxx-i2c";
+			};
+		};
+	};
+};
diff --git a/arch/arm/boot/dts/armada-xp-common-openblocks-ax3-4.dtsi b/arch/arm/boot/dts/armada-xp-common-openblocks-ax3-4.dtsi
new file mode 100644
index 000000000000..0d452b07baf5
--- /dev/null
+++ b/arch/arm/boot/dts/armada-xp-common-openblocks-ax3-4.dtsi
@@ -0,0 +1,177 @@
+/*
+ * Device Tree file for OpenBlocks AX3-4 board
+ *
+ * Copyright (C) 2012 Marvell
+ *
+ * Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include "armada-xp-mv78260.dtsi"
+
+/ {
+	soc {
+		ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
+			  MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
+			  MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x8000000>;
+
+		devbus-bootcs {
+			status = "okay";
+
+			/* Device Bus parameters are required */
+
+			/* Read parameters */
+			devbus,bus-width    = <8>;
+			devbus,turn-off-ps  = <60000>;
+			devbus,badr-skew-ps = <0>;
+			devbus,acc-first-ps = <124000>;
+			devbus,acc-next-ps  = <248000>;
+			devbus,rd-setup-ps  = <0>;
+			devbus,rd-hold-ps   = <0>;
+
+			/* Write parameters */
+			devbus,sync-enable = <0>;
+			devbus,wr-high-ps  = <60000>;
+			devbus,wr-low-ps   = <60000>;
+			devbus,ale-wr-ps   = <60000>;
+
+			/* NOR 128 MiB */
+			nor at 0 {
+				compatible = "cfi-flash";
+				reg = <0 0x8000000>;
+				bank-width = <2>;
+			};
+		};
+
+		pcie-controller {
+			status = "okay";
+			/* Internal mini-PCIe connector */
+			pcie at 1,0 {
+				/* Port 0, Lane 0 */
+				status = "okay";
+			};
+		};
+
+		internal-regs {
+			serial at 12000 {
+				clock-frequency = <250000000>;
+				status = "okay";
+			};
+			serial at 12100 {
+				clock-frequency = <250000000>;
+				status = "okay";
+			};
+			pinctrl {
+				led_pins: led-pins-0 {
+					marvell,pins = "mpp49", "mpp51", "mpp53";
+					marvell,function = "gpio";
+				};
+			};
+			leds {
+				compatible = "gpio-leds";
+				pinctrl-names = "default";
+				pinctrl-0 = <&led_pins>;
+
+				red_led {
+					label = "red_led";
+					gpios = <&gpio1 17 1>;
+					default-state = "off";
+				};
+
+				yellow_led {
+					label = "yellow_led";
+					gpios = <&gpio1 19 1>;
+					default-state = "off";
+				};
+
+				green_led {
+					label = "green_led";
+					gpios = <&gpio1 21 1>;
+					default-state = "off";
+					linux,default-trigger = "heartbeat";
+				};
+			};
+
+			gpio_keys {
+				compatible = "gpio-keys";
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				button at 1 {
+					label = "Init Button";
+					linux,code = <116>;
+					gpios = <&gpio1 28 0>;
+				};
+			};
+
+			mdio {
+				phy0: ethernet-phy at 0 {
+					reg = <0>;
+				};
+
+				phy1: ethernet-phy at 1 {
+					reg = <1>;
+				};
+
+				phy2: ethernet-phy at 2 {
+					reg = <2>;
+				};
+
+				phy3: ethernet-phy at 3 {
+					reg = <3>;
+				};
+			};
+
+			ethernet at 70000 {
+				status = "okay";
+				phy = <&phy0>;
+				phy-mode = "sgmii";
+			};
+			ethernet at 74000 {
+				status = "okay";
+				phy = <&phy1>;
+				phy-mode = "sgmii";
+			};
+			ethernet at 30000 {
+				status = "okay";
+				phy = <&phy2>;
+				phy-mode = "sgmii";
+			};
+			ethernet at 34000 {
+				status = "okay";
+				phy = <&phy3>;
+				phy-mode = "sgmii";
+			};
+			i2c at 11000 {
+				status = "okay";
+				clock-frequency = <400000>;
+			};
+			i2c at 11100 {
+				status = "okay";
+				clock-frequency = <400000>;
+
+				s35390a: s35390a at 30 {
+					compatible = "s35390a";
+					reg = <0x30>;
+				};
+			};
+			sata at a0000 {
+				nr-ports = <2>;
+				status = "okay";
+			};
+
+			/* Front side USB 0 */
+			usb at 50000 {
+				status = "okay";
+			};
+
+			/* Front side USB 1 */
+			usb at 51000 {
+				status = "okay";
+			};
+		};
+	};
+};
diff --git a/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts b/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
index 5695afcc04bf..1983de77c3ff 100644
--- a/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
+++ b/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
@@ -11,7 +11,7 @@
  */
 
 /dts-v1/;
-#include "armada-xp-mv78260.dtsi"
+#include "armada-xp-common-openblocks-ax3-4.dtsi"
 
 / {
 	model = "PlatHome OpenBlocks AX3-4 board";
@@ -25,166 +25,4 @@
 		device_type = "memory";
 		reg = <0 0x00000000 0 0xC0000000>; /* 3 GB */
 	};
-
-	soc {
-		ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
-			  MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
-			  MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x8000000>;
-
-		devbus-bootcs {
-			status = "okay";
-
-			/* Device Bus parameters are required */
-
-			/* Read parameters */
-			devbus,bus-width    = <8>;
-			devbus,turn-off-ps  = <60000>;
-			devbus,badr-skew-ps = <0>;
-			devbus,acc-first-ps = <124000>;
-			devbus,acc-next-ps  = <248000>;
-			devbus,rd-setup-ps  = <0>;
-			devbus,rd-hold-ps   = <0>;
-
-			/* Write parameters */
-			devbus,sync-enable = <0>;
-			devbus,wr-high-ps  = <60000>;
-			devbus,wr-low-ps   = <60000>;
-			devbus,ale-wr-ps   = <60000>;
-
-			/* NOR 128 MiB */
-			nor at 0 {
-				compatible = "cfi-flash";
-				reg = <0 0x8000000>;
-				bank-width = <2>;
-			};
-		};
-
-		pcie-controller {
-			status = "okay";
-			/* Internal mini-PCIe connector */
-			pcie at 1,0 {
-				/* Port 0, Lane 0 */
-				status = "okay";
-			};
-		};
-
-		internal-regs {
-			serial at 12000 {
-				clock-frequency = <250000000>;
-				status = "okay";
-			};
-			serial at 12100 {
-				clock-frequency = <250000000>;
-				status = "okay";
-			};
-			pinctrl {
-				led_pins: led-pins-0 {
-					marvell,pins = "mpp49", "mpp51", "mpp53";
-					marvell,function = "gpio";
-				};
-			};
-			leds {
-				compatible = "gpio-leds";
-				pinctrl-names = "default";
-				pinctrl-0 = <&led_pins>;
-
-				red_led {
-					label = "red_led";
-					gpios = <&gpio1 17 1>;
-					default-state = "off";
-				};
-
-				yellow_led {
-					label = "yellow_led";
-					gpios = <&gpio1 19 1>;
-					default-state = "off";
-				};
-
-				green_led {
-					label = "green_led";
-					gpios = <&gpio1 21 1>;
-					default-state = "off";
-					linux,default-trigger = "heartbeat";
-				};
-			};
-
-			gpio_keys {
-				compatible = "gpio-keys";
-				#address-cells = <1>;
-				#size-cells = <0>;
-
-				button at 1 {
-					label = "Init Button";
-					linux,code = <116>;
-					gpios = <&gpio1 28 0>;
-				};
-			};
-
-			mdio {
-				phy0: ethernet-phy at 0 {
-					reg = <0>;
-				};
-
-				phy1: ethernet-phy at 1 {
-					reg = <1>;
-				};
-
-				phy2: ethernet-phy at 2 {
-					reg = <2>;
-				};
-
-				phy3: ethernet-phy at 3 {
-					reg = <3>;
-				};
-			};
-
-			ethernet at 70000 {
-				status = "okay";
-				phy = <&phy0>;
-				phy-mode = "sgmii";
-			};
-			ethernet at 74000 {
-				status = "okay";
-				phy = <&phy1>;
-				phy-mode = "sgmii";
-			};
-			ethernet at 30000 {
-				status = "okay";
-				phy = <&phy2>;
-				phy-mode = "sgmii";
-			};
-			ethernet at 34000 {
-				status = "okay";
-				phy = <&phy3>;
-				phy-mode = "sgmii";
-			};
-			i2c at 11000 {
-				status = "okay";
-				clock-frequency = <400000>;
-			};
-			i2c at 11100 {
-				status = "okay";
-				clock-frequency = <400000>;
-
-				s35390a: s35390a at 30 {
-					compatible = "s35390a";
-					reg = <0x30>;
-				};
-			};
-			sata at a0000 {
-				nr-ports = <2>;
-				status = "okay";
-			};
-
-			/* Front side USB 0 */
-			usb at 50000 {
-				status = "okay";
-			};
-
-			/* Front side USB 1 */
-			usb at 51000 {
-				status = "okay";
-			};
-		};
-	};
 };
-- 
1.8.1.2




More information about the linux-arm-kernel mailing list