慢行者
分类: linux
2013-05-10 16:18:10
6 总结
下图根据之前的分析丰富的架构图
tips:i2c适配器驱动不一定是基于platform实现,这里是以s3c-i2c为例。
i2c_driver、i2c_client与i2c_adapter
i2c_driver与i2c_client是一对多的关系,一个i2c_driver上可以支持多个同等类型的i2c_client。调用i2c_add_driver函数将i2c_driver注册到i2c总线上,调用i2c_register_board_info函数将i2c_client注册到全局链表__i2c_board_list。当调用i2c_add_adapter注册适配器时,遍历__i2c_board_list链表,i2c_register_adapter()->i2c_scan_static_board_info()->i2c_new_device()会构建i2c_client结构。当调用i2c_add_driver时,会先注册i2c_driver到i2c总线上,然后调用i2c bus注册的match函数进行匹配,如果匹配成功,则先调用i2c bus中注册的probe函数,在调用i2c_driver中实现的probe函数,完成相应的工作。
转载至:
*********如有错误,不吝赐教********