From: David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
To: Jon Smirl <jonsmirl-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Linux I2C <i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org>
Subject: Re: [PATCH 0/4] i2c: Introduce i2c listeners
Date: Wed, 4 Jun 2008 17:10:59 -0700 [thread overview]
Message-ID: <200806041710.59338.david-b@pacbell.net> (raw)
In-Reply-To: <9e4733910806041611l41832e07p4f55424be0ef5ea0-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On Wednesday 04 June 2008, Jon Smirl wrote:
> > The driver's probe function is, by definition of the device driver
> > model, called on an existing device. So the probe function cannot
> > decide whether the device should be created or not - it's too late at
> > this point.
>
> I don't believe this is has to be true although usually it is. A
For driver model conformant subsystems, it's always true.
> driver is passed in information from the bus core on the probe
> function.
That is, a bus-specific struct wrapping a "struct device" instance.
> It then looks at that information and decides if it wants to
> bind. Drivers return true/false if they want to bind.
Wrong. The probe returns zero if it bound, else negative errno.
Those functions don't return booleans.
> If they return
> false the device structure is destroyed (or reused for the next probe
> call).
No. The struct device is not destroyed at that time for ANY
driver model code I've seen in Linux. Destroying it would
prevent driver modules from binding to that device when they
get loaded later.
> There is nothing in the model that requires an actual device to be
> present for a probe call to happen.
Well, a "struct device" must be present, but there might not
be hardware backing it. Each particular bus infrastructure
instantiates those structs in bus-specific ways.
> A perfectly valid reason for
> refusing to bind would be not having hardware present at the address.
True.
> This is how older ISA drivers are loaded that predate PNP.
Depends somewhat on what flavor of PNP you mean too.
> They search
> for the hardware in the probe function. That's probably why it is
> called "probe" but that predates my involvement in Linux.
And that legacy model is something that's getting removed
everywhere practical. Such "legacy drivers" don't support
hotplugging or most of the other mechanisms defined by the
driver model, since they have the driver creating the
device structs (instead of bus infrastructure).
You're right that this is why the name probe() remains.
I prefer the bind()/unbind() names too.
- Dave
_______________________________________________
i2c mailing list
i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
http://lists.lm-sensors.org/mailman/listinfo/i2c
next prev parent reply other threads:[~2008-06-05 0:10 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-04 18:13 [PATCH 0/4] i2c: Introduce i2c listeners Jean Delvare
[not found] ` <20080604201334.19636f30-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-04 18:18 ` [PATCH 1/4] " Jean Delvare
2008-06-04 18:31 ` [PATCH 2/4] i2c: Convert the lm90 driver to a new-style i2c driver Jean Delvare
2008-06-04 18:33 ` [PATCH 3/4] i2c: Use i2c_listener in driver f75375s Jean Delvare
[not found] ` <20080604203322.472f8653-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-05 8:33 ` Riku Voipio
[not found] ` <4847A4E2.9040406-WgUW+8SLYMv1KXRcyAk9cg@public.gmane.org>
2008-06-05 9:06 ` Jean Delvare
[not found] ` <20080605110659.3456fbe4-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-06 10:21 ` Riku Voipio
[not found] ` <48490FA3.8020702-WgUW+8SLYMv1KXRcyAk9cg@public.gmane.org>
2008-06-06 11:38 ` Jean Delvare
2008-06-04 18:35 ` [PATCH 4/4] i2c: Use i2c_listener in driver lm75 Jean Delvare
2008-06-04 18:55 ` [PATCH 0/4] i2c: Introduce i2c listeners Jon Smirl
[not found] ` <9e4733910806041155n7551ac74lf29c8a32163ec09a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-04 19:28 ` Jon Smirl
[not found] ` <9e4733910806041228i330e145q439d3ee43494f4c4-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-04 21:33 ` Jean Delvare
[not found] ` <20080604233335.13459512-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-04 23:11 ` Jon Smirl
[not found] ` <9e4733910806041611l41832e07p4f55424be0ef5ea0-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05 0:10 ` David Brownell [this message]
[not found] ` <200806041710.59338.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05 0:42 ` Jon Smirl
[not found] ` <9e4733910806041742va67401en608c8c4b8c4c11b9-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05 2:21 ` David Brownell
[not found] ` <200806041921.26293.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05 4:04 ` Jon Smirl
[not found] ` <9e4733910806042104l70cf8a30sc6329b1c3016c879-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05 8:18 ` David Brownell
[not found] ` <200806050118.23706.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05 14:55 ` Jon Smirl
[not found] ` <9e4733910806050755n3835d20xfc4d018c2222d5d3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05 17:00 ` Jean Delvare
[not found] ` <20080605190034.16f06604-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-05 17:34 ` Jon Smirl
[not found] ` <9e4733910806051034k2e40082focaaa03b124fcd4ad-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05 18:29 ` Jean Delvare
2008-06-05 8:49 ` Jean Delvare
[not found] ` <20080605104914.2dd622b2-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-05 14:30 ` Jon Smirl
2008-06-05 8:38 ` Jean Delvare
2008-06-05 9:05 ` Jean Delvare
[not found] ` <20080605110502.76f0f606-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-05 14:59 ` Jon Smirl
2008-06-05 0:03 ` Trent Piepho
[not found] ` <Pine.LNX.4.58.0806041638080.10290-13q4cmjDBaTP3RPoUHIrnuTW4wlIGRCZ@public.gmane.org>
2008-06-05 0:27 ` David Brownell
[not found] ` <200806041727.51746.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05 0:40 ` Trent Piepho
[not found] ` <Pine.LNX.4.58.0806041731250.10290-13q4cmjDBaTP3RPoUHIrnuTW4wlIGRCZ@public.gmane.org>
2008-06-05 2:14 ` David Brownell
[not found] ` <200806041914.27291.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05 7:08 ` Trent Piepho
[not found] ` <Pine.LNX.4.58.0806042349251.10290-13q4cmjDBaTP3RPoUHIrnuTW4wlIGRCZ@public.gmane.org>
2008-06-05 8:15 ` David Brownell
2008-06-05 8:16 ` Jean Delvare
2008-06-05 0:45 ` Jon Smirl
2008-06-04 21:12 ` Jean Delvare
2008-06-06 2:47 ` David Brownell
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=200806041710.59338.david-b@pacbell.net \
--to=david-b-ybekhbn/0ldr7s880joybq@public.gmane.org \
--cc=i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org \
--cc=jonsmirl-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox