欢迎来到天天文库
浏览记录
ID:42842224
大小:149.88 KB
页数:6页
时间:2019-09-23
《高通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
此文档下载收益归作者所有