——— 触屏驱动小结
智能手机驱动在LCD调试OK后,紧接着就是要将TP搞定了。此篇简单介绍了在MTK 6765(Android9.0 / kernel-4.9)环境下的调试focaltech的驱动小结。
- Android MTK TP Driver 触屏驱动
- 一、TP启动过程及驱动概述
- 二、修改驱动文件
- 1、添加内核驱动文件
- (1)驱动文件移植到指定目录
- (2)修改Kconfig 文件
- (3)修改Makefile 文件
- (4)修改内核主文件
- (5)修改内核驱动配置文件
- 2、DTS设备树配置
- 3、DWS文件配置
- 4、用户文件配置
- 三、小结
Mtk Touch driver 驱动包括:Mtkplatform 虚拟平台设备驱动、Module touch IC 驱动、Inputsubsystem。
(1)Module touch IC 驱动就是我们要添加的主要内容。
(2)Mtk platform 设备驱动是mtk为了兼容多个touch IC驱动而设计出来的虚拟驱动,它会去遍历每一个touch IC驱动,直到其中一个初始化成功。
(3)Linux input_subsystem是linux的输入子系统,我们的输入设备都要通过这个子系统进行上报事件以及设置事件的类型。
下面这段就是驱动代码中最重要的接口主体部分:
在这里我们以实例的方式描述增加有一款TP的驱动。
首先,我们要了解原理图,规格书。了解驱动是什么芯片,规格书上了解相关硬件属性通讯方式,然后再一步一步添加文件和验证。缺少的找供应商索要。
当前我要添加的TP芯片属性如下表:
(1)驱动文件移植到指定目录
将驱动文件打包到 focaltech_touch文件夹, 并将focaltech_touch驱动文件夹复制到内核触屏的目录下,有的驱动文件分散文件就多,有的比较集中文件就少。
kernel-4.9/drivers/input/touchscreen/mediatek
(2)修改Kconfig 文件
修改 mediatek 目录下的 Kconfig 文件,在这个文件增加如下一行,添加编译配置项目:
(3)修改Makefile 文件
修改 mediatek 目录下的 Makefile 文件,在这个文件的末尾增加如下一行,添加编译路径:
(4)修改内核主文件
内核主文件位置:
kernel-4.9driversinput ouchscreenmediatekfocaltech_touchfocaduiyltech_core.c
修改I2C对应关键内容:
(5)修改内核驱动配置文件
根据项目修改内核配置文件对应项目的宏。
文件路径:
kernel-4.9driversinput ouchscreenmediatekfocaltech_touchfocaltech_config.h
以下几项是关键项,我将他们打开:
设备树位置:
kernel-4.9archarm64bootdtsmediatekk65v1_64_bsp.dts
调用DTS驱动路径:
kernel-4.9/drivers/input/touchscreen/mediatek/mtk_ypd.c
添加或修改内容:
修改DWS文件的目的是为了配置系统的中断号、设备树I2C地址和对应的名称等。
使用DrvGen.exe工具,配置vendor和kernel目录下的dws文件,
工具路径:
vendormediatekproprietaryscriptsdctDrvGen.exe)
配置文件路径如下:
vendor:vendormediatekproprietarybootablebootloaderlk argetk65v1_64_bspdctdctcodegen.dws
kernel:kernel-4.9driversmiscmediatekdwsmt6765k65v1_64_bsp.dws
如图所示为:中断0;延时0;上升沿触发
如图所示为:I2C名称 CAP_TOUCH; I2C地址:0x38,I2C硬件编号:I2C-0
配置文件路径:
kernel-4.9archarm64configsk65v1_64_bsp_debug_defconfig
kernel-4.9archarm64configsk65v1_64_bsp_defconfig
debug 对应debug版本,如果不嫌麻烦,建议一起更改掉。
对应修改的文件内容:
1、TP驱动没有动到MTK的系统配置,这一点我认为修改效率还是相对较好的,不用我们上来就要全编译。
2、配置触屏按键的参数是由系统接口来实现获取设备树节点数据的,要如果触屏按键功能不行,可以通过debug,查看正确获取设备树数据。