TouchPanel_Driver_Porting(TP驱动移植)

来源:互联网 发布:医院数据库容量计算 编辑:程序博客网 时间:2024/04/30 16:36

以当前项目K9为例:
一、配置步骤
1.查看TP驱动代码目录

user3@rlk-buildsrv20:~/K9/kernel-3.18/drivers/input/touchscreen/mediatek$ lsft5446        Kconfig             tpd_calibrate.c     tpd.hft5x0x    GT9271TB_hotknot     Makefile            tpd_calibrate.h     tpd_init.cGT1151    GT928                met_ftrace_touch.h  tpd_common_probe.c  tpd_misc.cGT1151TB  GT9XX_hotknot        mtk_tpd.c           tpd_debug.c         tpd_setting.cGT5668    GT9XX_hotknot_phone  synaptics_3320_50   tpd_debug.h         unified_driver_4GT910     GT9XX_hotknot_scp    synaptics_i2c_rmi4  tpd_default.cGT911     GT9XXTB_hotknot      tpd_button.c        tpd_default.h

2.添加驱动代码
如果需要新添加一套TP代码,例如:GT917D
首先将驱动代码加入kernel-3.18/drivers/input/touchscreen/mediatek目录下,
添加后当前目录已经有GT917D驱动代码

user3@rlk-buildsrv20:~/K9/kernel-3.18/drivers/input/touchscreen/mediatek$ lsft5446    GT917D               Kconfig             tpd_calibrate.c     tpd.hft5x0x    GT9271TB_hotknot     Makefile            tpd_calibrate.h     tpd_init.cGT1151    GT928                met_ftrace_touch.h  tpd_common_probe.c  tpd_misc.cGT1151TB  GT9XX_hotknot        mtk_tpd.c           tpd_debug.c         tpd_setting.cGT5668    GT9XX_hotknot_phone  synaptics_3320_50   tpd_debug.h         unified_driver_4GT910     GT9XX_hotknot_scp    synaptics_i2c_rmi4  tpd_default.cGT911     GT9XXTB_hotknot      tpd_button.c        tpd_default.h

3.添加配置
然后再配置当前目录下的Kconfig和Makefile文件
在Kconfig文件中添加配置

config TOUCHSCREEN_MTK_GT917D                                                                      bool "GT917D for Mediatek package"      default n      help        Say Y here if you have GT917D touch panel.        If unsure, say N.        To compile this dirver as a module, choose M here: the        module will be called.  source "drivers/input/touchscreen/mediatek/GT917D/Kconfig"

在Makefile文件中添加配置

obj-$(CONFIG_TOUCHSCREEN_MTK_GT917D) +=  GT917D/

4.在版本里添加配置
在user3@rlk-buildsrv20:~/K9/rlk_projects/k9_h8018_a1/kernel$ ls

user3@rlk-buildsrv20:~/K9/rlk_projects/k9_h8018_a1/kernel$ lsrlk6580_we_n_debug_defconfig  rlk6580_we_n_defconfig

分别在rlk6580_we_n_debug_defconfig 和 rlk6580_we_n_defconfig文件中添加配置

CONFIG_INPUT_TOUCHSCREEN=yCONFIG_TOUCHSCREEN_MTK=y                                                                     CONFIG_TOUCHSCREEN_MTK_GT917D=y

如果项目分为好几个bom例如

user3@rlk-buildsrv20:~/K9/rlk_projects$ lsk9_h8018_a1  k9_h8018_a1_gmo  k9_h8018_c1  k9_h8018_c1_gmo 

则每个bom都需要配置
二、编译
编译命令:

user3@rlk-buildsrv20:~/K9$ source rlk_setenv.sh k9_h8018_a1;make -j24 2>&1 |tee build.c

默认编译的是eng版本,如果需要编译user版本则命令为
source rlk_setenv.sh k9_h8018_a1 user
source rlk_setenv.sh k9_h8018_a1 eng
如果只编译kernel,则

source rlk_setenv.sh k9_h8018_a1;make kernel bootimage  -j24 2>&1 |tee build.c

三、编译成功之后
查看一下目录里有没有生成所添加TP模块GT917D

user3@rlk-buildsrv20:~/K9/out/target/product/rlk6580_we_n/obj/KERNEL_OBJ/drivers/input/touchscreen/mediatek$ lsbuilt-in.o  modules.order  tpd_calibrate.o     tpd_default.o  tpd_setting.oft5446      mtk_tpd.o      tpd_common_probe.o  tpd_init.oGT917D      tpd_button.o   tpd_debug.o         tpd_misc.o

有则添加成功,没有则需查看哪里配置不成功

这样一套TP驱动代码就添加成功了。

如果是开始项目的话,则需要再根据项目的原理图,在dws中配置i2c,GPIO;注意上电方式(DMA上电还是PMIC上电,上电电压是多少等);在dts中兼容二供屏
和节点信息,固件版本信息,selinux权限设置等。
再有就是有些功能部分,例如:手势,皮套等

附:
1.编译命令详解
source rlk_setenv.sh k9_h8018_a1 eng/user ;make -j24 2>&1 |tee build.log
Source rlk_setenv.sh:重新执行当前修改的文件
k9_h8018_a1: bom号
Eng/user: eng版本或者user版本 (不写默认为eng版本)
2>&1 : 将标准错误重定向到标准输出
tee build.log : 将log输出到控制台和文件 (以防文件格式不对可以写成.c文件)
2.selinux权限设置
添加user版本访问读写权限时
根据节点位置需要修改的文件不同:
节点在/proc/ 下 ,需要修改

user3@rlk-buildsrv20:~/K9/device/mediatek/common/sepolicy/basic$file.teshell.tegenfs_contexts

节点在/system/下的,则需要修改

user3@rlk-buildsrv20:~/K9/device/mediatek/common/sepolicy/basic$file.teshell.tefile_contexts
原创粉丝点击