summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2016-12-08 00:00:49 +0000
committerRussell King <rmk+kernel@armlinux.org.uk>2019-09-13 16:52:32 +0100
commit0a62390019f0ed63968c9f3a79cd6e62789823ee (patch)
tree40b087fc8b2a8894d8f600f7e7f32ff5a247b130
parent7b8fb8671de3efde3c791c5387163b55d531c306 (diff)
arm64: dts: marvell: mcbin: workaround wrongly wired i2c1 bus
The I2C1 bus on early mcbin hardware is mis-wired, swapping SCL and SDA. Work around this by using the i2c-gpio driver instead. XXX Caught early and this commit should be removed for mainline. XXX Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-rw-r--r--arch/arm64/boot/dts/marvell/Makefile1
-rw-r--r--arch/arm64/boot/dts/marvell/armada-8040-mcbin-es.dts9
-rw-r--r--arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi21
3 files changed, 29 insertions, 2 deletions
diff --git a/arch/arm64/boot/dts/marvell/Makefile b/arch/arm64/boot/dts/marvell/Makefile
index caed4334f27d..a9eeeb043c09 100644
--- a/arch/arm64/boot/dts/marvell/Makefile
+++ b/arch/arm64/boot/dts/marvell/Makefile
@@ -7,5 +7,6 @@ dtb-$(CONFIG_ARCH_MVEBU) += armada-7040-db.dtb
dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-clearfog-gt-8k.dtb
dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-db.dtb
dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-mcbin.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-mcbin-es.dtb
dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-mcbin-singleshot.dtb
dtb-$(CONFIG_ARCH_MVEBU) += armada-8080-db.dtb
diff --git a/arch/arm64/boot/dts/marvell/armada-8040-mcbin-es.dts b/arch/arm64/boot/dts/marvell/armada-8040-mcbin-es.dts
new file mode 100644
index 000000000000..2bc49b60cd06
--- /dev/null
+++ b/arch/arm64/boot/dts/marvell/armada-8040-mcbin-es.dts
@@ -0,0 +1,9 @@
+#define MCBIN_BROKEN_I2C1
+#include "armada-8040-mcbin.dts"
+
+/ {
+ model = "Marvell 8040 MACCHIATOBin Double shot (engineering sample)";
+ compatible = "marvell,armada8040-mcbin-doubleshot",
+ "marvell,armada8040-mcbin", "marvell,armada8040",
+ "marvell,armada-ap806-quad", "marvell,armada-ap806";
+};
diff --git a/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi b/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
index 69e3738c5cf4..36ea6e1fb7a5 100644
--- a/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
@@ -101,6 +101,23 @@
pinctrl-names = "default";
pinctrl-0 = <&cp0_sfp_1g_pins &cp1_sfp_1g_pins>;
};
+
+#ifdef MCBIN_BROKEN_I2C1
+ /* work-around the wrongly wired I2C bus on Rev 1.1 boards */
+ broken_i2c1: i2c-controller@0 {
+ compatible = "i2c-gpio";
+ gpios = <&cp0_gpio2 4 GPIO_ACTIVE_HIGH>,
+ <&cp0_gpio2 3 GPIO_ACTIVE_HIGH>;
+ i2c-gpio,delay-us = <2>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+#define I2C1 broken_i2c1
+#define I2C1_PINMUX "gpio"
+#else
+#define I2C1 cp0_i2c1
+#define I2C1_PINMUX "i2c1"
+#endif
};
&uart0 {
@@ -131,7 +148,7 @@
status = "okay";
};
-&cp0_i2c1 {
+&I2C1 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&cp0_i2c1_pins>;
@@ -196,7 +213,7 @@
/* mpp33 - mss? */
cp0_i2c1_pins: i2c1-pins {
marvell,pins = "mpp35", "mpp36";
- marvell,function = "i2c1";
+ marvell,function = I2C1_PINMUX;
};
cp0_i2c0_pins: i2c0-pins {
marvell,pins = "mpp37", "mpp38";