问题:在项目中遇到客户需要使用第三方USB触摸屏,协议是标准的HID协议。此时USB触摸屏类似于鼠标、键盘等外设,直接接在电脑上触摸是正常的,但接在我们平台的主板端无法识别。
使用lsusb查看,可以看到设备PID/VID;使用getevent查看,没有相关的设备。说明系统并未识别到该触摸屏,随便插入鼠标、键盘都可以查看到。
分析:USB识别不到,需要在kernel下添加相关的HID配置,VID、PID需要配置进去,免驱的设备直接配置即可。
代码修改:
1、主要三个文件需要修改hid-multitouch.c、hid-core.c、hid-ids.h。目录路径为:kernel\zodiac\4.9\drivers\hid。
2、kernel\zodiac\4.9\drivers\hid\hid-ids.h,定义VID、PID宏
//add by jude 20220111 for XuanShi TP
#define USB_VENDOR_ID_TP_XUANSHI 0x0457
#define USB_DEVICE_ID_TP_XUANSHI 0x1507
//end jude
#define USB_VENDOR_ID_3M 0x0596
#define USB_DEVICE_ID_3M1968 0x0500
#define USB_DEVICE_ID_3M2256 0x0502
#define USB_DEVICE_ID_3M3266 0x0506
#define USB_VENDOR_ID_A4TECH 0