Re: [PATCH v3 0/6] hid: Introduce device groups
From: Henrik Rydberg <hidden>
Date: 2012-05-03 13:14:28
Also in:
lkml
quoted
1) Add the devices in question back to the have_special_drivers list.Well... The device presents valid mouse and keyboard interface that should be handled by hid-generic. The behavior of this particular device is the following: - when 1 finger is in use, then it sends events over the mouse interface - when 2 fingers are present, it sends events over the multitouch interface - when you physically trigger the switch mode button, a keyboard appears and it sends key events over the keyboard interface, and eventually mouse events if you press the "mouse" key.... ;-) This crap is all inherited by the fact that Microsoft do not want to handle indirect touch, and the device maker found this solution to counter this. To sum up, adding it to the have_special_drivers driver list won't work as we need part of the device to be handled by hid-generic.
So was this particular device never listed in have_special_drivers?
quoted
2) Add the interface type to the group descision, which should probably be done anyway. I have a patch in the pipe that, will send it later today.A simpler solution consists in adding the macros HID_USB_MT_DEVICE(v, p) and HID_BLUETOOTH_MT_DEVICE(v, p) as you had introduced in a earlier patch (I don't know why it disappeared).
No, the specific entries in the hid-multitouch device list matches any group, so those defines were simplified away in the second version.
The problem came out because: - hid-multitouch registered the triplet BUS_USB / VID / PID. - For each interface, it asks udev (or the kernel) which driver to use, and whatever .group was, it was always hid-multitouch that came out. So it's just safer to specify the group for all multitouch devices.
This is still confusing. I thought the real problem was that the non-mt interfaces do not match hid-generic. Solution 2) should take care of that. What I don't understand is how those other interfaces came to be handled by hid-generic before this patch, unless this device was never listed in have_special_driver. Are we talking about USB_DEVICE_ID_TOPSEED2_PERIPAD_701 here? Henrik