From: Alex Courbot <acourbot@nvidia.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Stephen Warren <swarren@wwwdotorg.org>,
Grant Likely <grant.likely@secretlab.ca>,
"devicetree-discuss@lists.ozlabs.org"
<devicetree-discuss@lists.ozlabs.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: How about a gpio_get(device *, char *) function?
Date: Thu, 8 Nov 2012 15:14:34 +0900 [thread overview]
Message-ID: <1908355.tpLPJU8MKg@percival> (raw)
In-Reply-To: <CACRpkdYqCQc0Er1JR_eVzZPCycvKjd0Pph8Dcay0FbU3Q64D8A@mail.gmail.com>
On Thursday 08 November 2012 05:24:19 Linus Walleij wrote:
> I would prefer to create, e.g. in <linux/gpio/consumer.h>
> something like:
>
> struct gpio;
>
> struct gpio *gpio_get(struct device *dev, const char *name);
>
> int gpio_get_value(struct gpio *g);
>
> Nothing more! I.e. struct gpio is an opaque cookie, nothing to be known
> about it.
>
> And then have the drivers using this *ONLY* include <linux/gpio/consumer.h>
> and not <linux/gpio.h>. So drivers have no clue what struct gpio is and
> will only operate on it using functions.
>
> This follows the pattern set by Thomas Gleixner for e.g. IRQ descriptors,
> and the style was also used in the redesign of the struct clk *.
Also pretty similar to the regulator framework, which might itself have been
inspired by IRQs and clocks.
> Of course the cross-referencing implementation can in e.g.
> drivers/gpio/gpiodev.c internally define that like this:
>
> #include <linux/gpio.h>
>
> /**
> * @gpio: pointer to global GPIO number
> */
> struct gpio {
> int gpio;
> };
>
> struct gpio *gpio_get(struct device *dev, const char *name)
> {
> /* Lookup in cross-ref table etc */
> }
>
> int gpioh_get_value(struct gpio *g)
> {
> return gpio_get_value(g->gpio);
> }
>
> (...)
>
> Then we can work from there. I think it adds the proper
> opaqueness factor.
Looks nice, simple and to the point! Let's see if I can find the time to cook
something based on this.
Thanks!
Alex.
next prev parent reply other threads:[~2012-11-08 6:14 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-31 9:04 How about a gpio_get(device *, char *) function? Alex Courbot
2012-10-31 9:04 ` Alex Courbot
2012-10-31 15:25 ` Stephen Warren
[not found] ` <509142F5.4010307-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-11-01 2:48 ` Alex Courbot
2012-11-01 2:48 ` Alex Courbot
2012-11-04 18:04 ` Linus Walleij
2012-11-05 7:31 ` Alex Courbot
2012-11-05 12:09 ` Linus Walleij
2012-11-26 11:25 ` Grant Likely
2012-11-05 17:35 ` Stephen Warren
2012-11-06 1:33 ` Alex Courbot
2012-11-07 21:24 ` Linus Walleij
2012-11-08 6:14 ` Alex Courbot [this message]
[not found] ` <CACRpkdYqCQc0Er1JR_eVzZPCycvKjd0Pph8Dcay0FbU3Q64D8A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-08 6:23 ` Alex Courbot
2012-11-08 6:23 ` Alex Courbot
2012-11-13 13:13 ` Linus Walleij
2012-11-07 21:28 ` Linus Walleij
2012-11-26 11:14 ` Grant Likely
2012-11-28 3:38 ` Alex Courbot
2012-11-29 17:34 ` Grant Likely
2012-12-01 18:41 ` Linus Walleij
2012-12-03 14:15 ` Grant Likely
2012-11-26 11:17 ` Grant Likely
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=1908355.tpLPJU8MKg@percival \
--to=acourbot@nvidia.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=grant.likely@secretlab.ca \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=swarren@wwwdotorg.org \
--cc=tglx@linutronix.de \
/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.