1. 理解MTK平台TP驱动的基本框架
在MTK平台上开发触摸驱动,最核心的就是设备树(DTS)和GPIO配置。我刚接触MTK平台时,也被这些概念搞得头大,但实际摸清楚后发现其实没那么复杂。简单来说,设备树就是用来描述硬件配置的一种数据结构,告诉内核有哪些硬件设备、它们如何连接、使用哪些资源。而GPIO配置则是控制硬件引脚的关键,比如触摸屏的中断引脚、复位引脚等。
MTK的TP驱动框架主要位于kernel-4.19/drivers/input/touchscreen/mediatek/目录下。其中,mtk_tpd.c是核心文件,负责整个触摸驱动的初始化和输入子系统的注册。具体的触摸芯片驱动(比如gslx680、ft5x16等)则放在同目录下的子文件夹中。
我第一次调试TP驱动时,最头疼的就是设备树配置。MTK平台的设备树配置分为两部分:DCT(Device Configuration Tool)和DTS(Device Tree Source)。DCT主要用于配置GPIO的初始状态,而DTS则用于定义设备树节点。这两者必须保持一致,否则驱动无法正常工作。
2. GPIO配置与DCT工具的使用
GPIO配置是TP驱动的基础,如果GPIO配置错了,后续的所有工作都是白费。MTK平台提供了DCT工具(DrvGen.exe)来辅助配置GPIO。这个工具位于vendor/mediatek/proprietary/tools/dct/目录下。
打开DrvGen.exe后,你需要加载对应项目的DWS文件。DWS文件有两个位置需要配置:
vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/你的项目/dct/dctkernel-4.19/drivers/misc/mediatek/dws/你的主控
在DCT工具中,你需要配置I2C物理接口和中断引脚。以I2C1为例,你需要找到对应的SDA和SCL引脚,并设置为I2C功能。中断引脚则需要设置为GPIO输入模式,并启用中断功能。
这里有个坑我踩过好几次:DCT工具配置完成后,必须生成代码并重新编译preloader和kernel,否则配置不会生效。第一次调试时,我忘了重新编译preloader,结果调试了半天才发现问题。
3. 设备树配置详解
设备树配置是TP驱动的核心,它定义了触摸芯片的硬件连接和驱动参数。设备树文件通常位于kernel-4.19/arch/arm/boot/dts/project.dts。
3.1 触摸设备节点配置
在设备树中,你需要添加一个触摸设备节点,通常命名为&touch。这个节点包含了触摸屏的各种参数,比如分辨率、按键配置、滤波器设置等。
&touch {
tpd-resolution = <600 1024>;
lcm-resolution = <600 1024>;
use-tpd-button = <0>;
tpd-key-num = <3>;
tpd-key-local= <139 172 158 0>;
tpd-key-dim-local = <90 883 100 40 230 883 100 40 370 883 100 40 0 0 0 0


384

被折叠的 条评论
为什么被折叠?



