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

    文章

    16382

    浏览量

    178302
  • 节点
    +关注

    关注

    0

    文章

    220

    浏览量

    24444
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1489

    浏览量

    123890
收藏 人收藏

    评论

    相关推荐

    实现I2C总线控制器的VHDL源代码

    I2C总线控制器 altera提供 The I2C Controller was designed for the MC68307 uC, provides a simplified
    发表于 05-20 10:25 251次下载

    LM3S系列微控制器I2C应用文档

    LM3S系列微控制器I2C应用文档基于LM5749的I2C从机功能,模拟24C02传输协议操作。
    发表于 04-03 14:29 52次下载

    模拟I2C总线多主节点通信原理及实现方法

    摘要 介绍模拟I2C总线的多主节点通信原理,并提出一种新的实现方法。这种采用延时接收比较来实现仲裁的方法,可使不具有I2C接口的普通微控制器(MCU)能够实现模拟
    发表于 06-18 17:57 5553次阅读
    模拟<b class='flag-5'>I2C</b>总线多主<b class='flag-5'>节点</b>通信原理及实现方法

    基于Verilog的I2C控制器的设计与综合

    为满足嵌入式系统中专用芯片功能不能达到系统要求的现状,设计出一种功能可扩展的I2C slave控制器,这种控制器与传统的专用I2C芯片不同。专用的I
    发表于 10-25 16:58 60次下载
    基于Verilog的<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>的设计与综合

    I2C控制器使用指南

    确保I2C控制器已经和计算机连接,如果没有连接或驱动没有正常安装则在选择设备栏将出现如下提示。
    发表于 03-08 14:48 50次下载
    <b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>使用指南

    I2C总线控制器的工作原理及EEPROM的Linux驱动程序的设计

    I2C (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。它是同步通信的一种特殊形式,具有接口线少、控制
    发表于 10-26 15:37 7次下载
    <b class='flag-5'>I2C</b>总线<b class='flag-5'>控制器</b>的工作原理及EEPROM的Linux驱动程序的设计

    Firefly-RK3128主板I2C控制器

    Firefly-RK3128 开发板上有 4 个片上 I2C 控制器。本文主要描述如何在该开发板上配置 I2C
    的头像 发表于 11-29 08:47 1497次阅读
    Firefly-RK3128主板<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>

    fireflyFace-RK3399主板I2C控制器介绍

    Face-RK3399 开发板上有 9 个片上 I2C 控制器
    的头像 发表于 12-04 09:17 2973次阅读
    fireflyFace-RK3399主板<b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>介绍

    浅谈PCA9564 I2C 总线控制器评估板

    PCA9564 I2C 总线控制器连接在 P89LV51RD2I2C 总线之间。 飞利浦 PCA9531 I2C 8 位 LED 调
    的头像 发表于 06-17 17:26 3370次阅读
    浅谈PCA9564 <b class='flag-5'>I2C</b> 总线<b class='flag-5'>控制器</b>评估板

    i2c总线用来做什么_i2c总线数据传输过程

    I2C总线控制器为微控制器或微处理提供控制I2C总线的接口,它
    发表于 11-24 14:16 7289次阅读

    嵌入式内核及驱动开发-09IIC子系统框架使用(I2C协议和时序,I2C驱动框架,I2C从设备驱动开发,MPU6050硬件连接

    从设备adapter i2c 控制器对象数据包对象读写数据设备树中添加MPU6050信息内核选配添加设备树节点编写驱动程序 mpu6050_i2c_drv.cI2c协议和时序
    发表于 12-06 14:06 17次下载
    嵌入式内核及驱动开发-09IIC子系统框架使用(<b class='flag-5'>I2C</b>协议和时序,<b class='flag-5'>I2C</b>驱动框架,<b class='flag-5'>I2C</b>从设备驱动开发,MPU6050硬件连接

    硬件I2C与模拟I2C

    配置;而软件I2C是没有寄存这个概念的。 软件I2C一般是使用GPIO管脚,用软件控制SCL,SDA线输出高低电平,模拟i2c协议的时序
    发表于 12-28 19:14 81次下载
    硬件<b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>

    Linux I2C驱动入门知识科普

    I2C 总线驱动, I2C总线驱动就是SOC的 I2C控制器驱动,也叫做 I2C适配器驱动。
    的头像 发表于 12-29 13:59 1704次阅读

    I2C控制器驱动介绍

    控制器驱动 I2C 总线驱动重点是 I2C 适配器驱动,这里要用到两个重要的数据结构:i2c_adapter 和 i2c_algorithm
    的头像 发表于 07-22 15:38 1501次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>控制器</b>驱动介绍

    I2C子系统SW Architecture

    适配器(控制器)驱动,这里用到两个重要的数据结构:i2c_adapter 和 i2c_algorithm。其中,Linux 内核将 SOC 的 I2C 适配器(
    的头像 发表于 07-22 16:01 961次阅读
    <b class='flag-5'>I2C</b>子系统SW Architecture