From: Stephen Warren <swarren@wwwdotorg.org>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Stephen Warren <swarren@nvidia.com>,
Haojian Zhuang <haojian.zhuang@linaro.org>,
Lars Poeschel <poeschel@lemonage.de>,
Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Subject: Re: [PATCH v2] pinctrl: queue GPIO operations instead of defering
Date: Wed, 21 Aug 2013 17:23:37 -0600 [thread overview]
Message-ID: <52154BF9.1060704@wwwdotorg.org> (raw)
In-Reply-To: <CACRpkdasWurMctYTMZCHS+fwhvmnREaQD1vN54QYpMToTuFjsg@mail.gmail.com>
On 08/21/2013 05:07 PM, Linus Walleij wrote:
> On Mon, Aug 19, 2013 at 9:15 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 08/17/2013 08:56 AM, Linus Walleij wrote:
>
>>> and the pin controller need the GPIO driver to be ready.
>>
>> Why does that happen?
>
> The pin controller call back into the GPIO-side controller
> functions by utilizing the GPIO ranges.
> (Maybe the code is silly, I dunno, check drivers/pinctrl/pinctrl-nomadik.c)
>
>>> This also happens if
>>> pin controllers and GPIO controllers compiled as modules
>>> are inserted in a certain order.
>>
>> Shouldn't deferred probe resolve that just fine, assuming there are no
>> circular dependencies?
>
> The above leads to circular dependencies so that is what I'm
> trying to fix with this.
But the circular dependencies are imposed by a specific driver, not by
the GPIO and pinctrl subsystems.
gpiolib operations call into pinctrl to acquire pin ownership. Hence, no
pinctrl operation (or implementation in a driver) can call into gpiolib,
or a GPIO driver.
Shouldn't this simply be fixed inside whichever driver is performing
circular operations, rather than leaving the driver performing circular
operations, and attemping to make the subsystems support something that
can't be supported?
>>> On the Nomadik we get this situation with the pinctrl
>>> driver when moving to requesting GPIOs off the gpiochip
>>> right after it has been added,
>>
>> So, the pinctrl driver calls gpio_request()? Surely the solution is
>> simply not to do that?
>
> This is what the other patch we're discussing is doing.
> The one that harvests and requests interrupt GPIO's when
> a gpiochip is added...
It would have been good to mention the two patches were related, or did
I just miss that?
So that's another reason for me to object to that other patch. If that
whole process was triggered inside the IRQ controller implementation,
which is logically part of the GPIO controller implementation for the
same HW, the call direction would also be GPIO -> pinctrl or IRQ -> GPIO
-> pinctrl, and hence have no circular issues.
next prev parent reply other threads:[~2013-08-21 23:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-17 14:56 [PATCH v2] pinctrl: queue GPIO operations instead of defering Linus Walleij
2013-08-19 19:15 ` Stephen Warren
2013-08-21 23:07 ` Linus Walleij
2013-08-21 23:23 ` Stephen Warren [this message]
2013-08-21 23:44 ` Linus Walleij
2013-08-19 19:21 ` Stephen Warren
2013-08-21 17:45 ` Stephen Warren
2013-08-21 23:04 ` Linus Walleij
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=52154BF9.1060704@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=haojian.zhuang@linaro.org \
--cc=javier.martinez@collabora.co.uk \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=poeschel@lemonage.de \
--cc=swarren@nvidia.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