最近在加一块红外的触摸框到TV,根据网上的教程把VID和PID添加到驱动,发现触摸框无法工作。看code后发现是把设备的group识别成usb导致。其实在AN 6.0的kernel只需要在config中enable CONFIG_HID_MULTITOUCH触摸框就可以工作了。
借这个机会顺便了解了HID driver,整理如下:
linux 平台驱动一般由三部分组成: bus,driver,device。hid 驱动除了设备驱动,还多了一个接口驱动,匹配设备时会先跑接口驱动的probe函数,再由接口驱动的probe函数match 设备驱动的probe来connect 设备,具体关系如下:
匹配的流程简单整理如下:
1. 插上触摸框时,会先跑hid-core.c(hid\usbhid)的usbhid_probe,这里主要初始化设备的bus,vid,pid等信息,然后通过hid_add_device添加设备;