发布时间:2024-10-18 17:01
在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
配置完成后重新编译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 {
2 compatible = "edt,edt-ft5426","edt,edt-ft5406";
3 reg = <0x38>;
4 pinctrl-names = "default";
5 pinctrl-0 = <&pinctrl_tsc>;
6 interrupt-parent = <&gpio1>;
7 interrupts = <9 0>;
8 reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
9 interrupt-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
10 };
在compatible属性中添加"edt,edt-ft5406"兼容值。
设备树修改完成后,重新编译。然后使用新的zImage和dtb设备树文件启动开发板。驱动正常的情况,有如下启动信息:
然后可以使用下面的命令查看input设备的具体情况:
cat /proc/bus/input/devices
结果如图 3:
然后可以使用hexdump或者ts_test_mt命令进行测试。