All of lore.kernel.org
 help / color / mirror / Atom feed
From: apawar.linux@gmail.com (Abhijit Pawar)
To: kernelnewbies@lists.kernelnewbies.org
Subject: sample USB Driver / Probe not getting called
Date: Mon, 17 Oct 2011 16:12:10 +0530	[thread overview]
Message-ID: <4E9C0682.2040701@gmail.com> (raw)
In-Reply-To: <CAG+MFZxy5XNBK=fB=DOrzLcscDm7-UDWC1qb2hNSFg8GLJihCg@mail.gmail.com>

On 10/17/2011 04:08 PM, selvamuthukumar v wrote:
> On Mon, Oct 17, 2011 at 3:05 PM, Abhijit Pawar<apawar.linux@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);
Thanks for reference to this function. It seems that there isnt any way 
to override the already attached driver to the device.
Is there any?

Regards,
Abhijit Pawar

  reply	other threads:[~2011-10-17 10:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-17  9:35 sample USB Driver / Probe not getting called Abhijit Pawar
2011-10-17 10:38 ` selvamuthukumar v
2011-10-17 10:42   ` Abhijit Pawar [this message]
2011-10-17 11:01     ` selvamuthukumar v

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E9C0682.2040701@gmail.com \
    --to=apawar.linux@gmail.com \
    --cc=kernelnewbies@lists.kernelnewbies.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.