From: Anton Vorontsov <avorontsov@ru.mvista.com>
To: Jon Smirl <jonsmirl@gmail.com>
Cc: linuxppc-dev <Linuxppc-dev@ozlabs.org>,
Roland Dreier <rdreier@cisco.com>
Subject: Re: demuxing irqs
Date: Tue, 16 Sep 2008 18:14:22 +0400 [thread overview]
Message-ID: <20080916141422.GA29888@oksana.dev.rtsoft.ru> (raw)
In-Reply-To: <9e4733910809160636heaa545eld0da835b2d163811@mail.gmail.com>
On Tue, Sep 16, 2008 at 09:36:22AM -0400, Jon Smirl wrote:
[...]
> >> >> -/*
> >> >> - * Not implemented, yet.
> >> >> - */
> >> >> -static inline int gpio_to_irq(unsigned int gpio)
> >> >> +static inline unsigned int gpio_to_irq(unsigned int gpio)
> >> >> {
> >> >> - return -ENOSYS;
> >> >> + return gpio;
> >> >
> >> > "GPIO 0" is valid gpio, but "IRQ 0" isn't valid virq. So you
> >> > can't do 1:1 mapping. :-(
> >>
> >> I changed the GPIO numbers inside of Linux to match the virqs.
> >>
> >> ofchip->gc.base = IRQ_GPIO_WKUP(0);
> >
> > Well, I didn't say that it will not work, what I'm trying to say
> > is that I don't quite like the idea of 1:1 mapping for all gpio
> > chips.
> >
> > It is error prone, i.e. gpio_to_irq() can't fail, so you can't
> > tell if gpio to irq translation really happened or not. Plus
> > we might decide to not do 1:1 mapping for other gpio chips.
>
> From reading the ARM code my understanding is that gpio_to_irq() and
> irq_to_gpio() are meant to be fast paths without error checking.
Nope. gpio_to_irq and irq_to_gpio don't have to be fast.
> In
> the gpiolib doc it says these functions should only take a couple of
> instructions.
This is for gpio_get/set_value and gpio_set_direction*.
> You'll detect errors if you take an invalid IRQ from the function and
> feed it into any of the rest of the IRQ API.
Assume that GPIO 8 does not translate to any IRQ, but IRQ 8 is still
valid virq b/c it is mapped for another IRQ controller (particularly
lots of kernel code assumes that IRQ 8 is 8259 PIC's CMOS interrupt,
the PIC and IRQ8 is widely used on PowerPC).
So gpio_to_irq will succeed, and request_irq will succeed too. Though
this would be not correct.
> The idea for setting the GPIO number equal to the VIRQ number came out
> of the ARM code. Making GPIO==VIRQ greatly simplified the code.
Adding .to_irq callback won't complicate code either, but will let
you do the things right.
As for the ARM code... ARM has been using GPIO API long before
GPIOLIB, and back then you didn't have many options.
--
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2
next prev parent reply other threads:[~2008-09-16 14:14 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-13 19:06 demuxing irqs Jon Smirl
2008-09-13 22:41 ` Roland Dreier
2008-09-13 22:54 ` Jon Smirl
2008-09-13 23:04 ` Roland Dreier
2008-09-13 23:23 ` Jon Smirl
2008-09-14 14:06 ` Jon Smirl
2008-09-14 23:25 ` Jon Smirl
2008-09-15 3:06 ` Jon Smirl
2008-09-16 12:17 ` Anton Vorontsov
2008-09-16 12:37 ` Jon Smirl
2008-09-16 13:12 ` Anton Vorontsov
2008-09-16 13:36 ` Jon Smirl
2008-09-16 14:14 ` Anton Vorontsov [this message]
2008-09-16 14:24 ` Jon Smirl
2008-09-16 17:49 ` Scott Wood
2008-09-16 18:32 ` Jon Smirl
2008-09-16 21:42 ` Anton Vorontsov
2008-09-16 22:08 ` Jon Smirl
2008-09-16 23:24 ` Scott Wood
2008-09-16 23:47 ` Jon Smirl
2008-09-17 12:56 ` Anton Vorontsov
2008-09-17 14:09 ` Jon Smirl
2008-09-17 17:54 ` Stephen Neuendorffer
2008-09-16 14:29 ` Jon Smirl
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=20080916141422.GA29888@oksana.dev.rtsoft.ru \
--to=avorontsov@ru.mvista.com \
--cc=Linuxppc-dev@ozlabs.org \
--cc=jonsmirl@gmail.com \
--cc=rdreier@cisco.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;
as well as URLs for NNTP newsgroup(s).