From: Paul Mundt <lethal@linux-sh.org>
To: David Brownell <david-b@pacbell.net>
Cc: Bill Gatliff <bgat@billgatliff.com>,
Linux Kernel list <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>,
Andrew Victor <andrew@sanpeople.com>,
Haavard Skinnemoen <hskinnemoen@atmel.com>,
jamey.hicks@hp.com, Kevin Hilman <khilman@mvista.com>,
Nicolas Pitre <nico@cam.org>, Russell King <rmk@arm.linux.org.uk>,
Tony Lindgren <tony@atomide.com>
Subject: Re: [patch/rfc 2.6.19-rc5] arch-neutral GPIO calls
Date: Tue, 14 Nov 2006 06:30:11 +0900 [thread overview]
Message-ID: <20061113213011.GA20507@linux-sh.org> (raw)
In-Reply-To: <200611131200.02032.david-b@pacbell.net>
On Mon, Nov 13, 2006 at 12:00:01PM -0800, David Brownell wrote:
> On Monday 13 November 2006 10:38 am, Paul Mundt wrote:
> > They're something that has to be accounted for in any sort of API, or we
> > just end up throwing it all out and starting over again. I was thinking
> > more of the SuperIO or mfd device scope, where this _is_ a requirement.
>
> Could you elaborate on these SuperIO and MFD thingies? Especially with
> reference to my point that multiple controllers *are* allowed, and that
> this is just a platform-specific issue? (As shown by the fact that the
> API works fine with OMAP1, accessing both GPIO and MPUIO controllers
> through those API calls ...)
>
I think we're talking past each other but effectively in agreement. Bill
was suggesting that multiple controllers were out of scope for the
proposal, which is what I was objecting to. If the API is handling a GPIO
cookie and allows for multiple controllers, I have no objections.
> ... pin mux is 100% out of scope for managing/using GPIOs, since pin
> mux kicks in for pins that aren't even GPIO-capable ...
>
I disagree. Pin muxing kicks in for pins that aren't GPIO-capable, but
for many cases GPIO-capable is just another pin state that can be handled
via muxing. Pin refcounting is obviously not within the scope of your
proposed API (nor should it be), but we do need to allow for pin muxing
to be reconfigured in the GPIO case if nothing else is using the pin in
question that the GPIO maps to. Most of this will be platform specific
and layered, though.
> On the contrary, keeping board-specific pin configuration code out of
> otherwise generic/portable device drivers is a Very Good Thing. And
> that primarily means moving that code into platform/board specific
> setup code. (Today's Linux doesn't have other places to put such code,
> especially if you don't want to demand much from typically-sluggish
> boot loader teams.)
>
This is exactly the sort of static configuration I was referring to.
> > since it's ultimately up to the system and driver
> > inserted at the time to grab and configure the pin as necessary, the
> > board or CPU code is not going to have any notion of the "preferred" pin
> > state, especially in the heavily muxed case.
>
> I don't see this either.
>
> In the primary "production board" use case, there is absolutely a "preferred"
> pin mux config state: each pin is connected to one peripheral in one way.
> And typically its configuration is never changed; if it is, that's something
> the pin mux API would need to handle. (One example: using a UART's RXD
> pin as a wakeup GPIO while the system sleeps. Presumably there are others.)
>
Your definition of "typical" seems to vary considerably from mine. The
typical case more and more is having multiple functions per pin, where a
GPIO state is just another function. If muxing happens within the board
setup code, then we've already effectively locked out the other
functions. This is also not something that can be resolved at build time.
For example, I happen to have a UART RX and an MMC DMA request on the
same pin (GPIO-configured for certain implementations). Both of these can
be provided as modules for a "production" board where the pin can then be
grabbed and toggled depending on which module is inserted, doing any sort
of pin setup on the board side will not help in this case, it's something
that needs to happen higher up.
next prev parent reply other threads:[~2006-11-13 21:31 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-11 23:41 [patch/rfc 2.6.19-rc5] arch-neutral GPIO calls David Brownell
2006-11-12 1:27 ` H. Peter Anvin
2006-11-12 3:04 ` David Brownell
2006-11-12 3:15 ` H. Peter Anvin
2006-11-13 3:30 ` Bill Gatliff
2006-11-13 17:38 ` Paul Mundt
2006-11-13 17:56 ` Thiago Galesi
2006-11-13 19:25 ` David Brownell
2006-11-13 19:50 ` Bill Gatliff
2006-11-13 18:19 ` Bill Gatliff
2006-11-13 18:38 ` Paul Mundt
2006-11-13 19:29 ` Bill Gatliff
2006-11-13 20:15 ` Paul Mundt
2006-11-20 21:49 ` David Brownell
2006-11-21 3:44 ` Bill Gatliff
2006-11-21 4:45 ` David Brownell
2006-11-21 5:09 ` Bill Gatliff
2006-11-21 5:35 ` David Brownell
2006-11-21 6:09 ` Paul Mundt
2006-11-21 18:13 ` David Brownell
2006-11-22 3:36 ` Bill Gatliff
2006-11-22 3:55 ` Paul Mundt
2006-11-22 4:45 ` [Bulk] " David Brownell
2006-11-22 4:47 ` Bill Gatliff
2006-11-21 15:57 ` Bill Gatliff
2006-11-23 0:40 ` David Brownell
2006-11-30 6:57 ` pHilipp Zabel
2006-11-30 7:29 ` pHilipp Zabel
2006-11-30 22:24 ` David Brownell
2006-11-20 22:15 ` David Brownell
2006-11-21 2:56 ` Bill Gatliff
2006-11-13 20:00 ` David Brownell
2006-11-13 21:30 ` Paul Mundt [this message]
2006-11-14 3:21 ` David Brownell
2006-11-13 19:21 ` David Brownell
2006-11-13 19:43 ` Bill Gatliff
2006-11-13 20:15 ` David Brownell
2006-11-13 20:26 ` Bill Gatliff
2006-11-13 20:53 ` David Brownell
2006-11-13 20:58 ` Bill Gatliff
2006-11-13 20:29 ` Bill Gatliff
2006-11-16 14:54 ` [RFC/PATCH] arch-neutral GPIO calls: AVR32 implementation Haavard Skinnemoen
2006-11-20 21:47 ` David Brownell
2006-11-21 3:11 ` Bill Gatliff
2006-11-21 5:06 ` David Brownell
2006-11-21 5:51 ` Bill Gatliff
2006-11-21 18:19 ` David Brownell
2006-11-21 9:11 ` Haavard Skinnemoen
2006-11-21 19:03 ` David Brownell
2006-11-28 12:36 ` [RFC/PATCH] arch-neutral GPIO calls: AVR32 implementation [take 2] Haavard Skinnemoen
2006-11-30 19:05 ` David Brownell
2006-12-01 9:51 ` Haavard Skinnemoen
2006-12-20 21:04 ` [patch 2.6.20-rc1 0/6] arch-neutral GPIO calls David Brownell
2006-12-20 21:08 ` [patch 2.6.20-rc1 1/6] GPIO core David Brownell
2006-12-27 17:49 ` Pavel Machek
2006-12-28 22:05 ` David Brownell
2006-12-29 0:27 ` Pavel Machek
2006-12-30 1:18 ` David Brownell
2007-01-01 20:55 ` Pavel Machek
2007-01-01 21:27 ` David Brownell
2007-01-02 14:18 ` Pavel Machek
2006-12-20 21:09 ` [patch 2.6.20-rc1 2/6] OMAP GPIO wrappers David Brownell
2006-12-20 21:11 ` [patch 2.6.20-rc1 3/6] AT91 " David Brownell
2006-12-21 6:10 ` Andrew Morton
2006-12-21 6:45 ` David Brownell
2006-12-20 21:12 ` [patch 2.6.20-rc1 4/6] PXA " David Brownell
2006-12-21 6:12 ` Andrew Morton
2006-12-21 6:44 ` David Brownell
2006-12-21 14:27 ` Nicolas Pitre
2006-12-21 15:03 ` pHilipp Zabel
2006-12-21 17:25 ` Nicolas Pitre
2006-12-21 19:32 ` pHilipp Zabel
2006-12-21 20:10 ` Nicolas Pitre
2006-12-21 20:32 ` Bill Gatliff
2006-12-22 6:53 ` pHilipp Zabel
2006-12-28 20:47 ` David Brownell
2006-12-30 2:15 ` Nicolas Pitre
2006-12-30 2:38 ` David Brownell
2007-01-01 19:43 ` David Brownell
2006-12-30 1:13 ` David Brownell
2006-12-21 19:25 ` David Brownell
2006-12-27 17:53 ` Pavel Machek
2006-12-28 20:48 ` David Brownell
2006-12-28 20:50 ` Pavel Machek
2006-12-28 20:53 ` Pavel Machek
2006-12-20 21:13 ` [patch 2.6.20-rc1 5/6] SA1100 " David Brownell
2006-12-21 6:13 ` Andrew Morton
2006-12-22 7:16 ` pHilipp Zabel
2006-12-22 15:05 ` Nicolas Pitre
2006-12-30 2:21 ` David Brownell
2006-12-30 3:15 ` Nicolas Pitre
2006-12-30 6:01 ` David Brownell
2006-12-30 13:59 ` pHilipp Zabel
2006-12-30 15:08 ` Russell King
2006-12-23 11:37 ` Russell King
2006-12-23 20:39 ` David Brownell
2006-12-27 18:24 ` Pavel Machek
2006-12-20 21:14 ` [patch 2.6.20-rc1 6/6] S3C2410 " David Brownell
2006-12-21 10:33 ` Arnaud Patard
2006-12-21 15:29 ` pHilipp Zabel
2006-12-23 11:40 ` Russell King
2006-12-20 23:30 ` [patch 2.6.20-rc1 0/6] arch-neutral GPIO calls Håvard Skinnemoen
2006-12-20 23:46 ` 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=20061113213011.GA20507@linux-sh.org \
--to=lethal@linux-sh.org \
--cc=akpm@osdl.org \
--cc=andrew@sanpeople.com \
--cc=bgat@billgatliff.com \
--cc=david-b@pacbell.net \
--cc=hskinnemoen@atmel.com \
--cc=jamey.hicks@hp.com \
--cc=khilman@mvista.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nico@cam.org \
--cc=rmk@arm.linux.org.uk \
--cc=tony@atomide.com \
/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