static int __init goodix_ts_init(void) TP驱动加载函数——浅析

static int __init goodix_ts_init(void) //驱动加载函数

{

s32 ret;

 

GTP_DEBUG_FUNC(); //出错提示, GTP_DEBUG_FUNC_ON=0时正确

GTP_INFO("GTP driver installing...."); //原样输出

/* 函数解析.note 创建工作队列,返回一个指针*/

goodix_wq = create_singlethread_workqueue("goodix_wq");

if (!goodix_wq) //为0则创建队列失败

{

GTP_ERROR("Creat workqueue failed.");

return -ENOMEM;

}

#if GTP_ESD_PROTECT // 1 esd protection with a cycle of 2 seconds

/*使用的是INIT_DELAYED_WORK(),那么之后我们就会调用schedule_delayed_work(),这俩是一对.它表示,您希望经过一段延时然后再执行某个函数,*/

INIT_DELAYED_WORK(>p_esd_check_work, gtp_esd_check_func);

/*;http://note.youdao.com/noteshare?id=863a9099de0e8a5102dbcc71275f994d&sub=B3DD466B84804768A342E4585FECD025 */

gtp_esd_check_workqueue = create_workqueue("gtp_esd_check")

#endif

/*I2C的设备驱动是通过i2c_add_driver(&goodix_ts_driver)向i2c-core注册的,goodix_ts_driver中的核心是detach和attach函数,在attach中通过probe探测到总线上的设备并把设备和驱动建立连接以完成设备的初始化*/

ret = i2c_add_driver(&goodix_ts_driver);

return ret;

}

你可能感兴趣的:(TP驱动)