Linux中I2C常见问题三
四. I2C
3.1 i2c 地址:不对
log:
msm_cci_irq:1727 MASTER_1 error 0x40000000
原因:
dtsi中配置的slave addr和模组不一致;
解决:
dtsi中eeprom模块将slave-addr改为0x20
3.2 i2c bus不对
Log:
[ 2.001297] rk3x-i2c fe5b0000.i2c: timeout, ipd: 0x91, state: 1
[ 2.001323] gc5035 2-0037: gc5035 read reg:0xf0 failed !
[ 2.703748] gc5035 2-0037: gc5035 read reg:0xf1 failed !
[ 2.703765] gc5035 2-0037: Unexpected sensor id(000000), ret(-6)
分析:查看IO模式是否为scl/sda
cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins
原因:
硬件i2c总线与dtsi配置的i2c pin不一致;
解决:
kernel-4.19/arch/arm64/boot/dts/rockchip/rk3568.dtsi
3.3 设备地址冲突
Log:
_general_otp_parse_module_data_1v1: module info checksum error!
_general_otp_parse_awb_1v1: AWB checksum error
_general_otp_parse_lsc_1v1: LSC checksum error
原因:
前摄、红外模组硬件挂在i2c1, Eeprom设备地址都是0xa0,导致设备地址冲突;
解决:
修改将前摄设备地址从0xa0改成0xa2;
四.硬件:
4.1 地磁sensorhub不通:
芯片方向贴错,导致 i2c scl, sda 不对;