From: Jamie Iles <jamie@jamieiles.com>
To: Anton Vorontsov <cbouatmailru@gmail.com>
Cc: Grant Likely <grant.likely@secretlab.ca>,
Jamie Iles <jamie@jamieiles.com>,
linux-kernel@vger.kernel.org, linux@arm.linux.org.uk,
tglx@linutronix.de, arnd@arndb.de, nico@fluxnic.net
Subject: Re: [PATCHv3 0/7] gpio: extend basic_mmio_gpio for different controllers
Date: Tue, 3 May 2011 23:04:08 +0100 [thread overview]
Message-ID: <20110503220408.GA6978@pulham.picochip.com> (raw)
In-Reply-To: <20110503215211.GA8491@oksana.dev.rtsoft.ru>
On Wed, May 04, 2011 at 01:52:11AM +0400, Anton Vorontsov wrote:
> On Tue, May 03, 2011 at 03:13:20PM -0600, Grant Likely wrote:
> > > struct gpio_mmio_generic {
> > > spinlock_t lock;
> > >
> > > /* initialized by user */
> > > unsigned long reg_data;
> > > unsigned long reg_set;
> > > unsigned long reg_clr;
> > > unsigned long reg_dir;
> > >
> > > void __iomem *reg_base;
>
> This assumes that all reg_* will be mapped with a single ioremap().
> My solution (see below) doesn't have this issue.
>
> > > void gpio_mmio_generic_setup(struct gpio_mmio_generic *gmg, int register_width);
> > > int gpio_mmio_generic_add(struct gpio_mmio_generic *gmg);
> > > void gpio_mmio_generic_remove(struct gpio_mmio_generic *gmg);
>
> I'm not sure you need that complex API.
>
> > > gpio_mmio_generic_setup() sets up the common callback ops in the
> > > embedded gpio_chip, but the decisions it makes could be overridden by
> > > the user before calling gpio_mmio_generic_add().
> > >
> > > I've not had time to prototype this yet, but I wanted to get it
> > > written down and out onto the list for feedback since I probably won't
> > > have any chance to get to it until after UDS. Bonus points to anyone
> > > who wants to take the initiative to hack it together before I get to
> > > it. Extra bonus points to anyone who also converts some of the other
> > > gpio controllers to use it. :-D
> >
> > And triple bonus points to anyone who thinks this is stupid and comes
> > up with a better approach. :-)
>
> This isn't stupid. And I started working on this, so what about
> http://lkml.org/lkml/2011/4/19/401 ? This is pretty much the same
> that you propose.
The advantage that Grant's proposal has though is that the user can
override the gpio_chip callbacks. When I tried porting over some
existing ARM platforms, one of the blocking issues was that lots of
platforms had some annoying small detail that was slightly different
(such as doing muxing in the _get() callback or needing a to_irq
callback).
If we make bgpio_chip public and return that from bgpio_probe
unregistered then the calling code can override some of the methods then
register the gpio_chip.
As a slight aside, if we don't want a platform_device per bank for
devices with multiple banks then I don't think the named resource
approach will work (at least I can't see a particularly nice mechanism).
Any ideas?
Jamie
next prev parent reply other threads:[~2011-05-03 22:04 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-11 11:21 [PATCHv3 0/7] gpio: extend basic_mmio_gpio for different controllers Jamie Iles
2011-04-11 11:21 ` [PATCHv3 1/7] basic_mmio_gpio: remove runtime width/endianness evaluation Jamie Iles
2011-05-03 19:41 ` Grant Likely
2011-04-11 11:21 ` [PATCHv3 2/7] basic_mmio_gpio: convert to platform_{get,set}_drvdata() Jamie Iles
2011-05-03 19:41 ` Grant Likely
2011-04-11 11:21 ` [PATCHv3 3/7] basic_mmio_gpio: allow overriding number of gpio Jamie Iles
2011-05-03 19:41 ` Grant Likely
2011-04-11 11:21 ` [PATCHv3 4/7] basic_mmio_gpio: request register regions Jamie Iles
2011-05-03 19:41 ` Grant Likely
2011-04-11 11:21 ` [PATCHv3 5/7] basic_mmio_gpio: detect output method at probe time Jamie Iles
2011-04-11 12:05 ` Anton Vorontsov
2011-05-03 19:42 ` Grant Likely
2011-04-11 11:21 ` [PATCHv3 6/7] basic_mmio_gpio: support different input/output registers Jamie Iles
2011-04-11 12:06 ` Anton Vorontsov
2011-05-03 19:42 ` Grant Likely
2011-04-11 11:21 ` [PATCHv3 7/7] basic_mmio_gpio: support direction registers Jamie Iles
2011-05-03 19:42 ` Grant Likely
2011-05-03 21:09 ` [PATCHv3 0/7] gpio: extend basic_mmio_gpio for different controllers Grant Likely
2011-05-03 21:13 ` Grant Likely
2011-05-03 21:36 ` Grant Likely
2011-05-03 21:52 ` Anton Vorontsov
2011-05-03 22:04 ` Jamie Iles [this message]
2011-05-03 22:34 ` Anton Vorontsov
2011-05-04 0:00 ` Grant Likely
2011-05-04 10:36 ` Anton Vorontsov
2011-05-04 11:09 ` Jamie Iles
2011-05-04 11:31 ` Anton Vorontsov
2011-05-04 14:37 ` Jamie Iles
2011-05-04 14:43 ` Grant Likely
2011-05-04 14:44 ` Alan Cox
2011-05-04 14:57 ` Jamie Iles
2011-05-04 15:02 ` Anton Vorontsov
2011-05-04 15:04 ` Jamie Iles
2011-05-13 19:37 ` Anton Vorontsov
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=20110503220408.GA6978@pulham.picochip.com \
--to=jamie@jamieiles.com \
--cc=arnd@arndb.de \
--cc=cbouatmailru@gmail.com \
--cc=grant.likely@secretlab.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=nico@fluxnic.net \
--cc=tglx@linutronix.de \
/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