struct i2c_client { unsigned short flags; // 标志位,用于各种配置和标识 unsigned short addr; // 从机地址,7位存储在低7位中 char name[I2C_NAME_SIZE]; // 设备名称 struct i2c_adapter *adapter; // 指向从设备所连接的I2C适配器的指针 struct device dev; // 描述设备的结构体 int irq; // 设...
int (*detect)(struct i2c_client *, int kind, struct i2c_board_info *); 这个函数必须检查第二个参数的addr域是否自己支持的地址,是的话则至少填充info->type,info的其它成员也可以填充,但不应该修改addr。如果是就返回0,否则返回-ENODEV。 l 初始化i2c_driver的address_list成员。i2c_driver注册的时候,i2c...
adap->dev.of_node)return;dev_dbg(&adap->dev,"of_i2c: walking child nodes\n");for_each_available_child_of_node(adap->dev.of_node, node) {structi2c_board_infoinfo = {};structdev_archdatadev_ad = {};const__be32 *addr;
struct i2c_client { unsigned short flags; /* 标志位, 用于各种配置和标识 */ unsigned short addr; /* 芯片地址 - 注意: 地址是 7 位的,存储在低 7 位中 */ char name[I2C_NAME_SIZE]; /* 设备名称 */ struct i2c_adapter *adapter; /* 所在的 I2C 适配器 */ struct device dev; /* 设备...
第15-23行:从 i2c_board_info 复制信息到 i2c_client,将输入的 i2c_board_info 结构体中的相关信息,如设备地址(addr)、设备标志(flags)、中断号(irq)等,复制到新创建的 i2c_client 结构体中。 第26-38检查地址合法性:调用 i2c_check_addr_validity() 和 i2c_check_addr_ex() 函数检查设备地址的有效性和...
unsigned short addr:I2C从设备的地址。 char name[I2C_NAME_SIZE]:I2C从设备的名称。 struct i2c_adapter *adapter:指向对应的 I2C 适配器对象的指针。 其他一些可能会包含在 struct i2c_client 中的成员还有 platform_data、driver_data等,用于携带额外数据给 I2C 设备驱动使用。
显然,对于I2c设备来说,其最主要是提供的i2c地址,这里用addr描述。对于内核驱动模型来说,任何设备都需要内嵌 struct devicedev,以能完全跟踪描述设备。 对于一个I2C设备来说,其驱动类型定义如下: struct i2c_driver AI检测代码解析 /* Notifies the driver that a new bus has appeared. You should avoid ...
问如何在内核线程中获取结构i2c_client *客户端结构EN提到自旋锁那就必须要说链表,在上一篇《驱动开发:内核中的链表与结构体》文章中简单实用链表结构来存储进程信息列表,相信读者应该已经理解了内核链表的基本使用,本篇文章将讲解自旋锁的简单应用,自旋锁是为了解决内核链表读写时存在线程同步问题,解决多线程同步...
* must support I2C_FUNC_10BIT_ADDR. * @flags: I2C_M_RD is handled by all adapters. No other flags may be * provided unless the adapter exported the relevant I2C_FUNC_* * flags through i2c_check_functionality(). * @len: Number of data bytes in @buf being read from or written to ...
注意:normal_i2c里的地址必须是你i2c芯片的地址。否则将无法正确探测到设备。而I2C_ CLIENT_INSMOD是一个宏,它会利用normal_i2c构建addr_data。 ● 构建i2c_client,并注册字符设备驱动 i2c_probe在探测到目标设备后,后调用pca953x_detect,并把当时的探测地址address作为参数传入。