节点创建
i2c_add_adapter、i2c_add_numbered_adapter 是注册 i2c_adapter,这两个 API 最终是调用 i2c_register_adapter。
static int i2c_register_adapter(struct i2c_adapter *adap)
{
......
dev_set_name(&adap- >dev, "i2c-%d", adap- >nr);
adap- >dev.bus = &i2c_bus_type;
adap- >dev.type = &i2c_adapter_type;
res = device_register(&adap- >dev);
/* create pre-declared device nodes */
of_i2c_register_devices(adap);
i2c_acpi_install_space_handler(adap);
i2c_acpi_register_devices(adap);
.....
}
dev_set_name(&adap->dev, "i2c-%d", adap->nr) 会在 Linux 中自动创建 /sys/devices/platform/11f00000.i2c6/i2c-6 节点。
of_i2c_register_devices 会调用 i2c_new_client_device
struct i2c_client *i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
{
......
client- >dev.parent = &client- >adapter- >dev;
client- >dev.bus = &i2c_bus_type;
client- >dev.type = &i2c_client_type;
client- >dev.of_node = of_node_get(info- >of_node);
client- >dev.fwnode = info- >fwnode;
device_enable_async_suspend(&client- >dev);
i2c_dev_set_name(adap, client, info);
......
status = device_register(&client- >dev);
......
}
i2c_dev_set_name 会在 Linux 系统中自动创建 /sys/devices/platform/11f00000.i2c6/i2c-6/6-0058 ,这里是挂在某个 i2c bus 上的,从机地址为 0x58 的设备节点。
到这里,大家应该能看懂下图,这些节点在 I2C 控制器驱动加载时,自动创建的。大家在 I2C 控制器的子节点中声明的 I2C 从机设备,也会在这一步创建节点。
-
控制器
+关注
关注
112文章
16487浏览量
179796 -
节点
+关注
关注
0文章
220浏览量
24546 -
I2C
+关注
关注
28文章
1495浏览量
124806
发布评论请先 登录
相关推荐
实现I2C总线控制器的VHDL源代码
模拟I2C总线多主节点通信原理及实现方法
![模拟<b class='flag-5'>I2C</b>总线多主<b class='flag-5'>节点</b>通信原理及实现方法](https://file1.elecfans.com//web2/M00/A5/9F/wKgZomUMOUeAMHRAAACmQWkrAwI522.jpg)
基于Verilog的I2C控制器的设计与综合
![基于Verilog的<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>的设计与综合](https://file.elecfans.com/web2/M00/49/2D/pYYBAGKhtD2AWEMuAAASFhdDCBM398.jpg)
I2C总线控制器的工作原理及EEPROM的Linux驱动程序的设计
![<b class='flag-5'>I2C</b>总线<b class='flag-5'>控制器</b>的工作原理及EEPROM的Linux驱动程序的设计](https://file.elecfans.com/web2/M00/4A/27/pYYBAGKhvKGACpWAAAA4l22dAQU185.png)
嵌入式内核及驱动开发-09IIC子系统框架使用(I2C协议和时序,I2C驱动框架,I2C从设备驱动开发,MPU6050硬件连接
![嵌入式内核及驱动开发-09IIC子系统框架使用(<b class='flag-5'>I2C</b>协议和时序,<b class='flag-5'>I2C</b>驱动框架,<b class='flag-5'>I2C</b>从设备驱动开发,MPU6050硬件连接](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
硬件I2C与模拟I2C
![硬件<b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
I2C子系统SW Architecture
![<b class='flag-5'>I2C</b>子系统SW Architecture](https://file1.elecfans.com/web2/M00/8D/81/wKgaomS7jI6AcVIDAAFQF5uK5G8249.jpg)
评论