[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZSPDILYZkxvTnQia@e120937-lin>
Date: Mon, 9 Oct 2023 10:08:48 +0100
From: Cristian Marussi <cristian.marussi@....com>
To: Linus Walleij <linus.walleij@...aro.org>
Cc: Rob Herring <robh@...nel.org>,
AKASHI Takahiro <takahiro.akashi@...aro.org>,
sudeep.holla@....com, krzysztof.kozlowski+dt@...aro.org,
conor+dt@...nel.org, Oleksii_Moisieiev@...m.com,
linux-arm-kernel@...ts.infradead.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-gpio@...r.kernel.org
Subject: Re: [RFC v2 5/5] dt-bindings: gpio: Add bindings for pinctrl based
generic gpio driver
On Mon, Oct 09, 2023 at 09:49:33AM +0200, Linus Walleij wrote:
> On Fri, Oct 6, 2023 at 3:23 PM Rob Herring <robh@...nel.org> wrote:
> > On Thu, Oct 05, 2023 at 11:58:43AM +0900, AKASHI Takahiro wrote:
>
Hi Linus and all,
> > > A dt binding for pin controller based generic gpio driver is defined in
> > > this commit. One usable device is Arm's SCMI.
> >
> > You don't need a "generic" binding to have a generic driver. Keep the
> > binding specific and then decide in the OS to whether to use a generic
> > or specific driver. That decision could change over time, but the
> > binding can't. For example, see simple-panel.
>
> What you say is true for simple-panel (a word like "simple" should
> always cause red flags).
>
> This case is more like mfd/syscon.yaml, where the singular
> compatible = "syscon"; is in widespread use:
>
> $ git grep 'compatible = \"syscon\";' |wc -l
> 50
>
> I would accept adding a tuple compatible if you insist, so:
>
> compatible = "foo-silicon", "pin-contro-gpio";
>
> One case will be something like:
>
> compatible = "optee-scmi-pin-control", "pin-control-gpio";
>
> In this case I happen to know that we have the problem of
> this being standardization work ahead of implementation on
> actual hardware, and that is driven by the will known firmware
> ambition to be completely abstract. It is supposed to sit on
> top of pin control, or as part of pin control. Which leads me to
> this thing (which I didn't think of before...)
>
> > + gpio0: gpio@0 {
> > + compatible = "pin-control-gpio";
> > + gpio-controller;
> > + #gpio-cells = <2>;
> > + gpio-ranges = <&scmi_pinctrl 0 10 5>,
> > + <&scmi_pinctrl 5 0 0>;
> > + gpio-ranges-group-names = "",
> > + "pinmux_gpio";
> > + };
>
Assuming the above &scmi_pinctrl refers to the protocol node as we
usually do, I am a bit puzzled by this example in this RFC series, because
usually in SCMI we DO refer to some resources using the phandle and the
domain IDs as in:
scmi_sensor: protocol@15 {
reg = <15>;
#thermal-sensors-cells = <1>;
};
...
thermal_zones {
pmic {
thermal-sensor = <&scmi_sensor 0>;
};
};
BUT in the SCMI Pinctrl case the current v4 Oleksii series takes advantage
of the existing Pinctrl bindings and naming to describe and refer to
pin/groups/functions, indeed #pinctrl-cells is defined as '0' in the
upcoming SCMI DT protocol node @19 in Oleksii v4, since indeed all the
parsing/matching is done by resource-names following the Picntrl
framework conventions. (AFAIU)
Moreover, due to how the SCMI Pinctrl protocol defines and describes the
pins/groups/functions using a tuple like (<TYPE>, <ID>) , with TYPE
being pin/group/function, a generic binding like the above would have to
be defined by at least 2 cells to be able to identify an SCMI PinCtrl
resource by index. (if that is the aim here...)
Am I right to think that such a generic SCMI PinCtrl binding is still to
be defined somewhere on the SCMI side, if needed as such by this GPIO driver ?
... or I am missing something ?
Thanks,
Cristian
Powered by blists - more mailing lists