高通msm7227平台LinuxI2C驱动分析

高通msm7227平台LinuxI2C驱动分析

ID:42842224

大小:149.88 KB

页数:6页

时间:2019-09-23

高通msm7227平台LinuxI2C驱动分析_第1页
高通msm7227平台LinuxI2C驱动分析_第2页
高通msm7227平台LinuxI2C驱动分析_第3页
高通msm7227平台LinuxI2C驱动分析_第4页
高通msm7227平台LinuxI2C驱动分析_第5页
资源描述:

《高通msm7227平台LinuxI2C驱动分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、msm7227平台LinuxI2C驱动分析(2629)Linux内核的所有适配器驱动程序都在driver/i2c/busses/0录卜,当前高通的驱动是i2c・msm.c,适配器驱动的注册过程如下:在kernel中提供了两个adapter注册接口,分别为i2c_add_adapter()和i2c_add_numbered_adapter().由于在系统中可能存在多个adapter,因为将每一条I2C总线对应一个编号,下文中称为12C总线号o对于i2c_add_ad即ter()而言,它使用的是动态总线汛即由系统给其分配一个总线号,而i2c_add_numbered_adapter

2、()则是自己指定总线号,如果这个总线号非法或者是被占用,就会注册失败。高通的adapter驱动使用了i2c_add_numbered_adapter()注册,总线号最初保存在platform_data中。I2Cadapter以platform_device方式注册进系统,在proble函数中初始化fstructi2c_adapter结构:structi2c_adapter{structmodule*owner;unsignedintid;unsignedintclass;/*classestoallowprobingfor*/conststructi2c_algorithm*a

3、lgo;/*thealgorithmtoaccessthebus*/void*algo_data;/*■一administrationstuff.*/int(*client_register)(structi2c_client*);int(*client_unregister)(structi2c_client*);/*datafieldsthatarevalidforalldevices*/u8level;/*nestinglevelforlockdep*/structmutexbusjock;structmutexclist」ock;inttimeout;/*injiffi

4、es*/intretries;structdevicedev;/*theadapterdevice*/intnr;广该成员描述了总线号*/structlist_headclients;/*i2c_client结构链表,该结构包含device,driver和adapter结构*7charname[48];structcompletiondev_released;};structi2c_adapter{structmodule*owner;unsignedintid;unsignedintclass;/*classestoallowprobingfor*/conststructi2

5、c_algorithm*algo;/*thealgorithmtoaccessthebus*/void*algo_data;/*―administrationstuff.*/int(*client_register)(structi2c_client*);int(*client_unregister)(structi2c_client*);/*datafieldsthatarevalidforalldevices*/u8level;/*nestinglevelforlockdep*/structmutexbusjock;structmutexclist_lock;inttime

6、out;/*injiffies*/intretries;structdevicedev;/*theadapterdevice*/intnr;厂该成员描述了总线号*/structlist_headclients;/*i2c_client结构链表,该结构包含device,driver和adapter结构*7charname[48];structcompletiondev_released;};其中nr的值是在archarmmach-msmdevices.c中定义的:structplatform_devicemsm_device_i2c={.name=Hmsm」2cH,.id=

7、0,.num.resources=ARRAYS!ZE(resources_i2c),.resource=resources_i2c,};structplatform_devicemsm_device_i2c_2={.name=Hmsm」2cH,.id=2,.num_resources=ARRAYSZE(resources_i2c_2),.resource=resources_i2c_2,};structplatform_devicemsm_device_i2c={.name=Hmsm」2cH

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。