From: laurent.pinchart@ideasonboard.com (Laurent Pinchart)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] RFC: interrupt consistency check for OF GPIO IRQs
Date: Tue, 20 Aug 2013 00:04:17 +0200 [thread overview]
Message-ID: <344239800.bDEkDg48ZQ@avalon> (raw)
In-Reply-To: <CACRpkdYjJL6FZwEbB7XLnb9QtjB=3LeE9Ny6KQ4PkM3zpdNqqg@mail.gmail.com>
Hi Linus,
On Wednesday 31 July 2013 01:44:53 Linus Walleij wrote:
> On Tue, Jul 30, 2013 at 6:30 AM, Grant Likely wrote:
> > On Mon, Jul 29, 2013 at 6:36 AM, Linus Walleij wrote:
> >> To solve this dilemma, perform an interrupt consistency check
> >> when adding a GPIO chip: if the chip is both gpio-controller and
> >> interrupt-controller, walk all children of the device tree,
> >> check if these in turn reference the interrupt-controller, and
> >> if they do, loop over the interrupts used by that child and
> >> perform gpio_reques() and gpio_direction_input() on these,
> >> making them unreachable from the GPIO side.
> >
> > Ugh, that's pretty awful, and it doesn't actually solve the root
> > problem of the GPIO and IRQ subsystems not cooperating. It's also a
> > very DT-centric solution even though we're going to see the exact same
> > issue on ACPI machines.
>
> The problem is that the patches for OMAP that I applied and now have had to
> revert solves it in an even uglier way, leading to breaking boards, as was
> noticed.
>
> The approach in this patch has the potential to actually work without
> regressing a bunch of boards...
>
> Whether this is a problem in ACPI or not remains to be seen, but I'm not
> sure about that. Device trees allows for a GPIO line to be used as an
> interrupt source and GPIO line orthogonally, and that is the root of this
> problem. Does ACPI have the same problem, or does it impose natural
> restrictions on such use cases?
>
> > We have to solve the problem in a better way than that. Rearranging
> > your patch description, here are some of the points you brought up so
> > I can comment on them...
> >
> >> This has the following undesired effects:
> >>
> >> - The GPIOlib subsystem is not aware that the line is in use
> >> and willingly lets some other consumer perform gpio_request()
> >> on it, leading to a complex resource conflict if it occurs.
> >
> > If a gpio line is being both requested as a gpio and used as an
> > interrupt line, then either a) it's a bug, or b) the gpio line needs
> > to be used as input only so it is compatible with irq usage. b) should
> > be supportable.
>
> Yes this is what I'm saying too I think...
>
> The bug in (a) manifested itself in the OMAP patch with no real solution in
> sight.
>
> >> - The GPIO debugfs file claims this GPIO line is "free".
> >
> > Surely we can fix this. I still don't see a problem of having the
> > controller request the gpio when it is claimed as an irq if we can get
> > around the problem of another user performing a /valid/ request on the
> > same GPIO line. The solution may be to have a special form of request
> > or flag that allows it to be shared.
>
> I don't see how sharing works here, or how another user, i.e. another one
> than the user wanting to recieve the IRQ, can validly request such a line?
> What would the usecase for that valid request be?
When the GPIO is wired to a status signal (such as an MMC card detect signal)
the driver might want to read the state of the signal independently of the
interrupt handler.
> Basically I believe these two things need to be exclusive in the DT world:
>
> A: request_irq(a resource passed from "interrupts");
> -> core implicitly performs gpio_request()
> gpio_direction_input()
>
> B: gpio_request(a resource passed from "gpios");
> gpio_direction_input()
> request_irq(gpio_to_irq())
>
> Never both. And IIUC that was what happened in the OMAP case.
Isn't the core issue that we can translate a GPIO number to an IRQ number, but
not the other way around ? If that could be done, we could request the GPIO
and configure it as an input when the IRQ is requested.
> >> - The line direction of the interrupt GPIO line is not
> >>
> >> explicitly set as input, even though it is obvious that such
> >> a line need to be set up in this way, often making the system
> >> depend on boot-on defaults for this kind of settings.
> >
> > Should also be solvable if the gpio request problem is solved.
>
> Agreed...
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2013-08-19 22:04 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1375101368-17645-1-git-send-email-linus.walleij@linaro.org>
2013-07-30 4:30 ` [PATCH] RFC: interrupt consistency check for OF GPIO IRQs Grant Likely
2013-07-30 23:44 ` Linus Walleij
2013-07-31 8:35 ` Javier Martinez Canillas
2013-08-02 9:57 ` Alexander Holler
2013-08-02 15:35 ` Alexander Holler
2013-08-03 7:23 ` Alexander Holler
2013-09-10 7:00 ` Joel Fernandes
2013-09-10 13:17 ` Javier Martinez Canillas
2013-09-10 15:00 ` Joel Fernandes
2013-09-10 15:48 ` Javier Martinez Canillas
2013-09-10 16:25 ` Joel Fernandes
2013-09-11 7:05 ` Alexander Holler
2013-09-11 7:16 ` Alexander Holler
2013-09-11 7:30 ` Alexander Holler
2013-09-11 7:36 ` Alexander Holler
2013-08-13 9:52 ` Lars Poeschel
2013-08-19 22:04 ` Laurent Pinchart [this message]
2013-08-21 22:02 ` Linus Walleij
2013-09-06 15:32 ` Laurent Pinchart
2013-09-11 15:30 ` Alexander Holler
2013-09-11 16:14 ` Javier Martinez Canillas
2013-09-11 17:42 ` Alexander Holler
2013-09-12 8:55 ` Alexander Holler
2013-09-12 10:11 ` Javier Martinez Canillas
2013-09-12 10:28 ` Alexander Holler
2013-09-12 11:09 ` Alexander Holler
2013-09-12 11:26 ` Alexander Holler
2013-09-12 11:37 ` Alexander Holler
2013-09-12 15:19 ` Stephen Warren
2013-09-12 15:57 ` Alexander Holler
2013-09-18 0:36 ` Grant Likely
2013-10-20 12:41 ` Laurent Pinchart
2013-10-20 15:51 ` Tony Lindgren
2013-10-20 21:35 ` Stephen Warren
2013-10-21 23:26 ` Laurent Pinchart
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=344239800.bDEkDg48ZQ@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.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