i2c设备控制器与i2c设备的添加过程

本文详细解析了Linux系统中I2C设备的注册过程,包括控制器与设备的注册步骤,以及通过of_i2c_register_devices函数遍历并注册所有子节点设备。

上一篇文章我们分析了i2c驱动匹配设备的过程,i2c设备分为控制器与i2c设备,linux内核加载的时候分别加载各个i2c控制器与他们下面挂在的i2c设备,把这些设备一一注册到内核中,这就是我们整个linux系统的资源,以下是i2c设备被注册的过程

rk3x_i2c_probe ->           H:\RK3399\kernel\drivers\i2c\busses\i2c-rk3x.c  //探测到一个i2c控制器
        i2c_add_adapter ->         H:\RK3399\kernel\drivers\i2c\i2c-core.c        //添加i2c控制器设备到总线上
      __i2c_add_numbered_adapter->
              i2c_register_adapter->                                         //注册i2c控制器
                    of_i2c_register_devices->
                        of_i2c_register_device->             
                            i2c_new_device->


static void of_i2c_register_devices(struct i2c_adapter *adap)
{
   
   
    struct device_node *node;
    printk("fan of_i2c_register_devices 1436\n");

    /* Only register child devices if the adapter has a node pointer set */
    if (!adap->dev.of_node)
        return;

    dev_dbg(&adap->dev, "of_i2c: walking child nodes\n");

    for_each_available_child_of_node(adap->dev.of_node, node) {
   
    //查找这个i2c控制器上所有的节点,找到把设备添加到设备链表上去
        if (of_node_test_and_set_flag(node, OF_POPULATED))
           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术求索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值