i2c-core-base.c
- 功能:实现 I2C 核心层最基本的功能,包括适配器(adapter)和设备(client)的注册、注销以及消息传输接口(例如 i2c_transfer())的调度和管理。
- 作用:构成 I2C 子系统的基础框架,提供了总线管理、数据传输和错误处理等通用功能。
i2c-core-of.c
- 功能:提供对设备树(Device Tree,也称 Open Firmware,OF)平台的支持。
- 作用:负责解析设备树中关于 I2C 控制器和设备的节点信息,将设备树中的描述转化为内核中可识别的 I2C 设备和适配器信息,便于在基于设备树的平台上自动注册设备。
i2c-smbus.c
- 功能:实现 SMBus(系统管理总线)协议相关的操作,如读写字节、字、块数据等接口。
- 作用:为驱动程序提供更高级别的 SMBus 操作接口,简化对支持 SMBus 协议设备的操作。
i2c-stub.c
- 功能:提供一个“存根”(stub)驱动,通常用于测试或调试 I2C 核心层功能。
- 作用:在没有具体 I2C 设备或适配器的情况下,充当占位符驱动,便于验证核心层接口和基本流程的正确性。
i2c-mux.c
- 功能:实现 I2C 总线复用器(mux)的管理,支持通过一个 I2C 适配器访问多个逻辑子总线。
- 作用:在系统中存在 I2C 多路复用器时,通过对总线进行隔离和调度,使多个设备能共享同一物理 I2C 总线而互不干扰。
i2c-core-smbus.c
- 功能:进一步整合和封装了 I2C 核心层与 SMBus 协议之间的桥接代码。
- 作用:在 I2C 核心层基础上,提供对 SMBus 特定功能的支持,可能包括对 SMBus 超时、错误处理等机制的实现,使得 SMBus 操作更加高效和安全。
i2c-core-slave.c
- 功能:实现 I2C 从设备(slave)模式下的支持。
- 作用:扩展 I2C 核心层,使其不仅能作为主设备与从设备通信,还能让内核成为 I2C 从设备,响应外部 I2C 主设备发起的请求。
i2c-slave-eeprom.c
- 功能:作为 I2C 从设备的一种应用实例,专门实现 EEPROM 类型设备的从设备驱动。
- 作用:演示和提供标准的 I2C 从设备行为实现,供需要在内核中模拟或实际使用 EEPROM 从设备的场景参考和使用。
i2c-dev.c
- 功能:实现用户空间访问 I2C 总线的接口,通过字符设备(通常命名为 /dev/i2c-X)向用户暴露 I2C 操作接口。
- 作用:使得用户程序能够通过系统调用(如 ioctl)与 I2C 设备进行通信,而无需直接操作内核 I2C 协议,简化了用户态程序的开发。
i2c-core-acpi.c
- 功能:提供基于 ACPI(高级配置与电源接口)的 I2C 支持,解析 ACPI 表中有关 I2C 的信息。
- 作用:在使用 ACPI 的平台上,通过解析 ACPI 表(如 _DSD 等),自动识别和注册 I2C 控制器和设备,提升平台的兼容性和自动化配置能力。
i2c-boardinfo.c
- 功能:支持传统的板级信息(board info)注册方式,为系统提供静态定义的 I2C 设备信息。
- 作用:在设备树或 ACPI 未普及的时代,允许通过代码或平台数据手动注册 I2C 设备信息,方便驱动在系统启动时探测并匹配设备。
i2c-core.h
- 功能:声明 I2C 核心层使用的数据结构、宏定义以及函数原型。
- 作用:作为 I2C 子系统的接口头文件,为各模块之间提供统一的数据定义和接口声明,确保内核中各个部分对 I2C 子系统的调用和使用保持一致性。
Linux I2C框架 核心层简介
这是关于赞助的一些描述
- 本文链接:https://huffer342-wsh.github.io/posts/myNotes/embedded-linux/i2c_core
- 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 许可协议。