免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2126 | 回复: 3
打印 上一主题 下一主题

关于 i2c设备端 驱动的问题 :?: [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-11 14:08 |只看该作者 |倒序浏览
在研究driver/mise/eeprom/at24.c驱动时发现了一个问题,

本驱动用了I2C子系统,连接到了i2c适配器,注册了二进制属性,并通过其引出了eeprom的读写方法
但I2C子系统好像并不像mtd子系统那样在mtd系统核心中注册了统一的主次设备号,

再看i2c子系统:
      在整个driver/i2c/目录下只有i2c-dev.c中的虚拟设备显式的通过字符设备方式有注册设备号的动作
      难道在写I2C设备端驱动的时候都要像i2c-dev.c那样用 "i2c_driver成员函数+字符设备" 的方法么?
      但是奇怪的是driver/i2c/chips/中的设备端驱动都没有这个动作!!!
      而且driver/i2c/busses/中的适配器端驱动也没有这个动作!!

所以我的问题就是:
      既然内核源码中已经有的i2c设备端驱动都没有的注册设备号,
      是不是这种驱动不用设备号而只在sysfs中引出来进行属性的读写就可以呢?
      如果真是这样的话,udev怎么创建设备文件呢?

论坛徽章:
0
2 [报告]
发表于 2010-02-24 12:42 |只看该作者
是不是这种驱动不用设备号而只在sysfs中引出来进行属性的读写就可以呢?

不可以.
所有挂在I2C总线适配器下的I2C Client设备的访问动作都必须通过读写I2C总线适配器的寄存器
CPU可见的只有I2C总线适配器
I2C总线适配器与挂在其下的多个I2C Client设备的通信都遵从I2C总线协议规范,软件上的规范就是在总线适配器驱动里看到的那些command,硬件上还有时序规范等
I2C总线适配器是通过地址(不同于CPU可见的地址,相当于设备物理编号)区分挂在总线上的多个设备的。这个跟usb设备有点类似

论坛徽章:
0
3 [报告]
发表于 2010-03-03 17:02 |只看该作者
本帖最后由 uLinaox 于 2010-03-03 17:12 编辑

谢谢楼上仁兄的回复,
你的意思是不是就是所有i2c设备都在/dev下只有一个设备,即i2c适配器?
但是i2c适配器的主次设备号又是多少呢?,又是在哪里注册的主次设备号的呢?
因为i2c子系统核心是不注册设备号的!!!!

(其并不像input子系统和mtd子系统那样会注册设备号)

而且如果是这样的话所有i2c client设备不都没有设备号了么?
只能通过i2c adapter的dev文件来访问

不好意思哈,我没看过usb驱动,所以您能不能说的更详细一点?
谢了

论坛徽章:
0
4 [报告]
发表于 2010-03-08 12:23 |只看该作者
各位大侠帮帮忙啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP