* [RFC PATCH 0/3] Fix i2c bus hang on A0 version of the Armada XP SoCs
@ 2013-12-31 16:44 Gregory CLEMENT
[not found] ` <1388508293-9141-1-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
0 siblings, 1 reply; 12+ messages in thread
From: Gregory CLEMENT @ 2013-12-31 16:44 UTC (permalink / raw)
To: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA
Cc: Jason Cooper, Andrew Lunn, Gregory CLEMENT, Thomas Petazzoni,
Ezequiel Garcia, Sebastian Hesselbarth,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
Hi,
This series is an RFC to fix the i2c bus hang on A0 version of the
Armada XP SoCs. It occured on the the eraly release of the OpenBlocks
AX3-4 bords. Indeed the first variants of Armada XP SoCs (A0 stepping)
have issues related to the i2c controller which prevent to use the
offload mechanism and lead to a kernel hang during boot.
The best solution will be to detect the SoCs version at runtime and
use it in the driver, but I chosed to submit this version in case CPU
version detection feature takes more time than expected (and we
already reached the rc6 kernel).
Thanks,
Gregory
Gregory CLEMENT (3):
arm: mvebu: add new dts file for old variant of Openblocks AX3-4
i2c: mv64xxx: Fix bus hang on A0 version of the Armada XP SoCs
i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible
.../devicetree/bindings/i2c/i2c-mv64xxx.txt | 2 +-
.../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 +------------------
drivers/i2c/busses/i2c-mv64xxx.c | 8 +
5 files changed, 227 insertions(+), 164 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
--
1.8.1.2
^ permalink raw reply [flat|nested] 12+ messages in thread[parent not found: <1388508293-9141-1-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>]
* [RFC PATCH 1/3] arm: mvebu: add new dts file for old variant of Openblocks AX3-4 [not found] ` <1388508293-9141-1-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> @ 2013-12-31 16:44 ` Gregory CLEMENT [not found] ` <1388508293-9141-2-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> 2013-12-31 16:44 ` [RFC PATCH 2/3] i2c: mv64xxx: Fix bus hang on A0 version of the Armada XP SoCs Gregory CLEMENT ` (2 subsequent siblings) 3 siblings, 1 reply; 12+ messages in thread From: Gregory CLEMENT @ 2013-12-31 16:44 UTC (permalink / raw) To: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA Cc: Jason Cooper, Andrew Lunn, Gregory CLEMENT, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r 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-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> --- .../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-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> + * + * 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 <thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> + * + * 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 ^ permalink raw reply related [flat|nested] 12+ messages in thread
[parent not found: <1388508293-9141-2-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>]
* Re: [RFC PATCH 1/3] arm: mvebu: add new dts file for old variant of Openblocks AX3-4 [not found] ` <1388508293-9141-2-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> @ 2014-01-01 21:41 ` Jason Cooper [not found] ` <20140101214116.GY19878-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org> 0 siblings, 1 reply; 12+ messages in thread From: Jason Cooper @ 2014-01-01 21:41 UTC (permalink / raw) To: Gregory CLEMENT, Grant Likely, Rob Herring Cc: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, Andrew Lunn, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree-u79uwXL29TY76Z2rM5mHXA Gregory, Sorry, but we seem to have a fundamental mis-understanding here. First, whatever we end up deciding for the compatible strings needs to be documented. Which seems to have not made it into this series. Second, I'm having trouble explaining this (in my head), so I'm adding the DT ml so hopefully someone there can chime in. AFAICT, the marvell,mv78230-i2c compatible string, added in v3.12, refers to the IP block on the A0 revision of the SoC. Since we have set that, we've discovered that the A0 revision has an errata where offloading doesn't work. The B0 revision of the SoC has fixed offloading for i2c. In my mind, this means that we should create a fix for the driver to disable offloading unless it can determine it's running B0 or newer. This is easy once we nail down the compatible strings. The second thing we need to do is update the binding documentation so that the devicetree can describe the hardware accurately. I think we should keep 'marvell,mv78230-i2c' as it is (the driver fix mentioned above will disable offloading), and add a new compatible string, 'marvell,mv78230-b0-i2c'. The driver can then be updated to enable offloading when it sees this compatible string, or it can determine the SoC revision itself (via mach code). Third, we need to be able to differentiate between the two shipped AX3-4 boards by openblocks. I think this should follow the same pattern we decide for the i2c compatible string. So, if we go with my proposal, we would have plathome,openblocks-ax3-4 and plathome,openblocks-ax3-4-b0. Basically, I'm really uneasy about dropping marvell,mv78230-i2c and essentially re-defining it to marvell,mv78230-a0-i2c. It feels like it's breaking backwards compatibility. But I'm having trouble clearly describing how Gregory's proposed change exactly does break backwards compatibility. Can a DT maintainer explain it more clearly than I? thx, Jason. PS- Well, this ended up being a toppost. Oops. Sorry. On Tue, Dec 31, 2013 at 05:44:51PM +0100, Gregory CLEMENT wrote: > 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-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> > --- > .../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-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> > + * > + * 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 <thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> > + * > + * 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 > ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <20140101214116.GY19878-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org>]
* Re: [RFC PATCH 1/3] arm: mvebu: add new dts file for old variant of Openblocks AX3-4 [not found] ` <20140101214116.GY19878-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org> @ 2014-01-01 21:42 ` Jason Cooper 2014-01-02 16:17 ` Gregory CLEMENT 1 sibling, 0 replies; 12+ messages in thread From: Jason Cooper @ 2014-01-01 21:42 UTC (permalink / raw) To: Gregory CLEMENT, Grant Likely, Rob Herring Cc: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, Andrew Lunn, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree-u79uwXL29TY76Z2rM5mHXA On Wed, Jan 01, 2014 at 04:41:16PM -0500, Jason Cooper wrote: > Sorry, but we seem to have a fundamental mis-understanding here. First, > whatever we end up deciding for the compatible strings needs to be > documented. Which seems to have not made it into this series. Ok, this is taken care of in the last patch of the series... Sorry about the noise. thx, Jason. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFC PATCH 1/3] arm: mvebu: add new dts file for old variant of Openblocks AX3-4 [not found] ` <20140101214116.GY19878-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org> 2014-01-01 21:42 ` Jason Cooper @ 2014-01-02 16:17 ` Gregory CLEMENT 1 sibling, 0 replies; 12+ messages in thread From: Gregory CLEMENT @ 2014-01-02 16:17 UTC (permalink / raw) To: Jason Cooper, Grant Likely, Rob Herring Cc: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, Andrew Lunn, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree-u79uwXL29TY76Z2rM5mHXA Hi Jason, I have just send a new series which I hope will supersede this one. However I will answer on some points: On 01/01/2014 22:41, Jason Cooper wrote: > Gregory, > > Sorry, but we seem to have a fundamental mis-understanding here. First, > whatever we end up deciding for the compatible strings needs to be > documented. Which seems to have not made it into this series. > > Second, I'm having trouble explaining this (in my head), so I'm adding > the DT ml so hopefully someone there can chime in. > > AFAICT, the marvell,mv78230-i2c compatible string, added in v3.12, refers > to the IP block on the A0 revision of the SoC. Since we have set that, Actually in v3.12 the marvell,mv78230-i2c refer to the B0 revision as I only worked on it on board using this revision. That's why I proposed to introduced the marvell,mv78230-a0-i2c compatible string. My concerns was to not break the existing behavior. Currently with the marvell,mv78230-i2c compatible string the kernel use offload on B0 version and hang on A0 version. If we introduce the marvell,mv78230-a0-i2c compatible string, then the new kernel with the same dtb will have the same behavior. People using the A0 version are aware that there is a problem (the kernel hang) so they will be willing to switch to marvell,mv78230-a0-i2c and to change their dtb. If we introduce the marvell,mv78230-b0-i2c compatible string, then the new kernel with the same dtb will have different behavior. People using the A0 will have a booting kernel, but I fear that people using B0 revision won't be aware of the regression. Gregory > we've discovered that the A0 revision has an errata where offloading > doesn't work. The B0 revision of the SoC has fixed offloading for i2c. > > In my mind, this means that we should create a fix for the driver to > disable offloading unless it can determine it's running B0 or newer. > This is easy once we nail down the compatible strings. > > The second thing we need to do is update the binding documentation so > that the devicetree can describe the hardware accurately. I think we > should keep 'marvell,mv78230-i2c' as it is (the driver fix mentioned > above will disable offloading), and add a new compatible > string, 'marvell,mv78230-b0-i2c'. The driver can then be updated to > enable offloading when it sees this compatible string, or it can > determine the SoC revision itself (via mach code). > > Third, we need to be able to differentiate between the two shipped > AX3-4 boards by openblocks. I think this should follow the same pattern > we decide for the i2c compatible string. So, if we go with my proposal, > we would have plathome,openblocks-ax3-4 and > plathome,openblocks-ax3-4-b0. > > Basically, I'm really uneasy about dropping marvell,mv78230-i2c and > essentially re-defining it to marvell,mv78230-a0-i2c. It feels like > it's breaking backwards compatibility. But I'm having trouble clearly > describing how Gregory's proposed change exactly does break backwards > compatibility. Can a DT maintainer explain it more clearly than I? > > thx, > > Jason. > > PS- Well, this ended up being a toppost. Oops. Sorry. > > On Tue, Dec 31, 2013 at 05:44:51PM +0100, Gregory CLEMENT wrote: >> 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-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> >> --- >> .../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-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> >> + * >> + * 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 <thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> >> + * >> + * 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 >> -- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 12+ messages in thread
* [RFC PATCH 2/3] i2c: mv64xxx: Fix bus hang on A0 version of the Armada XP SoCs [not found] ` <1388508293-9141-1-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> 2013-12-31 16:44 ` [RFC PATCH 1/3] arm: mvebu: add new dts file for old variant of Openblocks AX3-4 Gregory CLEMENT @ 2013-12-31 16:44 ` Gregory CLEMENT 2013-12-31 16:44 ` [RFC PATCH 3/3] i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible Gregory CLEMENT 2014-01-01 19:28 ` [RFC PATCH 0/3] Fix i2c bus hang on A0 version of the Armada XP SoCs Andrew Lunn 3 siblings, 0 replies; 12+ messages in thread From: Gregory CLEMENT @ 2013-12-31 16:44 UTC (permalink / raw) To: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA Cc: Jason Cooper, Andrew Lunn, Gregory CLEMENT, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r The first variants of Armada XP SoCs (A0 stepping) have issues related to the i2c controller which prevent to use the offload mechanism and lead to a kernel hang during boot. The commit introduces a new the compatible string marvell,mv78230-a0-i2c for the i2c controller. When this compatible string is used the driver disables the offload mechanism and the kernel no more hangs on these SoCs. Signed-off-by: Gregory CLEMENT <gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> --- drivers/i2c/busses/i2c-mv64xxx.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c index 8be7e42aa4de..f424c0f89946 100644 --- a/drivers/i2c/busses/i2c-mv64xxx.c +++ b/drivers/i2c/busses/i2c-mv64xxx.c @@ -692,6 +692,10 @@ static const struct of_device_id mv64xxx_i2c_of_match_table[] = { { .compatible = "allwinner,sun4i-i2c", .data = &mv64xxx_i2c_regs_sun4i}, { .compatible = "marvell,mv64xxx-i2c", .data = &mv64xxx_i2c_regs_mv64xxx}, { .compatible = "marvell,mv78230-i2c", .data = &mv64xxx_i2c_regs_mv64xxx}, + { + .compatible = "marvell,mv78230-a0-i2c", + .data = &mv64xxx_i2c_regs_mv64xxx + }, {} }; MODULE_DEVICE_TABLE(of, mv64xxx_i2c_of_match_table); @@ -783,6 +787,10 @@ mv64xxx_of_config(struct mv64xxx_i2c_data *drv_data, drv_data->errata_delay = true; } + if (of_device_is_compatible(np, "marvell,mv78230-a0-i2c")) { + drv_data->offload_enabled = false; + drv_data->errata_delay = true; + } out: return rc; #endif -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [RFC PATCH 3/3] i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible [not found] ` <1388508293-9141-1-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> 2013-12-31 16:44 ` [RFC PATCH 1/3] arm: mvebu: add new dts file for old variant of Openblocks AX3-4 Gregory CLEMENT 2013-12-31 16:44 ` [RFC PATCH 2/3] i2c: mv64xxx: Fix bus hang on A0 version of the Armada XP SoCs Gregory CLEMENT @ 2013-12-31 16:44 ` Gregory CLEMENT [not found] ` <1388508293-9141-4-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> 2014-01-01 19:28 ` [RFC PATCH 0/3] Fix i2c bus hang on A0 version of the Armada XP SoCs Andrew Lunn 3 siblings, 1 reply; 12+ messages in thread From: Gregory CLEMENT @ 2013-12-31 16:44 UTC (permalink / raw) To: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA Cc: Jason Cooper, Andrew Lunn, Gregory CLEMENT, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Signed-off-by: Gregory CLEMENT <gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> --- Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt index 82e8f6f17179..9410ed72ec45 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt @@ -5,7 +5,7 @@ Required properties : - reg : Offset and length of the register set for the device - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" - or "marvell,mv78230-i2c" + or "marvell,mv78230-i2c" or "marvell,mv78230-a0-i2c" - interrupts : The interrupt number Optional properties : -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
[parent not found: <1388508293-9141-4-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>]
* Re: [RFC PATCH 3/3] i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible [not found] ` <1388508293-9141-4-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> @ 2014-01-01 21:44 ` Jason Cooper 2014-01-01 21:45 ` Jason Cooper 1 sibling, 0 replies; 12+ messages in thread From: Jason Cooper @ 2014-01-01 21:44 UTC (permalink / raw) To: Gregory CLEMENT Cc: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, Andrew Lunn, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On Tue, Dec 31, 2013 at 05:44:53PM +0100, Gregory CLEMENT wrote: > Signed-off-by: Gregory CLEMENT <gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> > --- > Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt > index 82e8f6f17179..9410ed72ec45 100644 > --- a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt > +++ b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt > @@ -5,7 +5,7 @@ Required properties : > > - reg : Offset and length of the register set for the device > - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" > - or "marvell,mv78230-i2c" > + or "marvell,mv78230-i2c" or "marvell,mv78230-a0-i2c" Once we nail down how we want to do this, Please add an explanation of the differences between the compatibles. eg 'offloading broken'. thx, Jason. > - interrupts : The interrupt number > > Optional properties : > -- > 1.8.1.2 > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFC PATCH 3/3] i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible [not found] ` <1388508293-9141-4-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> 2014-01-01 21:44 ` Jason Cooper @ 2014-01-01 21:45 ` Jason Cooper [not found] ` <20140101214552.GB19878-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org> 1 sibling, 1 reply; 12+ messages in thread From: Jason Cooper @ 2014-01-01 21:45 UTC (permalink / raw) To: Gregory CLEMENT, Grant Likely, Rob Herring Cc: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, Andrew Lunn, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree-u79uwXL29TY76Z2rM5mHXA [+ DT ml, Grant, Rob] On Tue, Dec 31, 2013 at 05:44:53PM +0100, Gregory CLEMENT wrote: > Signed-off-by: Gregory CLEMENT <gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> > --- > Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt > index 82e8f6f17179..9410ed72ec45 100644 > --- a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt > +++ b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt > @@ -5,7 +5,7 @@ Required properties : > > - reg : Offset and length of the register set for the device > - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" > - or "marvell,mv78230-i2c" > + or "marvell,mv78230-i2c" or "marvell,mv78230-a0-i2c" Once we nail down how we want to do this, Please add an explanation of the differences between the compatibles. eg 'offloading broken'. thx, Jason. > - interrupts : The interrupt number > > Optional properties : > -- > 1.8.1.2 > ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <20140101214552.GB19878-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org>]
* Re: [RFC PATCH 3/3] i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible [not found] ` <20140101214552.GB19878-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org> @ 2014-01-02 16:34 ` Gregory CLEMENT 0 siblings, 0 replies; 12+ messages in thread From: Gregory CLEMENT @ 2014-01-02 16:34 UTC (permalink / raw) To: Jason Cooper, Grant Likely, Rob Herring Cc: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, Andrew Lunn, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree-u79uwXL29TY76Z2rM5mHXA On 01/01/2014 22:45, Jason Cooper wrote: > [+ DT ml, Grant, Rob] > > On Tue, Dec 31, 2013 at 05:44:53PM +0100, Gregory CLEMENT wrote: >> Signed-off-by: Gregory CLEMENT <gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> >> --- >> Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt >> index 82e8f6f17179..9410ed72ec45 100644 >> --- a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt >> +++ b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt >> @@ -5,7 +5,7 @@ Required properties : >> >> - reg : Offset and length of the register set for the device >> - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" >> - or "marvell,mv78230-i2c" >> + or "marvell,mv78230-i2c" or "marvell,mv78230-a0-i2c" > > Once we nail down how we want to do this, Please add an explanation of > the differences between the compatibles. eg 'offloading broken'. > Just to keep the DT mailing list, Grant and Rob in touch: I have submitted an other series in which we don't have to use the device tree to know the SoC revision. So if everything turns well we won't have to apply this series. If at the end we still need it, then I will add the explanation in the next version. Gregory -- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFC PATCH 0/3] Fix i2c bus hang on A0 version of the Armada XP SoCs [not found] ` <1388508293-9141-1-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> ` (2 preceding siblings ...) 2013-12-31 16:44 ` [RFC PATCH 3/3] i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible Gregory CLEMENT @ 2014-01-01 19:28 ` Andrew Lunn [not found] ` <20140101192816.GP32537-g2DYL2Zd6BY@public.gmane.org> 3 siblings, 1 reply; 12+ messages in thread From: Andrew Lunn @ 2014-01-01 19:28 UTC (permalink / raw) To: Gregory CLEMENT Cc: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, Jason Cooper, Andrew Lunn, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On Tue, Dec 31, 2013 at 05:44:50PM +0100, Gregory CLEMENT wrote: > Hi, > > This series is an RFC to fix the i2c bus hang on A0 version of the > Armada XP SoCs. It occured on the the eraly release of the OpenBlocks > AX3-4 bords. Indeed the first variants of Armada XP SoCs (A0 stepping) > have issues related to the i2c controller which prevent to use the > offload mechanism and lead to a kernel hang during boot. > > The best solution will be to detect the SoCs version at runtime and > use it in the driver, but I chosed to submit this version in case CPU > version detection feature takes more time than expected (and we > already reached the rc6 kernel). > > Thanks, > > Gregory Hi Gregory Thanks for these RFC patches. I can confirm they work on my Openblocks device with an A0 stepping SoC. I can now access the RTC. You missed adding the new DTS file to the Makefile. Depending on how the discussion goes about auto detecting stepping or not, i would of used different filenames, probably: armada-xp-openblocks-ax3-4.dts armada-xp-openblocks-ax3-4-a0.dts armada-xp-openblocks-ax3-4-common.dts Keeps all the files together when listed alphabetically Thanks Andrew ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <20140101192816.GP32537-g2DYL2Zd6BY@public.gmane.org>]
* Re: [RFC PATCH 0/3] Fix i2c bus hang on A0 version of the Armada XP SoCs [not found] ` <20140101192816.GP32537-g2DYL2Zd6BY@public.gmane.org> @ 2014-01-02 16:22 ` Gregory CLEMENT 0 siblings, 0 replies; 12+ messages in thread From: Gregory CLEMENT @ 2014-01-02 16:22 UTC (permalink / raw) To: Andrew Lunn Cc: Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA, Jason Cooper, Thomas Petazzoni, Ezequiel Garcia, Sebastian Hesselbarth, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Hi Andrew, On 01/01/2014 20:28, Andrew Lunn wrote: > On Tue, Dec 31, 2013 at 05:44:50PM +0100, Gregory CLEMENT wrote: >> Hi, >> >> This series is an RFC to fix the i2c bus hang on A0 version of the >> Armada XP SoCs. It occured on the the eraly release of the OpenBlocks >> AX3-4 bords. Indeed the first variants of Armada XP SoCs (A0 stepping) >> have issues related to the i2c controller which prevent to use the >> offload mechanism and lead to a kernel hang during boot. >> >> The best solution will be to detect the SoCs version at runtime and >> use it in the driver, but I chosed to submit this version in case CPU >> version detection feature takes more time than expected (and we >> already reached the rc6 kernel). >> >> Thanks, >> >> Gregory > > Hi Gregory > > Thanks for these RFC patches. I can confirm they work on my Openblocks > device with an A0 stepping SoC. I can now access the RTC. > > You missed adding the new DTS file to the Makefile. Depending on how > the discussion goes about auto detecting stepping or not, i would of > used different filenames, probably: Thanks for your feedback. In case there will be a second version I will take them into account. However I hope we won't need it as I sent a new series to fix this bug by dynamically getting the SoC revision. > > armada-xp-openblocks-ax3-4.dts > armada-xp-openblocks-ax3-4-a0.dts > armada-xp-openblocks-ax3-4-common.dts you probably meant armada-xp-openblocks-ax3-4-common.dtsi, but I got the point and I agree. > > Keeps all the files together when listed alphabetically > -- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2014-01-02 16:34 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-31 16:44 [RFC PATCH 0/3] Fix i2c bus hang on A0 version of the Armada XP SoCs Gregory CLEMENT
[not found] ` <1388508293-9141-1-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2013-12-31 16:44 ` [RFC PATCH 1/3] arm: mvebu: add new dts file for old variant of Openblocks AX3-4 Gregory CLEMENT
[not found] ` <1388508293-9141-2-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2014-01-01 21:41 ` Jason Cooper
[not found] ` <20140101214116.GY19878-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org>
2014-01-01 21:42 ` Jason Cooper
2014-01-02 16:17 ` Gregory CLEMENT
2013-12-31 16:44 ` [RFC PATCH 2/3] i2c: mv64xxx: Fix bus hang on A0 version of the Armada XP SoCs Gregory CLEMENT
2013-12-31 16:44 ` [RFC PATCH 3/3] i2c: mv64xxx: Document the newly introduced Armada XP A0 compatible Gregory CLEMENT
[not found] ` <1388508293-9141-4-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2014-01-01 21:44 ` Jason Cooper
2014-01-01 21:45 ` Jason Cooper
[not found] ` <20140101214552.GB19878-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org>
2014-01-02 16:34 ` Gregory CLEMENT
2014-01-01 19:28 ` [RFC PATCH 0/3] Fix i2c bus hang on A0 version of the Armada XP SoCs Andrew Lunn
[not found] ` <20140101192816.GP32537-g2DYL2Zd6BY@public.gmane.org>
2014-01-02 16:22 ` Gregory CLEMENT
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).