MODULE_DEVICE_TABLE(i2c, i2c_id); module_i2c_driver宏将定义好的i2c_driver结构体注册为一个I2C设备驱动程序 static struct i2c_driver i2c_driver = { .driver = { .name = DRIVER_NAME, .owner = THIS_MODULE, }, .probe = i2c_probe, .remove = i2c_remove, .id_table = i2c_id, }; module...
module_i2c_driver — 注册I2C设备驱动的宏定义 i2c_register_board_info — 静态声明(注册)I2C设备,可多个 i2c_verify_client — 如果设备是i2c_client的dev成员则返回其父指针,否则返回NULL。用来校验设备是否为I2C设备 i2c_lock_adapter — I2C总线持锁操作,会找到最根源的那个i2c_adapter。说明你的模块必须符合...
在阅读其他人编写的Linux驱动源码发现,最后驱动注册和注销时并未使用传统的“module_init”和“module_exit”,而是使用一个宏“module_xxx_driver”代替,如module_i2c_driver、module_spi_driver、module_platform_driver等等。 Linux驱动程序模型是“总线驱动”+“设备驱动”,比如i2c总线和i2c设备,spi总...
这里要说明一下module_i2c_driver宏定义(i2c.h): #define module_i2c_driver(__i2c_driver) \ module_driver(__i2c_driver, i2c_add_driver, \ i2c_del_driver) #define i2c_add_driver(driver) \ i2c_register_driver(THIS_MODULE, driver) 1. 2. 3. 4. 5. 6. module_driver(): #define module_...
11.owner =THIS_MODULE,12.pm = &adxl34x_i2c_pm,//指定设备驱动的电源管理接口,包含suspend、resume13},14.probe = adxl34x_i2c_probe,//组装设备匹配时候的匹配动作15.remove = adxl34x_i2c_remove,//组装设备移除接口16.id_table = adxl34x_id,//制定匹配设备列表17};1819module_i2c_driver(adxl34...
module_driver(nxp_nci_i2c_driver, i2c_add_driver, i2c_del_driver) #define module_driver(nxp_nci_i2c_driver, i2c_add_driver, i2c_del_driver) \ static int __init nxp_nci_i2c_driver_init(void) { return i2c_add_driver(&(nxp_nci_i2c_driver) ); ...
一个i2c控制器就对应一个i2c_board_info, 它驱动就是s3c2410_i2c_driver, 他们通过platform_bus_type协调工作。 一个i2c总线上的设备就对应内核中的一个i2c_client类型的对象, 它的驱动就是的i2c_driver, 二者通过i2c_bus_type协调工作。 同样是抽象的思路, 对于i2c总线本身, 内核也使用i2c_bus_type来描述。
int i2c_register_driver(struct module *owner, struct i2c_driver *driver); 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 con...
compatible = “rockchip,rk809”匹配到i2c驱动module_i2c_driver(rk808_i2c_driver),会调用rk808_probe,该函数会继续i2c设备初始化等操作,其中会调用devm_mfd_add_devices函数,添加mfd(multi-function device,多功能设备)设备,会添加rk808-regulator平台设备,该设备会和平台驱动rk808_regulator_driver匹配,最后在r...