全志平台Tina系统I2C struct 缺少class定义导致的probe失败等问题
【适用范围】
全志Tina系统平台
【问题现象】
在移植、编写I2C及相关驱动时,在其它平台上已经验证过了的驱动移植到我们平台后经常无法正常detect到I2C设备。
【复现步骤】
编译后查看dmesg打印,无相应I2C 匹配成功信息,串口中也无法搜到生成的设备节点。
【原因分析】
在我们的I2C控制器代码中,i2c_detect函数中在最初始处有如下代码:
这就意味着在i2c检测和匹配过程中,如果class成员没有进行设置,缺省值将直接导致检测的失败而结束。
而在其它平台上并没有这个问题。
鉴于I2C驱动不由我们维护,不推荐修改i2c-core.c
【解决办法】
在I2C驱动中,通常定义的i2c_adapter 或 i2c_driver 结构体中,必须包含.class成员,实际定义如下即可,如ac108驱动:
I2C_CLASS_HWMON,硬件监控类,如lm_sensors等; I2C_CLASS_DDC,DDC是数字显示通道(Digital Display Channel)的意思, 通常用于显示设备信息的获取; I2C_CLASS_SPD,存储类的模组;