int (*probe)(struct i2c_client *, const struct i2c_device_id *) 当I2C设备和驱动匹配成功以后 probe函数就会执行。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 struct device_driver driver device_driver 驱动结构体,如果使用设备树的话,需要设置device_driver的of_match_table成员变量,也就是驱...
void i2c_del_adapter(struct i2c_adapter * adap) 一般SOC的I2C 总线驱动都是由半导体厂商编写的。因此I2C 总线驱动对我们这些SOC 使用者来说是被屏蔽掉的,我们只要专注于 I2C设备驱动即可 1.2 I2C设备驱动 上面已经说了ic_adapter了,还剩下还剩下设备和驱动,i2c_client就是描述设备信息的,i2c_driver描述驱动内容...
1.1 I2C总线-设备-驱动模型 1.2 示例 分配、设置、注册一个i2c_driver结构体,类似drivers/eeprom/at24.c: 在probe_new函数中,分配、设置、注册file_operations结构体。 在file_operations的函数中,使用i2c_transfer等函数发起I2C传输。 2. 编写i2c_driver 2.1 先写一个框架 2.2 在为AP3216C编写代码 百问网的开...
structi2c_algorithm{// i2c传输函数指针int(*master_xfer)(structi2c_adapter *adap,structi2c_msg *msgs,intnum);// SMBus传输函数指针int(*smbus_xfer)(structi2c_adapter *adap,structi2c_msg *msgs,intnum);// 确定适配器支持的功能u32(*functionality)(structi2c_adapter *); }; 2.3 i2c_driver st...
I2C设备驱动重点关注两个数据结构:i2c_client和i2c_driver,根据总线、设备和驱动模型,I2C总线上一小节已经讲了。还剩下设备和驱动,i2c_client用于描述I2C总线下的设备,i2c_driver则用于描述I2C总线下的设备驱动,类似于platform总线下的platform_device和platform_driver。
(1)增加/删除 i2c_adapter适配器 (2)增加/删除 i2c_driver从设备驱动 (3)I2C 传输接口 (4) I2C 控制命令分配。 Linux I2C 总线驱动 I2C 适配器驱动加载与卸载 I2C 总线通信方法 Linux I2C 设备驱动 主控和从设备之间的连接示意图 I2C 核心 (drivers/i2c/i2c-core.c)中提供了一组不依赖于硬件平台的接口...
要写一个i2c驱动程序,应该先创建一个文件夹,文件夹中有i2c_driver.h头文件、i2c_driver.c和Makefile,还有一个xxx_config.h文件,其中i2c_driver.h用来定义I2C总线驱动程序所需要的宏定义,i2c_driver.c用来实现所有I2C总线驱动程序功能,Makefile是Linux提供的一个编译文件,xxx_config.h是用户自定义的xxx_config配置...
struct i2c_driver *driver; void *algo_data; struct i2c_board_info const *board_info; }; 二、i2c子系统驱动的通信过程 i2c子系统驱动的通信过程需要经过以下步骤: 1. 注册i2c_adapter 初次使用I2C总线时,需要先注册i2c_adapter结构体,告诉内核I2C总线的特性。在Linux内核中,注册i2c_adapter结构体可以使用i2c...
I2C总线数据通信算法,通过管理I2C总线控制器,实现对I2C总线上数据的发送和接收等操作。亦可以理解为I2C总线控制器(适配器adapter)对应的驱动程序,每一个适配器对应一个驱动程序,用来描述适配器和设备之间的通信方法,由芯片厂商去实现的。 4)i2c_driver 用于管理I2C的驱动程序和i2c设备(client)的匹配探测,实现与应用层...
int i2c_del_driver(struct i2c_driver *driver); inline int i2c_add_driver(struct i2c_driver *driver); 创建并注册一个新的I2C设备 struct i2c_client *i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info); I2C 传输、发送和接收 ...