From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: Cristian Marussi <cristian.marussi@arm.com>
Cc: Rob Herring <robh@kernel.org>,
sudeep.holla@arm.com, krzysztof.kozlowski+dt@linaro.org,
conor+dt@kernel.org, linus.walleij@linaro.org,
Oleksii_Moisieiev@epam.com, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-gpio@vger.kernel.org
Subject: Re: [RFC 4/4] dt-bindings: gpio: Add bindings for SCMI pinctrl based gpio
Date: Tue, 3 Oct 2023 10:34:08 +0900 [thread overview]
Message-ID: <ZRtvkO56iM9JgHTS@octopus> (raw)
In-Reply-To: <ZRrak57Vg0X0Aqf3@pluto>
Hi Rob, Cristian,
On Mon, Oct 02, 2023 at 03:58:27PM +0100, Cristian Marussi wrote:
> On Mon, Oct 02, 2023 at 09:41:55AM -0500, Rob Herring wrote:
> > On Mon, Oct 02, 2023 at 11:16:02AM +0900, AKASHI Takahiro wrote:
> > > A dt binding for SCMI pinctrl based gpio driver is defined in this
> > > commit. It basically conforms to generic pinctrl-gpio mapping framework.
>
> [ snip]
>
> > > + additionalProperties: false
> > > +
> > > +required:
> > > + - compatible
> > > + - gpio-controller
> > > + - "#gpio-cells"
> > > + - gpio-ranges
> > > +
> > > +additionalProperties: false
> > > +
> > > +examples:
> > > + - |
> > > + #include <dt-bindings/gpio/gpio.h>
> > > +
> > > + scmi_gpio_0: scmi_gpio@0 {
> >
> > gpio {
> >
> > But doesn't SCMI have protocol numbers?
> >
>
> My understanding is that this RFC GPIO driver from Akashi is built
> completely on Pinctrl facilities (as he says in the cover), it is not
> indeed a typical pure SCMI driver, it just happen to trigger the use
> of SCMI if the underlying backend pinctrl driver is pinctrl-scmi;
> but this driver does not really call directly into any SCMI API by
> itself, i.e. it does not get and call any SCMI protocol ops.
> (but it could indeed trigger the backend Pinctrl SCMI driver to issue
> such call on its behalf AFAIU...)
It would be possible to implement this driver by directly using SCMI
pinctrl interfaces (I mean drivers/firmware/arm,scmi/pinctrl.c)
if the system wants to utilize SCMI solely for GPIO accesses and doesn't
need pinctrl support.
(Even so, "protocol@19" will be required due to the current SCMI binding.)
But I didn't take this approach because the kernel's pinctrl framework
(and many existing pinctrl drivers) instead adopts standard pinctrl-
gpio mapping (I mean gpiolib(-of).c) and it just seems to work well.
> I wonder why it has even a dependency on PINCTRL_SCMI at this point;
> is not that it could work (generically) even if the backend Pinctrl
> driver is NOT SCMI ?
> What makes it usable only against an SCMI Pinctrl backend ?
> Cannot be a generic GPIO driver based on top of Pinctrl, no matter which
> Pinctrl backend driver has been configured ?
That is one of my questions (See the issue (3) in my cover letter.)
Why doesn't there exist a generic GPIO driver of this kind (based on gpiolib
framework) even though it could apparently be possible?
I guess that there a couple of reasons:
1) As I mentioned in the issue (1) in my cover letter, the current
framework doesn't present an interface, especially for obtaining
a value on a gpio input pin. Then it enforces each pinctrl-based gpio
driver needs to have its own driver.
2) Furthermore, there may be driver-specific semantics required,
say, for pinconf-related configurations? (I don't come up with any
example, though)
If my driver is good enough for applying to other gpio controllers as well,
I would not hesitate to name it a genuine generic driver whether the backend
may be SCMI or not.
-> Linus, comment here please.
Due to possible cases of (2), I still added "-generic" postfix to the
"compatibles" property so that other variant drivers may be tagged as
"arm,scmi-gpio-some-system" or "some-vendor,scmi-gpio".
Thanks,
-Takahiro Akashi
>
> ...I maybe missing something here about Pinctrl AND GPIO frameworks :P
>
> Thanks,
> Cristian
next prev parent reply other threads:[~2023-10-03 1:34 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-02 2:15 [RFC 0/4] gpio: add SCMI pinctrl based driver AKASHI Takahiro
2023-10-02 2:15 ` [RFC 1/4] pinctrl: define PIN_CONFIG_INPUT AKASHI Takahiro
2023-10-03 20:49 ` Linus Walleij
2023-10-04 6:54 ` AKASHI Takahiro
2023-10-02 2:16 ` [RFC 2/4] pinctrl: add pinctrl_gpio_get_config() AKASHI Takahiro
2023-10-03 20:52 ` Linus Walleij
2023-10-02 2:16 ` [RFC 3/4] gpio: scmi: add SCMI pinctrl based gpio driver AKASHI Takahiro
2023-10-03 21:35 ` Linus Walleij
2023-10-04 6:53 ` AKASHI Takahiro
2023-10-04 8:35 ` Linus Walleij
2023-10-05 2:42 ` AKASHI Takahiro
2023-10-02 2:16 ` [RFC 4/4] dt-bindings: gpio: Add bindings for SCMI pinctrl based gpio AKASHI Takahiro
2023-10-02 3:25 ` Rob Herring
2023-10-02 14:41 ` Rob Herring
2023-10-02 14:58 ` Cristian Marussi
2023-10-03 1:34 ` AKASHI Takahiro [this message]
2023-10-03 0:41 ` AKASHI Takahiro
2023-10-03 8:43 ` Krzysztof Kozlowski
2023-10-03 13:16 ` Linus Walleij
2023-10-04 7:08 ` AKASHI Takahiro
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=ZRtvkO56iM9JgHTS@octopus \
--to=takahiro.akashi@linaro.org \
--cc=Oleksii_Moisieiev@epam.com \
--cc=conor+dt@kernel.org \
--cc=cristian.marussi@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sudeep.holla@arm.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).