#|i.MX6ULL终结者Linux 电容触摸屏实验使用Linux内核自带的ft5426驱动

在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所示:
#|i.MX6ULL终结者Linux 电容触摸屏实验使用Linux内核自带的ft5426驱动
文章图片

图 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设备树文件启动开发板。驱动正常的情况,有如下启动信息:
#|i.MX6ULL终结者Linux 电容触摸屏实验使用Linux内核自带的ft5426驱动
文章图片

图 2 然后可以使用下面的命令查看input设备的具体情况:
cat /proc/bus/input/devices
结果如图 3:
#|i.MX6ULL终结者Linux 电容触摸屏实验使用Linux内核自带的ft5426驱动
文章图片

图 3 然后可以使用hexdump或者ts_test_mt命令进行测试。
【#|i.MX6ULL终结者Linux 电容触摸屏实验使用Linux内核自带的ft5426驱动】#|i.MX6ULL终结者Linux 电容触摸屏实验使用Linux内核自带的ft5426驱动
文章图片

    推荐阅读