1. 程式人生 > >[RK3288][Android6.0] 除錯筆記 --- I2C通訊失敗問題

[RK3288][Android6.0] 除錯筆記 --- I2C通訊失敗問題

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

使用rk3288的i2c5讀寫時,會出現以下error log:
[email protected]:/ # cat /sys/bus/i2c/drivers/at24/5-0050/eeprom                                  
[   24.297924] rockchip_i2c ff170000.i2c: Addr[0x0050] wait event timeout, state: 1, is_busy: 1, error: 0, complete_what: 0x0, ipd: 0x0
[   24.302052] rockchip_i2c ff170000.i2c: I2C_CON: start bit is set
[   24.514383] rockchip_i2c ff170000.i2c: Addr[0x0050] wait event timeout, state: 2, is_busy: 1, error: 0, complete_what: 0x2, ipd: 0x20

解決方法:
[
[email protected]
:~/rk3288/kernel]$ g df arch/arm/boot/dts/rk3288-pinctrl.dtsi
diff --git a/arch/arm/boot/dts/rk3288-pinctrl.dtsi b/arch/arm/boot/dts/rk3288-pinctrl.dtsi
index a35d4d7..4a4ebc8 100755
--- a/arch/arm/boot/dts/rk3288-pinctrl.dtsi
+++ b/arch/arm/boot/dts/rk3288-pinctrl.dtsi
@@ -404,21 +404,21 @@
 
                gpio7_i2c5 {
                        i2c5_sda:i2c5-sda {
-                               rockchip,pins = <EDPHDMII2C_SDA>;
+                               rockchip,pins = <I2C5HDMI_SDA>;
                                rockchip,pull = <VALUE_PULL_NORMAL>;
                                rockchip,drive = <VALUE_DRV_DEFAULT>;
                                //rockchip,tristate = <VALUE_TRI_DEFAULT>;
                        };
 
                        i2c5_scl:i2c5-scl {
-                               rockchip,pins = <EDPHDMII2C_SCL>;
+                               rockchip,pins = <I2C5HDMI_SCL>;
                                rockchip,pull = <VALUE_PULL_NORMAL>;
                                rockchip,drive = <VALUE_DRV_DEFAULT>;
                                //rockchip,tristate = <VALUE_TRI_DEFAULT>;
                        };
 
                        i2c5_gpio: i2c5-gpio {
-                               rockchip,pins = <FUNC_TO_GPIO(EDPHDMII2C_SDA)>, <FUNC_TO_GPIO(EDPHDMII2C_SCL)>;
+                               rockchip,pins = <FUNC_TO_GPIO(I2C5HDMI_SDA)>, <FUNC_TO_GPIO(I2C5HDMI_SCL)>;
                                rockchip,drive = <VALUE_DRV_DEFAULT>;
                        };
                };

很奇怪I2C的配置居然也有兩種,datasheet也沒具體說明這兩種i2c複用功能的區別.