I2C子系统——总线注册、驱动注册、设备注册流程

文章涉及内核代码版本:6.1.51

作为笔记,主要记录I2C子系统的总线注册、总线上的驱动注册、总线上的设备注册三部分在代码逻辑上的整体流程;

学习过程中有了解到设备注册方式其实不止一种,此处学习的设备注册方式为:驱动注册的流程中,会遍历总线设备链上的所有设备,然后调用驱动的match函数进行匹配,并对匹配上的设备调用驱动的probe函数进行设备注册;

I2C子系统总线、驱动、设备注册整体代码流程

如下图,三部分的主要流程,顺着下图中的函数调用关系走一遍大概就能理解了;
在这里插入图片描述
如图所示,总线注册其实是一个相对比较独立的流程,总线注册的流程不会直接调到驱动注册那边;

而驱动注册和此处要说明的设备注册方式联系相对紧密一点,设备注册的流程是在驱动注册的流程中进行的,如图中驱动注册流程的bus_for_each_dev函数,便是驱动注册流程中遍历正注册的驱动所属总线上的设备链,后续driver_match函数便是判断正注册的驱动和正遍历的设备是否match,如果成功match就会走后续流程一路调到驱动程序提供的probe函数(上图示例中的emc1403_probe函数),再往后一定程度上就可以看做是对设备进行注册(emc1403系列的设备是传感器相关的设备,因此先调用了hwmon子系统提供的接口注册到hwmon子系统中,然后才是调用device_register进行设备注册的常规流程);

emm,后续单独分析一下总线注册、驱动注册和设备注册的代码流程细节,全写在一篇文章看着都累,,,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值