The USB HID quirk list ('hid_blacklist') is a compile-time fixed array
in the current kernel.  Any modifications require editing the module
source and recompiling.  Some distributions compile the usbhid code
into the kernel, thus requiring that the entire kernel be rebuilt.

For most HID devices, this is not a major problem, since quirks are
unlikely to change often.  Some devices, however, have multiple
drivers available, requiring different HID quirks.  For example, the
LabJack U12 data acquisition device requires HID_QUIRK_IGNORE for one
driver and HID_QUIRK_HIDDEV for another.  With a static hid_blacklist
array, switching between the two is quite difficult.

This series of patches fixes this problem by adding a new module
parameter 'hid_quirks' which allows quirks to be modified at boot or
module load-time.  These quirks can also be reviewed and configured at
runtime via a procfs file, /proc/usbhid/device_quirks.  (This latter
ability is controlled by the Kconfig option CONFIG_USBHID_PROC_FS.) The patches also add a new field 'idProductMask' to the hid_blacklist, so some of the multiple-device vendor quirks can be converted into list entries efficiently.

Against 2.6.21-rc4.  Comments welcome,


- Paul

Reply via email to