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函数,完成相应的工作。
*********如有错误,不吝赐教********
原文见:http://blog.youkuaiyun.com/paul_liao/article/details/7005376
本文详细介绍了I2C总线驱动的工作原理,包括I2C_driver、i2c_client与i2c_adapter之间的关系及其注册过程。通过具体实例s3c-i2c展示了I2C适配器驱动如何实现。
1061

被折叠的 条评论
为什么被折叠?



