0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I2C控制器节点创建

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-22 15:42 次阅读

节点创建

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
    I2C
    +关注

    关注

    28

    文章

    1397

    浏览量

    121461
收藏 人收藏

    评论

    相关推荐

    80 第23.1讲 I2C实验-I2C协议和6U的I2C控制器详解 - 第2

    程序代码I2C协议
    充八万
    发布于 :2023年08月17日 10:03:33

    80 第23.1讲 I2C实验-I2C协议和6U的I2C控制器详解 - 第3节 #硬声创作季

    程序代码I2C协议
    充八万
    发布于 :2023年08月17日 10:04:23

    80 第23.1讲 I2C实验-I2C协议和6U的I2C控制器详解 - 第4节 #硬声创作季

    程序代码I2C协议
    充八万
    发布于 :2023年08月17日 10:05:14

    80 第23.1讲 I2C实验-I2C协议和6U的I2C控制器详解 - 第7节 #硬声创作季

    程序代码I2C协议
    充八万
    发布于 :2023年08月17日 10:07:44

    不使用处理I2C控制器

    嗨,我需要一个I2C内核来控制串行eeprom。在Web上的大多数I2C示例中,使用了微处理。但我想只使用FPGA。我怎样才能做到这一点?有没有人有
    发表于 03-13 13:08

    如何在I2C上从外部微控制器运行引导加载程序?

    编程部分。我还没有找到任何关于如何使用外部微控制器作为引导加载程序的文档。我只能在HSSP编程接口上找到文档,如果它坏了,可能会擦除引导加载程序。有人知道是否有一个文档显示如何在I2C上从外部微控制器
    发表于 07-12 09:09

    为什么virtex5板的“DVI控制器”中时钟需要i2c接口?

    嗨是通过“i2c接口”配置dvi控制器时所需的xclk时钟等你的回复最好的祝福
    发表于 09-02 10:07

    【工程源码】基于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简介

    一.I2C 简介I2C(内部集成电路)总线接口用作微控制器I2C 串行总线之间的接口。它提供多主模式功能,可以控制所有
    发表于 08-10 08:10

    I2c协议和时序的相关资料推荐

    从设备adapter i2c 控制器对象数据包对象读写数据设备树中添加MPU6050信息内核选配添加设备树节点编写驱动程序 mpu6050_i2c_drv.cI2c协议和时序
    发表于 02-10 06:51

    Rockchip I2C控制器支持哪些功能?

    Rockchip I2C控制器支持哪些功能?
    发表于 03-02 09:56

    基于 FPGA 的模拟 I2C协议系统设计

    节数据,位传输控制模块需要执行 8 个读的命令。 10)数据移位寄存 数据移位寄存保存的数据总是和当前的数据传输相关的。例如在进行读操作时,主节点通过移位寄存
    发表于 08-14 18:21

    OpenHarmony:如何使用HDF平台驱动控制I2C

    子系统基础上创建)。 2.2.2.1、驱动实例化驱动入口 I2C控制器会出现很多个设备挂接的情况,因而在HDF框架中首先会为此类型的设备创建一个管理
    发表于 09-12 15:18