MTK平台TP驱动设备树与GPIO配置实战解析

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文件有两个位置需要配置:

  1. vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/你的项目/dct/dct
  2. kernel-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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值