Re: "permanently" unbind a device from a driver?

Greg KH
2009-01-28T06:25:15Z

On Thu, Jan 22, 2009 at 12:24:20AM +0300, Michael Tokarev wrote:
> Greg KH wrote:
> > On Wed, Jan 21, 2009 at 05:20:45PM -0000, Sam Liddicott wrote:
> >> * Greg KH wrote, On 21/01/09 16:23:
> >>> On Wed, Jan 21, 2009 at 11:44:03PM +0800, Ming Lei wrote:
> >>>
> >>>> 2009/1/21 Greg KH <greg@kroah.com>:
> >>>>
> >>>>> Just add a blacklist rule to the usbhid driver for this device. There
> >>>>> are a number of devices out there that need this functionality, which is
> >>>>> why there is such a list.
> >>>>>
> >>>> Is it possible to implement a generic blacklist mechanism in driver core
> >>>> to support the function for all kinds of drivers? or is it necessary to do that?
> >>>>
> >>> It's not necessary as the hid core already supports this very thing due
> >>> to the need for it (it's the easiest way to write a userspace Windows
> >>> driver, so lots of manufacturers lie about their devices in order to
> >>> work around having to write a Windows kernel driver.)
> >>>
> >>> So just add this device to the hid core blacklist, and you are all set.
> >>>
> >>> Care to send a patch?
>
> Ok, I'm looking at this now, but have a question:
> which quirk code(s)/bits should I use for that?
> Assuming the table in question is in
> drivers/hid/usbhid/hid-quirks.c
> file.
> What's needed is to stop usbhid module from claiming this device in the
> first place.

No, add the device to the hid_ignore_list[] table in
drivers/hid/hid-core.c.

> >> I've often felt that a /proc or /sys interface to allow blacklist
> >> additions or quirk addition would be great.
> >
> > Some subsystems support this, like the HID subsystem :)
>
> Oh, I didn't know. In fact, that's exactly what I was asking in my
> first email in this thread - to have some module parameter or a sysfs
> file which can be touched to stop the module from claiming the device.
> This also helps to debug it, to know the right bits to use.. which I
> don't know... ;)

There is some way to do this, but I can't recall how at the moment. Try
asking the HID maintainer about this.

good luck,

greg k-h