在Linux内核中集成了许多电容触摸芯片的驱动,其中就包括我们使用的ft5426的驱动。所以我们来使用一下Linux内核自带的ft5426驱动文件。在使用之前需要先将前面我们添加的ft5426.c驱动文件去除掉,只 需 要 修 改drivers/input/touchscreen/Makefile 这个文件即可,将下面这一行删除掉:
obj-y += ft54266.o
内核自带的 ft5426 的驱动文件为 drivers/input/touchscreen/edt-ft5x06.c。
1、使能内核ft5426驱动配置
要使用Linux内核自带的驱动,需要添加Linux内核配置。首先打开图形化配置界面,命令如下:
make ARCH=arm menuconfig
配置路径如下:
Device Drivers--->
Input device support--->
[*]Touchscreens--->
<*>EDT FocalTech FT5x06 I2C Touchscreen support
配置如图 1所示:
文章图片
图 1 配置完成后重新编译Linux内核,生成zImage镜像。
2、修改设备树文件
我们要根据edt-ft5x06.c 文件中的compatible 属性修改设备树下ft5426设备节点的compatible 属性值edt-ft5x06.c 所支持的 compatible 属性列表如下所示:
static const struct of_device_id edt_ft5x06_of_match[] = {
{ .compatible = "edt,edt-ft5206", },
{ .compatible = "edt,edt-ft5306", },
{ .compatible = "edt,edt-ft5406", },
{ /* sentinel */ }
};
可以看出,edt-ft5x06.c 文件默认支持的 compatible 属性只要三个“edt,edt-ft5206”、 “edt,edt-ft5306”和“edt,edt-ft5406”。我们可以修改设备树中的 ft5426 节点,在 compatible 属性值添加一条“edt,edt-ft5406”,或者在edt-ft5x06.c文件中的edt_ft5x06_of_match 表,在里面添加一条:
{ .compatible = "edt,edt-ft5426", }
总之一句话,让 ft5426 这个设备和 edt-ft5x06.c 这个驱动匹配起来。这里我们修改设备树下的ft5426设备节点,修改后如下所示;
1 ft5426: ft5426@38 {
2compatible = "edt,edt-ft5426","edt,edt-ft5406";
3reg = <0x38>;
4pinctrl-names = "default";
5pinctrl-0 = <&pinctrl_tsc>;
6interrupt-parent = <&gpio1>;
7interrupts = <9 0>;
8reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
9interrupt-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
10 };
在compatible属性中添加"edt,edt-ft5406"兼容值。
设备树修改完成后,重新编译。然后使用新的zImage和dtb设备树文件启动开发板。驱动正常的情况,有如下启动信息:
文章图片
图 2 然后可以使用下面的命令查看input设备的具体情况:
cat /proc/bus/input/devices
结果如图 3:
文章图片
图 3 然后可以使用hexdump或者ts_test_mt命令进行测试。
【#|i.MX6ULL终结者Linux 电容触摸屏实验使用Linux内核自带的ft5426驱动】
文章图片
推荐阅读
- i.MX6ULL终结者|i.MX6ULL终结者Linux 电容触摸屏实验运行测试
- i.MX6ULL终结者|i.MX6ULL终结者Linux 电容触摸屏实验Tslib移植和使用
- i.MX6ULL终结者|i.MX6ULL终结者Linux 电容触摸屏实验实验程序编写
- #|i.MX6ULL终结者Linux 电容触摸屏实验硬件原理图
- i.MX6ULL终结者|i.MX6ULL终结者Linux 电容触摸屏实验Linux下电容触摸屏驱动框架
- #|Python基础——魔法方法与异常处理
- #|Python基础——类和对象与魔法方法
- 安装教程|Linux-安装Redis(详细教程)
- c++编程|c++高精度算法