Driver for new hid class (was: Can you use the USB HID interfacewithin a driver?)

From: Adam Nielsen
Date: Sun Nov 02 2008 - 01:44:41 EST


For 2.6.28, the HID code has been completely refactored, and converted into a proper bus, making it possible to write driver easily in a way that the driver implements only parts where device deviates from the HID standard, and lets the rest to be handled by generic code. I guess this is what you are looking for?

Yes, that sounds like exactly what I'm after! This device seems to be HID with a custom protocol over the top, so presumably I can let the HID driver handle all the USB initialisation and just focus on the protocol.

Okay, I've upgraded to 2.6.28-rc2 and started writing a driver for the new hid class. It didn't take long for me to get stuck though :-(

When I load my module, it calls hid_register_driver() which returns 0/success. However that's as far as it gets. I've defined a probe function to attach to the device, but this never gets called.

Is there something else I need to do? The USB IDs are right, and I tried replugging the device with my "driver" loaded but it seems to be ignored. It seems the device appears as a full HID input implementation, so it gets an evdev device associated with it.

Does this mean I need to blacklist it to stop the HID input driver from claiming it? Or should my driver be able to claim it in preference to the input driver as mine is for a specific device, as opposed to the whole class?

Thanks,
Adam.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/