Firefly开源社区

打印 上一主题 下一主题

i2c实例

81

积分

0

威望

0

贡献

技术小白

积分
81

i2c实例

发表于 2015-6-23 10:26:09      浏览:11395 | 回复:7        打印      只看该作者   [复制链接] 楼主
有个问题想咨询下大家,我在注册i2c驱动的时候,查找dts中定义的资源是有 .of_match_table = of_rk_lt8641ex_match,决定的还是有这句话决定.id_table = lt8641ex_id,的,目前我实验的结果是有后面一句话决定的,如果没有后面一句话就不会执行probe函数,这跟“compatible:这里的属性必须与驱动中的结构体:of_device_id 中的成员compatible 保持一致,of_device_id 用于在驱动中调用dts文件中定义的设备信息”不是前后不一致吗?请给予解答,非常感谢。
回复

使用道具 举报

2918

积分

56

威望

46

贡献

高级创客

Rank: 6Rank: 6

积分
2918

优秀版主论坛元老

发表于 2015-6-23 15:44:33        只看该作者  沙发
of_device_id中的compatible必须与dts中定义一致,可以看看linux中的源码中platform_match的实现,优先匹配dts的
回复

使用道具 举报

81

积分

0

威望

0

贡献

技术小白

积分
81
发表于 2015-6-25 11:56:44        只看该作者  板凳
但是在of_device_id中的compatible和dts中定义是一致的情况下,我测试的结果是i2c_driver中只添加.of_match_table = xxxx而不添加.id_table = xxxx 驱动的probe函数不会被执行,添加了.id_table = xxxx才会执行probe函数,意思是不是在只添加.of_match_table = xxxx而不添加.id_table = xxxx的时候device和driver没有匹配成功才不执行probe函数?这不就和上面说的就矛盾了吗?
回复

使用道具 举报

2918

积分

56

威望

46

贡献

高级创客

Rank: 6Rank: 6

积分
2918

优秀版主论坛元老

发表于 2015-6-25 13:30:39        只看该作者  地板
compatible和id_table都需要,wiki上compatible和id_table都有写。
按照wiki上的说明编写就可以
回复

使用道具 举报

81

积分

0

威望

0

贡献

技术小白

积分
81
发表于 2015-6-26 11:26:30        只看该作者  5#
我这边验证的是不添加compatible只添加id_table是可以正常工作的
回复

使用道具 举报

10

积分

0

威望

0

贡献

游客

积分
10
发表于 2015-7-7 22:25:15        只看该作者  6#
你好,请问您的i2c驱动是怎么注册的,新手,需要用i2c的驱动,但搞不定,望高人指教
回复

使用道具 举报

81

积分

0

威望

0

贡献

技术小白

积分
81
发表于 2015-7-8 09:25:05        只看该作者  7#
我这边测试的基本上就是按照wiki上给的例子,就可以实现,我用的是iic4,器件地址要又移动一位
回复

使用道具 举报

13

积分

0

威望

0

贡献

游客

积分
13
发表于 2016-9-28 17:09:45        只看该作者  8#
我想可能是为了向下兼容吧,旧的驱动编写方式是只要i2c_device_id就可以了,也就是你说的id_table
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表