Re: [PATCH 4/7] dt-bindings: firmware: arm,scmi: support pinctrl protocol

From: Marco Felsch
Date: Wed Dec 20 2023 - 07:30:50 EST


On 23-12-20, Peng Fan wrote:
> > Subject: Re: [PATCH 4/7] dt-bindings: firmware: arm,scmi: support pinctrl
> > protocol
> >
> > Hi Peng,
> >
> > On 23-12-15, Peng Fan (OSS) wrote:
> > > From: Peng Fan <peng.fan@xxxxxxx>
> > >
> > > Add SCMI v3.2 pinctrl protocol bindings and example.
> > >
> > > Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
> > > ---
> > > .../devicetree/bindings/firmware/arm,scmi.yaml | 99
> > ++++++++++++++++++++++
> > > 1 file changed, 99 insertions(+)
> > >
> > > diff --git a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > > b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > > index 4591523b51a0..bfd2b6a89979 100644
> > > --- a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > > +++ b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > > @@ -247,6 +247,85 @@ properties:
> > > reg:
> > > const: 0x18
> > >
> > > + protocol@19:
> >
> > ...
> >
> > > @@ -401,6 +480,26 @@ examples:
> > > scmi_powercap: protocol@18 {
> > > reg = <0x18>;
> > > };
> > > +
> > > + scmi_pinctrl: protocol@19 {
> > > + reg = <0x19>;
> > > + #pinctrl-cells = <0>;
> > > +
> > > + i2c2-pins {
> > > + groups = "i2c2_a", "i2c2_b";
> > > + function = "i2c2";
> > > + };
> > > +
> > > + mdio-pins {
> > > + groups = "avb_mdio";
> > > + drive-strength = <24>;
> > > + };
> > > +
> > > + keys_pins: keys-pins {
> > > + pins = "GP_5_17", "GP_5_20", "GP_5_22", "GP_2_1";
> > > + bias-pull-up;
> > > + };
> > > + };
> >
> > This example is different to the one you mentioned within the cover-letter. I
> > didn't checked all patches just want to ask which API will be implemented by
> > this patchset?
>
> I kept this change since it was tested by Oleksii, but anyway i.MX not use these.
>
> The API, I suppose you are asking about this?
> static const struct pinctrl_ops pinctrl_scmi_pinctrl_ops = {
> .get_groups_count = pinctrl_scmi_get_groups_count,
> .get_group_name = pinctrl_scmi_get_group_name,
> .get_group_pins = pinctrl_scmi_get_group_pins,
> #ifdef CONFIG_OF
> .dt_node_to_map = pinconf_generic_dt_node_to_map_all,
> .dt_free_map = pinconf_generic_dt_free_map,
> #endif
> };
>
> static const struct pinctrl_ops pinctrl_scmi_imx_pinctrl_ops = {
> .get_groups_count = pinctrl_scmi_get_groups_count,
> .get_group_name = pinctrl_scmi_get_group_name,
> .get_group_pins = pinctrl_scmi_get_group_pins,
> #ifdef CONFIG_OF
> .dt_node_to_map = pinctrl_scmi_imx_dt_node_to_map,
> .dt_free_map = pinconf_generic_dt_free_map,
> #endif
> };

I see, thanks for the clarification. In short: the i.MX SMCI pinctrl
DT-API is the same as the non-SCMI pinctrl API since the dt_node_to_map
will convert it.

Regards,
Marco