linux i2c驱动注册流程
2016-11-22 20:09
447 查看
以x210的触摸屏为例,分析一下i2c驱动注册的流程
1、在arch\arm\mach-s5pv210\mach-x210.c中
//新建一个i2c设备信息结构体
//把新的i2c设备信息结构体添加到__i2c_board_list链表中即把信息添加到id表中
2、在drivers/input/touchscreen\gslx680.c中
驱动注册流程
i2c_add_driver
->i2c_register_driver
当驱动注册完成后,进行设备与驱动匹配
1、在arch\arm\mach-s5pv210\mach-x210.c中
//新建一个i2c设备信息结构体
static struct i2c_board_info i2c_devs1[] __initdata = { { I2C_BOARD_INFO("gslX680", 0x40), }, };
//把新的i2c设备信息结构体添加到__i2c_board_list链表中即把信息添加到id表中
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
2、在drivers/input/touchscreen\gslx680.c中
//注册设备驱动 static int __init gsl_ts_init(void) { int ret; print_info("==gsl_ts_init==\n"); ret = i2c_add_driver(&gsl_ts_driver); print_info("ret=%d\n",ret); return ret; }
驱动注册流程
i2c_add_driver
->i2c_register_driver
/* add the driver to the list of i2c drivers in the driver core*/ //driver指针指gsl_ts_driver即触摸屏的驱动结构体 driver->driver.owner = owner; driver->driver.bus = &i2c_bus_type; /* When registration returns, the driver core * will have called probe() for all matching-but-unbound devices. */ res = driver_register(&driver->driver);
->driver_find //查找该设备驱动是否已经存在 ->bus_add_driver //根据driver->driver.bus 类型,把驱动添加到相应的(i2c)总线上面
当驱动注册完成后,进行设备与驱动匹配
i2c_device_probe//注册完驱动后执行 ->driver->probe //执行驱动的probe,在prode的入口参数调用i2c_match_id ->i2c_match_id //比较id表里面是否已经存在了该驱动对应的设备名 即对应第一步中i2c_register_board_info注册的信息,返回对应的struct i2c_device_id即设备名 ->gsl_ts_probe //driver->probe实际上对应g 4000 sl_ts_probe ->测试i2c通信情况,进行一些系列的初始化工作
相关文章推荐
- 和菜鸟一起学linux总线驱动之初识i2c驱动数据传输流程
- linux I2C 驱动之----i2c驱动的注册过程
- linux驱动:i2c驱动(四)流程图之注册驱动
- 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解
- linux驱动:i2c驱动(三)流程图之注册设备
- Linux下I2C驱动client注册的方法
- 和菜鸟一起学linux总线驱动之初识i2c驱动数据传输流程
- Linux 驱动注册(driver_register)流程probe方法的选择
- 迅为Linux驱动教程——总线_设备_驱动注册流程详解
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册
- linux I2C 驱动之----i2c驱动的注册过程(i2c_register_driver->driver_register(&driver->driver)->driver_find)
- linux I2C 驱动之----i2c_client 的注册
- i2c_add_driver:i2c驱动注册流程分析
- linux I2C 驱动之----i2c_driver的注册 .
- linux I2C 驱动之----i2c驱动的注册过程(i2c_register_driver->driver_register(&driver->driver)->driver_find)
- i2c驱动注册流程实例分析
- linux-i2c驱动 之 i2c设备层的注册过程probe函数如何被调用分析
- 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解
- 迅为Linux驱动教程——总线_设备_驱动注册流程详解