From: David Brownell <david-b@pacbell.net>
To: Eric Miao <eric.y.miao@gmail.com>, Jaya Kumar <jayakumar.lkml@gmail.com>
Cc: Sam Ravnborg <sam@ravnborg.org>,
Jean Delvare <khali@linux-fr.org>,
Eric Miao <eric.miao@marvell.com>,
Haavard Skinnemoen <hskinnemoen@atmel.com>,
Philipp Zabel <philipp.zabel@gmail.com>,
Russell King <rmk@arm.linux.org.uk>,
Ben Gardner <bgardner@wabtec.com>, Greg KH <greg@kroah.com>,
linux-arm-kernel@lists.arm.linux.org.uk,
linux-fbdev-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org, linux-embedded@vger.kernel.org
Subject: Re: [RFC 2.6.27 1/1] gpiolib: add support for batch set of pins
Date: Tue, 25 Nov 2008 20:15:56 -0800 [thread overview]
Message-ID: <200811252015.57870.david-b@pacbell.net> (raw)
In-Reply-To: <f17812d70811251720u47bec50dt3734f5b2bb0d339@mail.gmail.com>
On Tuesday 25 November 2008, Eric Miao wrote:
> Using a bit mask will be more generic if the GPIOs are not contiguous.
> Yet I still doubt this will be generic enough to be added to gpiolib.
My expectation for this kind of mechanism was that systems who need
to craft another parallel bus out of GPIO pins would be doing this
with some system-specific utility functions.
So my "is it generic enough" question is more at the level of "Are
there enough Linux systems that need this sort of thing to justify
generic support?". I happen not to have come across the need for
such ganged access from Linux (yet). Whereas I've yet to use non-x86
Linux systems that don't need to manipulate individual GPIO pins...
> The user of this gpio_set_value_bus() may assume too much about
> the internal, e.g. how many GPIOs on the chip and whether these GPIOs
> are contiguous or not, and whether this GPIO chip support bitwise
> operations.
Actually I would expect that to be addressed by the hardware designer.
As in, if you're bitbanging a 16-bit parallel bus (plus several
control signals -- chip select lines, address latch, r/w, etc) the
board would be designed for efficient bitbanging, by taking care
that the software bus ops aren't stupidly complex. So I guess I'm
agreeing with Eric there: wanting this kind of stuff at all seems
to imply being fairly low-down'n'dirty.
Example, assuming a 32 bit GPIO bank, the data lines would probably
be all adjacent and politely ordered by the board designer so that
/* write a 16 bit value on the specfied data lines,
* assuming the intermediate state doesn't matter...
*/
writew(0xffff << N, &bank->clear_bits);
writew(value << N, &bank->set_bits);
instead of needing to compute some complex permutation of those
bits ... and similarly
/* read a 16 bit value from the specified data lines */
value = 0xffff & (readw(&bank->read_bits) >> N);
possibly after handshaking with the device on the other side
about changing signal direction, again without permutation.
But heck, maybe there just aren't that many adjacent GPIOs free,
because of alternate functions that are used... ugh.
Note also that this proposal only includes
> > + void (*set_bus)(struct gpio_chip *chip,
> > + unsigned offset, int values,
> > + int bitwidth);
not its sibling read operation.
> Let's have a concrete example: what if the user gives a bunch of GPIOs
> that crosses the chip boundary, say, GPIO29 - GPIO35 (with each chip
> covering 32 GPIOs).
I'd care more about the upper level operation being performed ... like the
control protocol for passing the address of a word being read or written
and then switching the bus from address to data read (or write) mode to
get the word, then yielding the bus access.
- Dave
next parent reply other threads:[~2008-11-26 4:15 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <12276535632759-git-send-email-jayakumar.lkml@gmail.com>
[not found] ` <f17812d70811251720u47bec50dt3734f5b2bb0d339@mail.gmail.com>
2008-11-26 4:15 ` David Brownell [this message]
2008-11-26 5:51 ` [RFC 2.6.27 1/1] gpiolib: add support for batch set of pins Jaya Kumar
2008-11-27 20:01 ` Sam Ravnborg
2008-11-27 23:43 ` Jaya Kumar
2008-11-28 5:47 ` Sam Ravnborg
2008-11-29 22:48 ` David Brownell
2008-11-29 23:33 ` Jaya Kumar
2008-11-29 22:54 ` David Brownell
2008-11-29 23:52 ` Jaya Kumar
2008-11-30 17:55 ` David Brownell
2008-12-01 1:10 ` Jaya Kumar
2008-12-27 14:55 ` Jaya Kumar
2008-12-28 18:46 ` Robin Getz
2008-12-28 22:00 ` Ben Nizette
2008-12-29 0:28 ` Jaya Kumar
2008-12-29 20:32 ` David Brownell
2008-12-29 19:59 ` David Brownell
2009-01-06 23:02 ` Robin Getz
2009-01-07 1:52 ` Ben Nizette
2008-12-29 19:56 ` David Brownell
2008-12-30 0:20 ` Jamie Lokier
2008-12-30 0:43 ` David Brownell
2008-12-31 4:55 ` Robin Getz
2008-12-31 4:58 ` Jaya Kumar
2008-12-31 5:02 ` Jaya Kumar
2008-12-31 17:38 ` Robin Getz
2008-12-31 18:05 ` Jaya Kumar
2009-01-06 22:41 ` Robin Getz
2009-01-10 7:37 ` Jaya Kumar
2008-12-29 19:32 ` David Brownell
2008-12-30 15:45 ` Jaya Kumar
2008-12-29 19:06 ` 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=200811252015.57870.david-b@pacbell.net \
--to=david-b@pacbell.net \
--cc=bgardner@wabtec.com \
--cc=eric.miao@marvell.com \
--cc=eric.y.miao@gmail.com \
--cc=greg@kroah.com \
--cc=hskinnemoen@atmel.com \
--cc=jayakumar.lkml@gmail.com \
--cc=khali@linux-fr.org \
--cc=linux-arm-kernel@lists.arm.linux.org.uk \
--cc=linux-embedded@vger.kernel.org \
--cc=linux-fbdev-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=philipp.zabel@gmail.com \
--cc=rmk@arm.linux.org.uk \
--cc=sam@ravnborg.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;
as well as URLs for NNTP newsgroup(s).