public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: Lars Poeschel <poeschel@lemonage.de>
Cc: Javier Martinez Canillas <javier.martinez@collabora.co.uk>,
	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>,
	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: Wed, 04 Sep 2013 14:16:36 -0600	[thread overview]
Message-ID: <52279524.8090006@wwwdotorg.org> (raw)
In-Reply-To: <3144247.j2q6H0KWZx@lem-wkst-02>

On 09/04/2013 03:05 AM, Lars Poeschel wrote:
> On Wednesday 04 September 2013 11:27:12, Stephen Warren wrote:
>> On 09/02/2013 03:25 AM, Lars Poeschel wrote:
>>> Some leagcy drivers currently do this:
>>>
>>> request_gpio(gpio);
>>> gpio_direction_input(gpio);
>>> request_irq(gpio_to_irq(gpio));
>>>
>>> In that case request_irq should not fail because the driver is already the
>>> correct owner of this gpio. But if some other entity owns this gpio it
>>> should fail.
>>
>> Yes.
>>
>>> Also if I understand you correct the other way round should also possible:
>>>
>>> request_irq(gpio_to_irq(gpio));
>>> request_gpio(gpio);
>>> gpio_direction_input(gpio);
>>>
>>> request_irq() also requests the gpio then but the following request_gpio()
>>> should also not fail.
>>
>> I don't believe that code sequence is currently banned. If we want to
>> ban it, we should document that. Until this is documented as being
>> banned, I think we must fully support that code sequence.
>>
>>> To have it work that way we have to track the owners of all requested
>>> gpios
>>> somewhere. Or am I wrong here?
>>> Where and how to record these owners? Can gpio system achieve this? gpios
>>> are requested without an owning device.
>>
>> Yes. But, I believe we need to fully track every GPIO/IRQ owner already
>> right now; if a driver (not the GPIO/IRQ chip driver, but a driver that
>> uses the GPIOs/IRQs) calls gpio_request()/request_irq(), and this patch
>> has already requested them, then we already need to fully track GPIO/IRQ
>> ownership to make sure that the driver's own requests aren't failed
>> because the DT/GPIO core has already requested them on its behalf.
> 
> The driver that tries to use the GPIO requested by this patch before HAS to 
> fail. This is exactly the intention of this patch. We don't want the GPIO to 
> be requested any more, if it is used as an interrupt pin.

That will break existing drivers. There are drivers that request the
same GPIO and IRQ. IIRC, the SDHCI CD (Card Detect) GPIO is requested
that way.

> To be able to implement the way you proposed some mails before, I have to be 
> able to do some checks that to my opinion (and if I understand Linus 
> correctly) aren't possible at the moment.

True.

> So I asked, where and how to record 
> these owners of the GPIOs? And can the GPIO system achieve this and how? Can 
> you please shed some light on this! Thanks!

Alex Courbot's (proposed) new gpiod API has a "dev" parameter to
gpiod_request() which could be used for this purpose. Something similar
could be done for interrupts.

  reply	other threads:[~2013-09-04 20:16 UTC|newest]

Thread overview: 53+ 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-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 [this message]
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-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
2013-09-16 16:03                               ` Lars Poeschel
2013-09-16 17:09                                 ` Stephen Warren
2013-09-22 17:01                                   ` Javier Martinez Canillas
2013-09-23 20:01                                   ` Linus Walleij
2013-09-23 20:21                                     ` Stephen Warren
2013-09-24  8:31                                       ` Linus Walleij
2013-09-24 16:59                                         ` Stephen Warren
2013-10-11  8:16                                           ` 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
2013-09-24 16:56                                     ` Stephen Warren
2013-11-11 18:28                   ` Gerlando Falauto
2013-11-11 18:53                     ` Stephen Warren
2013-11-11 19:17                       ` Gerlando Falauto
2013-11-11 19:33                         ` Stephen Warren
2013-11-11 19:38                           ` Tomasz Figa
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
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=52279524.8090006@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --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=poeschel@lemonage.de \
    --cc=santosh.shilimkar@ti.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox