All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lars Poeschel <poeschel@lemonage.de>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	Lars Poeschel <larsi@wh2.tu-dresden.de>,
	Grant Likely <grant.likely@linaro.org>,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Ian Campbell <ian.campbell@citrix.com>,
	Kumar Gala <galak@codeaurora.org>,
	Pawel Moll <pawel.moll@arm.com>,
	Tomasz Figa <tomasz.figa@gmail.com>,
	Javier Martinez Canillas <javier.martinez@collabora.co.uk>,
	Enric Balletbo i Serra <eballetbo@gmail.com>,
	Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>,
	Santosh Shilimkar <santosh.shilimkar@ti.com>,
	Kevin Hilman <khilman@linaro.org>, Balaji T K <balajitk@ti.com>,
	Tony Lindgren <tony@atomide.com>,
	Jon Hunter <jgchunter@gmail.com>
Subject: Re: [PATCH v3] gpio: interrupt consistency check for OF GPIO IRQs
Date: Mon, 02 Sep 2013 11:38:25 +0200	[thread overview]
Message-ID: <4094364.ACYUvMRRNa@lem-wkst-02> (raw)
In-Reply-To: <5220F849.8030909@wwwdotorg.org>

Am Freitag, 30. August 2013, 13:53:45 schrieb Stephen Warren:
> On 08/29/2013 01:26 PM, Linus Walleij wrote:
> > On Tue, Aug 27, 2013 at 10:17 PM, Stephen Warren <swarren@wwwdotorg.org> 
wrote:
> >> On 08/26/2013 08:07 AM, Lars Poeschel wrote:
> >>> Currently the kernel is ambigously treating GPIOs and interrupts
> >>> from a GPIO controller: GPIOs and interrupts are treated as
> >>> orthogonal. This unfortunately makes it unclear how to actually
> >>> retrieve and request a GPIO line or interrupt from a GPIO
> >>> controller in the device tree probe path.
> >> 
> >> I still think that this patch is the wrong approach. Instead, the logic
> >> should be hooked into gpio_request() and request_irq(). This patch only
> >> addresses DT, and ignores anything else, hence doesn't seem like the
> >> right level of abstraction to plug in, since the issue is not related to
> >> DT.> 
> > We tried to do it that way, and it exploded. See commit
> > b4419e1a15905191661ffe75ba2f9e649f5d565e
> > "gpio/omap: auto request GPIO as input if used as IRQ via DT"
> > 
> > Here request_irq() augmented through its irqdomain to
> > issue gpio_request_one().
> > 
> > Why was this patch reverted? It seems this is what has not
> > managed to reach the audience here.
> > 
> > It turns out some drivers were already doing this:
> > 
> > request_gpio(gpio);
> > gpio_direction_input(gpio);
> > request_irq(gpio_to_irq(gpio));
> > 
> > Looks perfectly valid right?
> > 
> > Not so: after the above change, we tried to request the
> > GPIO a *second time* in the GPIO driver's irq map function,
> > and of course it failed, as it was already taken.
> > 
> > So saying that it should be done in the request_irq()
> > function is imposing this other semantic on the kernel
> > instead: you must *NOT* request the GPIO with
> > request_gpio() if you're going to use it as an IRQ.
> 
> Surely both request_gpio() and request_irq() must both request the GPIO
> (amongst other things), with the caveat that if the same driver does
> both, this specific "sharing" is allowed.

As explained in my previous mail, I do not see, how this should work.

> If that won't work, then the very core concept behind what this patch is
> attempting to do won't work.

The concept only does not work in the non-DT case, which we do neither try to 
address with this patch.

> > (Also, it force us to implement the same code in each
> > and every driver, but that is a lesser problem.)
> 
> Drivers don't have to do the request; the IRQ/GPIO core can do this,
> with drivers simply providing an irq_to_gpio() (which only returns valid
> data iff there's a 1:1 mapping between IRQs and GPIOs in that particular
> HW).
> 
> > I don't quite understand what is so hard around this.
> > We cannot get away from restricting the semantics in
> > some way, if gpio-controllers shall also be interrupt-controllers,
> > the current patch is the least intrusive I've seen so far.
> 
> Yet the current patch only addresses a limited set of cases, since it
> doesn't hook the APIs but rather parses the DT. It doesn't cover the
> non-DT case. It should if the feature is useful.

As pointed out before, only DT has this problem, that, whatever you do, 
otherwise it has no chance to request a gpio for a gpio-backed irq. Drivers 
can do this and board files also can do this.
I agree with you that it is somewhat odd, that there are two different ways, 
doing the same thing, but I don't see another way yet.

  reply	other threads:[~2013-09-02  9:38 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-26 14:07 [PATCH v3] gpio: interrupt consistency check for OF GPIO IRQs Lars Poeschel
2013-08-27 20:17 ` Stephen Warren
2013-08-27 20:38   ` Santosh Shilimkar
2013-08-27 20:38     ` Santosh Shilimkar
2013-08-29 19:26   ` Linus Walleij
2013-08-30  0:24     ` Javier Martinez Canillas
2013-08-30 19:55       ` Stephen Warren
2013-09-02  9:25         ` Lars Poeschel
2013-09-03 17:27           ` Stephen Warren
2013-09-04  9:05             ` Lars Poeschel
2013-09-04 20:16               ` Stephen Warren
2013-09-09 16:19                 ` Mark Brown
2013-09-10  8:47                   ` Lars Poeschel
2013-09-10 13:56                     ` Javier Martinez Canillas
2013-09-10 19:52                       ` Stephen Warren
2013-09-10 21:23                         ` Javier Martinez Canillas
2013-09-11  5:24                           ` Joel Fernandes
2013-09-11  5:24                             ` Joel Fernandes
2013-09-10 19:53                     ` Stephen Warren
2013-09-10 21:37                       ` Mark Brown
2013-09-10 22:34                         ` Stephen Warren
2013-09-11  0:52                           ` Javier Martinez Canillas
2013-09-11 19:43                             ` Stephen Warren
     [not found]                               ` <5230C7F6.3080803-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-09-16 16:03                                 ` Lars Poeschel
2013-09-16 16:03                                   ` Lars Poeschel
2013-09-16 17:09                                   ` Stephen Warren
     [not found]                                     ` <52373B34.4060709-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-09-22 17:01                                       ` Javier Martinez Canillas
2013-09-22 17:01                                         ` Javier Martinez Canillas
2013-09-23 20:01                                     ` Linus Walleij
2013-09-23 20:01                                       ` Linus Walleij
2013-09-23 20:21                                       ` Stephen Warren
2013-09-23 20:21                                         ` Stephen Warren
2013-09-24  8:31                                         ` Linus Walleij
2013-09-24  8:31                                           ` Linus Walleij
     [not found]                                           ` <CACRpkdZ7E7MGppbkTiObvTDHdmphnbysMKVc1OZjsPXKVuKttQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-09-24 16:59                                             ` Stephen Warren
2013-09-24 16:59                                               ` Stephen Warren
     [not found]                                               ` <5241C4DB.9090200-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-10-11  8:16                                                 ` Linus Walleij
2013-10-11  8:16                                                   ` Linus Walleij
2013-09-23 19:41                                 ` Linus Walleij
2013-09-23 19:41                                   ` Linus Walleij
2013-09-23 19:53                               ` Linus Walleij
2013-09-23 20:12                                 ` Stephen Warren
2013-09-24  8:26                                   ` Linus Walleij
     [not found]                                     ` <CACRpkdZKqW9veHzc1Rgj4oKsjGRATk+Sz8vJaP3EfT4de+bjQA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-09-24 16:56                                       ` Stephen Warren
2013-09-24 16:56                                         ` Stephen Warren
     [not found]                   ` <20130909161924.GT29403-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2013-11-11 18:28                     ` Gerlando Falauto
2013-11-11 18:28                       ` Gerlando Falauto
2013-11-11 18:53                       ` Stephen Warren
     [not found]                         ` <528127B2.80109-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-11-11 19:17                           ` Gerlando Falauto
2013-11-11 19:17                             ` Gerlando Falauto
2013-11-11 19:33                             ` Stephen Warren
2013-11-11 19:33                               ` Stephen Warren
2013-11-11 19:38                               ` Tomasz Figa
2013-11-11 19:38                                 ` Tomasz Figa
2013-11-12 10:29                               ` Linus Walleij
2013-11-12 10:29                                 ` Linus Walleij
2013-09-03 12:43         ` Linus Walleij
2013-09-03 17:32           ` Stephen Warren
2013-08-30 19:53     ` Stephen Warren
2013-09-02  9:38       ` Lars Poeschel [this message]
2013-09-03 17:29         ` Stephen Warren
2013-09-04  9:21           ` Lars Poeschel
2013-09-04 20:18             ` Stephen Warren
2013-09-03 12:35       ` Linus Walleij
2013-09-03 17:29         ` Stephen Warren
2013-09-04  8:35           ` Lars Poeschel
2013-09-04 20:13             ` Stephen Warren
     [not found]       ` <CAK7N6vrEXVyLHpY-v+SJ668hC0wvHrWOgtviAQ+w5yis7p_E4Q@mail.gmail.com>
2013-09-03 17:22         ` Stephen Warren
2013-08-29 15:14 ` Strashko, Grygorii

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=4094364.ACYUvMRRNa@lem-wkst-02 \
    --to=poeschel@lemonage.de \
    --cc=balajitk@ti.com \
    --cc=devicetree@vger.kernel.org \
    --cc=eballetbo@gmail.com \
    --cc=galak@codeaurora.org \
    --cc=grant.likely@linaro.org \
    --cc=ian.campbell@citrix.com \
    --cc=javier.martinez@collabora.co.uk \
    --cc=jgchunter@gmail.com \
    --cc=khilman@linaro.org \
    --cc=larsi@wh2.tu-dresden.de \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=plagnioj@jcrosoft.com \
    --cc=santosh.shilimkar@ti.com \
    --cc=swarren@wwwdotorg.org \
    --cc=tomasz.figa@gmail.com \
    --cc=tony@atomide.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.