From: David Brownell <david-b@pacbell.net>
To: Jaya Kumar <jayakumar.lkml@gmail.com>
Cc: Eric Miao <eric.y.miao@gmail.com>,
Sam Ravnborg <sam@ravnborg.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: Sun, 30 Nov 2008 09:55:28 -0800 [thread overview]
Message-ID: <200811300955.30180.david-b@pacbell.net> (raw)
In-Reply-To: <45a44e480811291552i77878bcdn5fe33f48fc4236eb@mail.gmail.com>
On Saturday 29 November 2008, Jaya Kumar wrote:
> On Sun, Nov 30, 2008 at 6:54 AM, David Brownell <david-b@pacbell.net> wrote:
> > If you want to pursue this, I'd like to get the gpio_chip
> > proposal in place first: bitmask read and write, without
> > forcing an "all bits are contiguous" policy. Lightweight.
>
> Yup, yup, I definitely want to pursue it. I want Linux e-paper
> displays to be zippy. :-) Agreed, I will do bitmask read and write.
> Hey, wait a sec, bitmask write definitely. but bitmask read is
> peculiar to me. I can understand the caller would want to do something
> like foo = gpio_get_values(gpio, bitwidth). But would they really want
> to do foo = gpio_get_values(gpio, bitwidth, bitmask) rather than deal
> with it appropriately themselves?
They wouldn't want names so easily confused with the current set
of GPIO calls, no.
But if they're using GPIOs as a low-bandwidth parallel bus they'd
most *certainly* need to be able to read, not just write. That's
what the "I" part of "GPIO" represents: "I"nput (vs "O"utput).
> > Maybe it should suffice to have a gpio_chip support the
> > bitmask ops, instead of just bit-at-a-time ones... so it'd
> > be practical to incorporate this by itself, given patches
> > to convert a couple gpio_chip implementations.
>
> Ok, you've scared me there. I only have a Gumstix board so I can do it
> for the pxa255 but will need help if more platforms are needed.
> Exploiting this opportunity for hardware whoring, if anyone wants to
> send me free hardware, I'll be ecstatic and will eagerly do support
> duty on said platforms. :-)
Doesn't necessarily need to be *you* doing that, but if it only
works on older gumstix boards it'd not be general enough. Which
is part of why I say to get the lowest level proposal out there
first. If done right, it'll be easy to support on other chips.
> >
> > Then separately two more things:
> >
> > - A gpio_* interface proposal for higher-level bitmask calls.
> > This is worth some discussion; the calls should clearly
> > be optional (not everything will implement them), and I
> > can't help but suspect <linux/bitmap.h> interfaces should
> > interoperate smoothly.
... including probably ganged request/free, and direction updates.
When bitbanging a multiplexed parallel databus, you'll often need
to change directions.
> >
> > - A gpiolib based implementation, using those new gpio_chip
> > methods as accelerators if they're present. This should
> > probably also be optional, even at the Kconfig level; many
> > systems won't need to spend memory on these calls.
>
> Understood. I will make it optional. Does
> CONFIG_GPIOLIB_MULTIBIT_ACCESS sound okay?
Kind of verbose for my taste, and it's already "multibit" (one
at a time, but still multiple) ... let's see some more mergeable
proposals and code first. Different C file too, I suspect.
> > Don't assume gpiolib when defining the interface.
>
> Ok, I didn't understand this part. I think you mentioned a higher
> level interface before but I didn't fully understand, if not gpiolib,
> then at what level do you recommend?
The gpio_*() interfaces are how system glue code and drivers
access GPIOs, unless they roll their own chip-specific calls.
Whereas gpiolib (and gpio_chip) are an *optional* framework
for implementing those calls. Platforms can (and do!) use
other frameworks ... maybe they don't want to pay its costs,
and don't need the various GPIO expander drivers.
So to repeat: don't assume the interface is implemented in
one particular way (using gpiolib). It has to make sense
with other implementation strategies too. Standard split
between interface and implementation, that's all. (Some folk
have been heard to talk about "gpiolib" as the interface to
drivers ... it's not, it's a provider-only interface library.)
- Dave
next prev parent reply other threads:[~2008-11-30 17:55 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-25 22:52 [RFC 2.6.27 1/1] gpiolib: add support for batch set of pins Jaya Kumar
2008-11-26 1:20 ` Eric Miao
2008-11-26 3:27 ` Jaya Kumar
2008-11-26 4:15 ` David Brownell
2008-11-26 5:51 ` 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 [this message]
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
2008-11-26 9:09 ` Paulius Zaleckas
2008-11-26 9:18 ` Jaya Kumar
2008-11-26 10:08 ` [Linux-fbdev-devel] " Geert Uytterhoeven
2008-11-26 10:25 ` Jaya Kumar
2008-11-26 12:08 ` Geert Uytterhoeven
2008-11-29 22:47 ` David Brownell
2008-11-29 23:04 ` Jaya Kumar
2008-11-30 3:27 ` 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=200811300955.30180.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=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).