All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: Paul Mundt <lethal@linux-sh.org>
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: Mon, 13 Nov 2006 12:00:01 -0800	[thread overview]
Message-ID: <200611131200.02032.david-b@pacbell.net> (raw)
In-Reply-To: <20061113183811.GA19979@linux-sh.org>

On Monday 13 November 2006 10:38 am, Paul Mundt wrote:
> On Mon, Nov 13, 2006 at 12:19:11PM -0600, Bill Gatliff wrote:
> > True, but right now if the "multiple GPIO controllers" are on something 
> > like i2c/spi, they have the synch/asynch issues that Jamey mentioned and 
> > so are by definition out of scope for this proposal.  If the GPIO lines 
> > are in an MMIO controller (PLD/FPGA, perhaps), then there's no reason 
> > that the board implementer couldn't address that in their implementation 
> > of the proposed functions.
> > 
> 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 ...)


> > ... except that I bet David is thinking that the implementations will be 
> > in arch/arm/irq-at91rm9200.c or something, and not in 
> > asm/arm/board-xyz.c, so it's the arch implementer's responsibility and 
> > not the platform author's.  Yea, I see your point now.
>
> The problem with this is that it gets in to something that's getting
> close to static pin state configuration.

I really don't see this at all (see previous email).


>	 Setting up the mux

... pin mux is 100% out of scope for managing/using GPIOs, since pin mux kicks
in for pins that aren't even GPIO-capable ...


>	 from platform code is brain-damage,

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.)


>	 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.)

The only situation where there might not be a "preferred" mode is very much
a secondary use case:  the "development board", used to hook up many different
kinds of peripheral hardware.  Even in those cases, it makes perfect sense
for Kconfig options to define the _current_ "preferred" mode -- these pins
get muxed for the peripheral that's actually connected today, rather than the
one that we developed two months ago.  Because those drivers being developed
are going to be used with a "production board", where costs incurred for
dynamic configuration are undesirable...


> > I say that we go with David's proposal for 2.6.19 anyway, and maybe by 
> > 2.6.20 we'll have a consensus on how to address that with some 
> > behind-the-API magic.  :)  (functions added to the machine descriptor, 
> > maybe?)
>
> This is all too late for 2.6.19 regardless. We've gone this long without
> a generic API,

I'd be surprised to see it in 2.6.19, but that's what the patch is against;
though I'd not say it's "too late" in any absolute sense, it's certainly a
small and safe enough change (and bigger changes have gone in later).


> I see no reason to merge a temporary hack now if it's not 
> going to be satisfactory for people and require us to throw it all out
> and start over again anyways.

You've not shown any technical problems with the proposal though; nothing
about it is a "temporary hack".  The functionality in it is clearly
satisfactory enough to work for at least a dozen different platforms,
which are now using similar code.  I don't see why you're so negative...

 
> I have a real need for supporting multiple controllers and handling
> muxing dynamically from various drivers on various architectures, and
> anything that exposes the pin # higher than the controller mapping to
> function level is never going to work. Drivers have _zero_ interest in
> pin #, only in the desired function.

Sure, so what's the problem you have with this then?  It doesn't expose
pin numbers, just GPIO numbers.  It allows platforms to support multiple
controllers.  It doesn't even get in the way of whatever wierd pin mux
setup any given platforms needs.  You should be applauding!

- Dave


  parent reply	other threads:[~2006-11-13 20:00 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 [this message]
2006-11-13 21:30         ` Paul Mundt
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=200611131200.02032.david-b@pacbell.net \
    --to=david-b@pacbell.net \
    --cc=akpm@osdl.org \
    --cc=andrew@sanpeople.com \
    --cc=bgat@billgatliff.com \
    --cc=hskinnemoen@atmel.com \
    --cc=jamey.hicks@hp.com \
    --cc=khilman@mvista.com \
    --cc=lethal@linux-sh.org \
    --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 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.