全志平台Tina系统I2C struct 缺少class定义导致的probe失败等问题解决方法

全志平台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,存储类的模组;

猜你喜欢

转载自blog.csdn.net/weixin_43094346/article/details/82697022