节点创建
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文章
15558浏览量
173554 -
节点
+关注
关注
0文章
210浏览量
24177 -
I2C
+关注
关注
28文章
1397浏览量
121461
发布评论请先 登录
相关推荐
![](https://file1.elecfans.com/web2/M00/90/DB/wKgZomTdf-SAAjBnAAD0pf-BELY185.png)
![](https://file1.elecfans.com/web2/M00/90/DF/wKgaomTdgBaAf0M4AADehPKSNbE788.png)
![](https://file1.elecfans.com/web2/M00/90/DB/wKgZomTdgEiAd5pSAAD526GqGu4179.png)
![](https://file1.elecfans.com/web2/M00/90/DB/wKgZomTdgN-AZJdzAADv8fGs474320.png)
不使用处理器的I2C控制器
嗨,我需要一个I2C内核来控制串行eeprom。在Web上的大多数I2C示例中,使用了微处理器。但我想只使用FPGA。我怎样才能做到这一点?有没有人有
发表于 03-13 13:08
如何在I2C上从外部微控制器运行引导加载程序?
编程部分。我还没有找到任何关于如何使用外部微控制器作为引导加载程序的文档。我只能在HSSP编程接口上找到文档,如果它坏了,可能会擦除引导加载程序。有人知道是否有一个文档显示如何在I2C上从外部微控制器
发表于 07-12 09:09
【工程源码】基于FPGA的cmos_init OV5640摄像头I2C接口控制器
OV5640提供了一个SCCB接口用来接受应用处理器的各种初始化设置,该接口完全兼容I2C总线,所以这里提供了一个基于我们通用的I2C控制器的实现程序,这是一个非常好用的OV5640摄
发表于 02-14 17:29
能使用内置的I2C控制器或使用软件吗
刚开始的时候,我有一个带有I2C接口的PIC12F1820。读取外部串行EEPROM的最好方法是什么?1)我应该使用内置的I2C控制器或使用软件吗?2)有标准的
发表于 05-14 08:14
HarmonyOS 驱动平台---I2C
设备地址写到总线上,如果某个从设备符合此地址,将会发出应答信号,建立传输。I2C接口定义了完成I2C传输的通用方法集合,包括:I2C控制器管理: 打开或关闭
发表于 09-16 18:54
I2c协议和时序的相关资料推荐
从设备adapter i2c 控制器对象数据包对象读写数据设备树中添加MPU6050信息内核选配添加设备树节点编写驱动程序 mpu6050_i2c_drv.cI2c协议和时序
发表于 02-10 06:51
基于 FPGA 的模拟 I2C协议系统设计
节数据,位传输控制模块需要执行 8 个读的命令。
10)数据移位寄存器
数据移位寄存器保存的数据总是和当前的数据传输相关的。例如在进行读操作时,主节点通过移位寄存
发表于 08-14 18:21
OpenHarmony:如何使用HDF平台驱动控制I2C
子系统基础上创建)。
2.2.2.1、驱动实例化驱动入口
I2C控制器会出现很多个设备挂接的情况,因而在HDF框架中首先会为此类型的设备创建一个管理
发表于 09-12 15:18
评论