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-10-09 23:35:26 +0100
commita4c8de92f2b1e1cd788461c1be01f1f45ef7ffba (patch)
treea3d6ad0f2473a162a6fd626bf6bedb3c63fa9718
parentbb678cd37da2d7496bd461881295b6c89e1ccbe8 (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 bc8a0a376469..7803acfc773a 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>;
@@ -198,7 +215,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";