流程有俩种
第一种
IC代码中有tpd_local_init方法,则需要和mtk平台的mtk_tpd.c一起编译
首先mtk_tpd.c注册platform_driver,会将所有编译的touch IC代码加入tpd_driver_list。
如下图代码所示:遍历tpd_driver_list中的touch,进入IC代码中的tpd_local_init。
if (tpd_driver_list[i].tpd_device_name != NULL) {
tpd_driver_list[i].tpd_local_init();
//tpd
/* msleep(1); */
if (tpd_load_status == 1) {
TPD_DEBUG("%s, tpd_driver_name=%s\n", __func__,
tpd_driver_list[i].tpd_device_name);
g_tpd_drv = &tpd_driver_list[i];
break;
}
}
IC代码中的tpd_local_init将通过i2c_add_driver(&tpd_i2c_driver)注册IC。
注意:
mtk_tpd.c文件:&tpd_driver中的of_match_table应和dts文件中touch的compatible保持一致。
IC代码文件:&tpd_i2c_driver中的of_match_table建议改为mediatek,cap_touch,因为dws文件中i2c的name是cap_touch,只有匹配上才会走IC 的probe函数。
IC函数中的probe函数最后设置tpd_load_status=1,IC注册成功
第二种
IC代码中没有tpd_local_init方法,则直接使用i2c_add_driver(&tpd_i2c_driver)注册IC。
注意:
IC代码文件:&tpd_i2c_driver中的of_match_table应和dts文件中touch的compatible保持一致。