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 <[email protected]>
---
 .../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 <[email protected]>
+ *
+ * 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@11000 {
+                               compatible = "marvell,mv78230-a0-i2c", 
"marvell,mv64xxx-i2c";
+                       };
+                       i2c@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 <[email protected]>
+ *
+ * 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@0 {
+                               compatible = "cfi-flash";
+                               reg = <0 0x8000000>;
+                               bank-width = <2>;
+                       };
+               };
+
+               pcie-controller {
+                       status = "okay";
+                       /* Internal mini-PCIe connector */
+                       pcie@1,0 {
+                               /* Port 0, Lane 0 */
+                               status = "okay";
+                       };
+               };
+
+               internal-regs {
+                       serial@12000 {
+                               clock-frequency = <250000000>;
+                               status = "okay";
+                       };
+                       serial@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@1 {
+                                       label = "Init Button";
+                                       linux,code = <116>;
+                                       gpios = <&gpio1 28 0>;
+                               };
+                       };
+
+                       mdio {
+                               phy0: ethernet-phy@0 {
+                                       reg = <0>;
+                               };
+
+                               phy1: ethernet-phy@1 {
+                                       reg = <1>;
+                               };
+
+                               phy2: ethernet-phy@2 {
+                                       reg = <2>;
+                               };
+
+                               phy3: ethernet-phy@3 {
+                                       reg = <3>;
+                               };
+                       };
+
+                       ethernet@70000 {
+                               status = "okay";
+                               phy = <&phy0>;
+                               phy-mode = "sgmii";
+                       };
+                       ethernet@74000 {
+                               status = "okay";
+                               phy = <&phy1>;
+                               phy-mode = "sgmii";
+                       };
+                       ethernet@30000 {
+                               status = "okay";
+                               phy = <&phy2>;
+                               phy-mode = "sgmii";
+                       };
+                       ethernet@34000 {
+                               status = "okay";
+                               phy = <&phy3>;
+                               phy-mode = "sgmii";
+                       };
+                       i2c@11000 {
+                               status = "okay";
+                               clock-frequency = <400000>;
+                       };
+                       i2c@11100 {
+                               status = "okay";
+                               clock-frequency = <400000>;
+
+                               s35390a: s35390a@30 {
+                                       compatible = "s35390a";
+                                       reg = <0x30>;
+                               };
+                       };
+                       sata@a0000 {
+                               nr-ports = <2>;
+                               status = "okay";
+                       };
+
+                       /* Front side USB 0 */
+                       usb@50000 {
+                               status = "okay";
+                       };
+
+                       /* Front side USB 1 */
+                       usb@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@0 {
-                               compatible = "cfi-flash";
-                               reg = <0 0x8000000>;
-                               bank-width = <2>;
-                       };
-               };
-
-               pcie-controller {
-                       status = "okay";
-                       /* Internal mini-PCIe connector */
-                       pcie@1,0 {
-                               /* Port 0, Lane 0 */
-                               status = "okay";
-                       };
-               };
-
-               internal-regs {
-                       serial@12000 {
-                               clock-frequency = <250000000>;
-                               status = "okay";
-                       };
-                       serial@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@1 {
-                                       label = "Init Button";
-                                       linux,code = <116>;
-                                       gpios = <&gpio1 28 0>;
-                               };
-                       };
-
-                       mdio {
-                               phy0: ethernet-phy@0 {
-                                       reg = <0>;
-                               };
-
-                               phy1: ethernet-phy@1 {
-                                       reg = <1>;
-                               };
-
-                               phy2: ethernet-phy@2 {
-                                       reg = <2>;
-                               };
-
-                               phy3: ethernet-phy@3 {
-                                       reg = <3>;
-                               };
-                       };
-
-                       ethernet@70000 {
-                               status = "okay";
-                               phy = <&phy0>;
-                               phy-mode = "sgmii";
-                       };
-                       ethernet@74000 {
-                               status = "okay";
-                               phy = <&phy1>;
-                               phy-mode = "sgmii";
-                       };
-                       ethernet@30000 {
-                               status = "okay";
-                               phy = <&phy2>;
-                               phy-mode = "sgmii";
-                       };
-                       ethernet@34000 {
-                               status = "okay";
-                               phy = <&phy3>;
-                               phy-mode = "sgmii";
-                       };
-                       i2c@11000 {
-                               status = "okay";
-                               clock-frequency = <400000>;
-                       };
-                       i2c@11100 {
-                               status = "okay";
-                               clock-frequency = <400000>;
-
-                               s35390a: s35390a@30 {
-                                       compatible = "s35390a";
-                                       reg = <0x30>;
-                               };
-                       };
-                       sata@a0000 {
-                               nr-ports = <2>;
-                               status = "okay";
-                       };
-
-                       /* Front side USB 0 */
-                       usb@50000 {
-                               status = "okay";
-                       };
-
-                       /* Front side USB 1 */
-                       usb@51000 {
-                               status = "okay";
-                       };
-               };
-       };
 };
-- 
1.8.1.2

--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to