public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: Jonathan Corbet <corbet@lwn.net>
Cc: Ben Nizette <bn@niasdigital.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	dsilvers@simtec.co.uk
Subject: Re: [PATCH v2] GPIO: Add gpio_lookup
Date: Tue, 13 Oct 2009 15:06:05 -0700	[thread overview]
Message-ID: <200910131506.05851.david-b@pacbell.net> (raw)
In-Reply-To: <20091012092331.45d7e71b@bike.lwn.net>

On Monday 12 October 2009, Jonathan Corbet wrote:
> On Mon, 12 Oct 2009 17:11:44 +1100
> Ben Nizette <bn@niasdigital.com> wrote:
> 
> > Back to this patch though, the gpio names have to come from the platform
> > code via some platform_data for the gpio chip [1], the driver then looks
> > up that pre-defined name to find the gpio number.  Why not just pass the
> > gpio number straight to the end device driver through platform_data and
> > bypass the middle-man?
> 
> That's true in a situation where you've one One Platform to Bind Them
> All, yes.

What do you mean by "platform" though?  Clearly not what I mean!
You make it sound like an evil place, Barad-dûr hosting an assult
on the Forces Of Light!  :)

If you mean to imply that only statically assigned GPIO numbers
can work, I'll disagree.


> But if you have (say) GPIOs provided by a PCI-connected 
> peripheral which are needed in (say) a camera driver, there is no one
> platform which can manage all those GPIO numbers.

The basic trick is to have gpio chip drivers call back with enough
information to start hooking up the GPIO signals to consumers.  The
OS is only responsible for remembering things ... like how to connect
a phone number or IP address to the right destination.

See for example the pcf875x driver.  When it registers, it reports via
callback that the stage is setup() for performance.  Later it can report
that it's time to teardown() that part of the show.

Whatever sets up that PCI board has to know basically what's there, and
when it sets up the gpio chips it can provide the callbacks needed to
hook up e.g. "base + 19" as the "camera active" LED.  No lookup() needed.

Notice also how doing it that way provides clean ways to sequence the
startup and teardown of complex hardware stacks.  (Too many drivers tend
to ignore those issues, IMO, and for complex hardware modules that can
cause much trouble.)


> In particular, I've 
> done a driver for viafb-based GPIOs; these devices can show up in any
> of a number of x86-based systems.  I honestly don't know why it would
> make sense to try to hardware numbers to these GPIOs when using names
> and dynamic numbering is so much more flexible - and we are already
> tracking the names.

There are video drivers that solve this without needing name-to-ID
style lookups.  I recall discussing them well over a year ago... the
numbering is dynamic, yes.


> Perhaps it would make sense to implement a proper namespace layer for
> GPIOs

Today, that namespace is numeric.  And as far as I know, it's
sufficient ... although it's not intended for browsing, any more
than, say, phone numbers or IP address numbers.


> rather than continuing to grow something which evidently sneaked 
> in through the back door.  Until that's done, though, I think this
> patch is useful.  But it it's really unwanted I'll find some other way.

All *names* for GPIOs snuck through the back door ... except for
the labels in /sys/kernel/debug/gpio, which are diagnostic-only
and not unique.  And the gpio_export_link(), with sysfs names that
are unique within a clearly-defined driver context.

- Dave

  parent reply	other threads:[~2009-10-13 22:21 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-10 19:48 [PATCH] GPIO: Add gpio_lookup Jonathan Corbet
2009-10-10 19:53 ` [PATCH v2] " Jonathan Corbet
2009-10-12  6:11   ` Ben Nizette
2009-10-12 15:23     ` Jonathan Corbet
2009-10-13  8:31       ` Ben Nizette
2009-10-13 22:13         ` David Brownell
2009-10-13 22:06       ` David Brownell [this message]
2009-10-13 22:05     ` David Brownell
2009-10-13 21:10   ` David Brownell
2009-10-13 22:28     ` Jonathan Corbet
2009-10-13 22:53       ` David Brownell
2009-10-14 12:53         ` Mark Brown
2009-10-13 18:05 ` [PATCH] " Andrew Morton
2009-10-13 18:19   ` Jonathan Corbet

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=200910131506.05851.david-b@pacbell.net \
    --to=david-b@pacbell.net \
    --cc=akpm@linux-foundation.org \
    --cc=bn@niasdigital.com \
    --cc=corbet@lwn.net \
    --cc=dsilvers@simtec.co.uk \
    --cc=linux-kernel@vger.kernel.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