driver =to_i2c_driver(drv);/* match on an id table if there is one */if(driver->id_table)returni2c_match_id(driver->id_table, client) !=NULL;return0; } 一、of_driver_match_device 这种方式是所有驱动匹配通用的,使用of_device_id 的compatible部分字符 structof_device_id{charname[32];c...
{ .name = DEVICE_NAME, .owner = THIS_MODULE, }, .probe = my_i2c_probe, .remove = my_i2c_remove, .id_table = my_i2c_id, }; static int __init my_i2c_init(void) { return i2c_add_driver(&my_i2c_driver); } static void __exit my_i2c_exit(void) { i2c_del_driver(&...
i2c_device_match(),匹配总线维护的驱动链表和设备信息链表,如果其中名字完全相同,则返回true,否则false; i2c_device_probe(),当我们注册一个i2c_drive或者i2c_client结构体时,会从对应的链表中查找节点,并通过i2c_device_match函数比较,如果匹配成功,则调用i2c_drive中定义的probe函数,即ov5640的ov5640_probe()函数...
(struct i2c_client *client, unsigned int cmd, void *arg); struct device_driver driver; //设备驱动结构体 const struct i2c_device_id *id_table; //设备名称,用来匹配设备与驱动 int (*detect)(struct i2c_client *client, struct i2c_board_info *info); const unsigned short *address_list; //...
>i2c_device_id->name进行字符串匹配,如果匹配,就调用驱动程序的probe函数。上面已经将client和driver的名字都设置为 "E2PROM3",所以它们是匹配的,然后,I2C总线会调用驱动的probe函数,并把client结构体通过形参传给driver,然后执行 probe函数,注册字符设备驱动,client结构体里主要保存了适配器的信息,这个非常重要,当用...
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成员变量,也就是驱...
i2c_device_probe(),当我们注册一个i2c_drive或者i2c_client结构体时,会从对应的链表中查找节点,并通过i2c_device_match函数比较,如果匹配成功,则调用i2c_drive中定义的probe函数,即ov5640的ov5640_probe()函数; remove:如果卸载i2c_drive或者i2c_client结构体,会调用该函数卸载对应的资源; shutdown、pm是电源管理...
int (*probe)(struct i2c_client *, const struct i2c_device_id *); //probe函数 struct device_driver driver; //表明这是一个驱动 const struct i2c_device_id *id_table; //要匹配的从设备信息(名称) int (*detect)(struct i2c_client *, struct i2c_board_info *); //设备探测函数 ...
去"class"下的I2C适配器,用"detect"函数来确定能否找到"address_list"里的设备,如果能找到就调用i2c_new_device来注册i2c_client, 这会和i2c_driver的id_table比较,如果匹配,调用"probe"函数。 流程大致如下 调用i2c_add_driver(i2c_register_driver)将driver添加至i2c_bus_type的i2c driver链表;并且将所有匹配的...
我们在学习其他设备驱动的时候就知道了probe函数是设备与驱动匹配成功后被调用执行的。它的原型通常如下所示: staticinti2c_device_probe(structi2c_client*client,conststructi2c_device_id*id); 下面我们就找一个设备驱动来分析一下我们应该如何编写: 这里以rk3x_i2c_probe为例给大家进行分析: ...