sample USB Driver / Probe not getting called

selvamuthukumar v v.selvamuthukumar at gmail.com
Mon Oct 17 06:38:09 EDT 2011


On Mon, Oct 17, 2011 at 3:05 PM, Abhijit Pawar <apawar.linux at gmail.com> wrote:
> Hi All,
> Is there any way to call a sample USB driver whenever a USB device is
> attached to the system irrespective of the class and type of the device?
>
> To do this, LDD3, chap 13 mention that for USB device table, we only
> need to add the driver_info entry as 42.
>
> However if I do this, my probe is never getting called.
>
> Now, I give the vendor and product id of this Mouse to the device_id
> table and load my driver again. Still the probe is not getting called.
>
> Is it that USB core is getting the proper driver for this mouse before
> my driver entry in the list?
>
> Am I missing something?
>

probe function will get called only if no other driver is attached to
the device. Make sure the device does not have any other driver.
Please refer line 290 and 291.

drivers/base/dd.c:
270 static int __driver_attach(struct device *dev, void *data)
271 {
272         struct device_driver *drv = data;
273
274         /*
275          * Lock device and try to bind to it. We drop the error
276          * here and always return 0, because we need to keep trying
277          * to bind to devices and some drivers will return an error
278          * simply if it didn't support the device.
279          *
280          * driver_probe_device() will spit a warning if there
281          * is an error.
282          */
283
284         if (!driver_match_device(drv, dev))
285                 return 0;
286
287         if (dev->parent)        /* Needed for USB */
288                 device_lock(dev->parent);
289         device_lock(dev);
290         if (!dev->driver)
291                 driver_probe_device(drv, dev);



More information about the Kernelnewbies mailing list