summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2015-04-02 12:42:51 +0200
committerMax Krummenacher <max.krummenacher@toradex.com>2015-04-02 16:23:30 +0200
commit88731dc0e8b6ba244e097b412b302acf3b9cc889 (patch)
tree8c2d0b647a336c68274c41f89ee6d33372ab185d /arch
parent512dc8ed77ec5ad4cf0be3c70732bf583410c7c2 (diff)
i2c-imx: add gpio recovery functionality
If the I2C is disturbed by other signals sometimes the i2c-imx bus gets stuck with SDA being low. This adds a recovery function to the bus driver. When e.g. a device driver detects a stuck bus int i2c_recover_bus(struct i2c_adapter *adap) can be called to try to recover the bus.
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boot/dts/imx6qdl-apalis.dtsi12
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/arm/boot/dts/imx6qdl-apalis.dtsi b/arch/arm/boot/dts/imx6qdl-apalis.dtsi
index f57b0750a5f1..545e23a048db 100644
--- a/arch/arm/boot/dts/imx6qdl-apalis.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-apalis.dtsi
@@ -409,8 +409,12 @@
*/
&i2c3 {
clock-frequency = <100000>;
- pinctrl-names = "default";
+ pinctrl-names = "default", "recovery";
pinctrl-0 = <&pinctrl_i2c3_1>;
+ pinctrl-1 = <&pinctrl_i2c3_recovery_1>;
+ gpios = <&gpio3 18 0 /* sda */
+ &gpio3 17 0 /* scl */
+ >;
status = "disabled";
};
@@ -540,6 +544,12 @@
MX6QDL_PAD_EIM_D16__GPIO3_IO16 PAD_CTRL_HYS_PU /* DDC bitbang */
>;
};
+ pinctrl_i2c3_recovery_1: i2c2_recovery {
+ fsl,pins = <
+ MX6QDL_PAD_EIM_D17__GPIO3_IO17 PAD_CTRL_HYS_PU /* DDC bitbang */
+ MX6QDL_PAD_EIM_D18__GPIO3_IO18 PAD_CTRL_HYS_PU /* DDC bitbang */
+ >;
+ };
pinctrl_mmc_cd: gpio_mmc_cd {
fsl,pins = <
MX6QDL_PAD_DI0_PIN4__GPIO4_IO20 PAD_CTRL_NO /* MMC1 CD */