linux内核的I2C子系统详解3——i2c-core.c初步分析、I2C总线的匹配机制

xiaoxiao2021-02-28  15

以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。

5、i2c-core.c初步分析

(1)smbus代码略过:smbus是基于I2C总线发展出来的。

(2)模块加载和卸载

关键是bus_register(&i2c_bus_type),从中可以知道匹配机制;

6、I2C总线的匹配机制

(1)match函数

(2)probe函数

(3)总结

I2C总线上有2条分支:i2c_client链和i2c_driver链;当任何一个driver或者client去注册时,I2C总线都会调用match函数去对client.name和driver.id_table.name进行循环匹配。如果driver.id_table中所有的id都匹配不上则说明client并没有找到一个对应的driver;如果匹配上了则标明client和driver是适用的,那么I2C总线会调用自身的probe函数,自身的probe函数又会调用driver中提供的probe函数,driver中的probe函数会对设备进行硬件初始化和后续工作。

7、核心层开放给其他部分的注册接口

(1)i2c_add_adapter/i2c_add_numbered_adapter注册adapter的,比如i2c-s3c2410.c中就使用此函数来注册一个adapter。(2)i2c_add_driver注册driver的(3)i2c_new_device注册client的
转载请注明原文地址: https://www.6miu.com/read-2349993.html

最新回复(0)