mbox series

[v5,0/3] pinctrl: scmi: support i.MX95 OEM extensions

Message ID 20240508-pinctrl-scmi-oem-v3-v5-0-6f2b167f71bc@nxp.com (mailing list archive)
Headers show
Series pinctrl: scmi: support i.MX95 OEM extensions | expand

Message

Peng Fan (OSS) May 8, 2024, 3:32 a.m. UTC
ARM SCMI v3.2 Table 24 Pin Configuration Type and Enumerations:
'192 -255 OEM specific units'.

i.MX95 System Manager FW supports SCMI PINCTRL protocol, but it has zero
functions, groups. So pinctrl-scmi.c could not be reused for i.MX95.
Because nxp,pin-func, nxp,pin-conf properties are rejected by dt
maintainers, so use generic property 'pinmux' which requires a new driver
pinctrl-imx-scmi.c

The node will be as below:
 pinctrl_usdhc1: usdhc1-pins {
         sd1-grp0 {
                 pinmux = <IMX95_PAD_SD1_CLK__USDHC1_CLK
                           IMX95_PAD_SD1_STROBE__USDHC1_STROBE>;
                 drive-strength = <0xe>;
                 input-schmitt-enable;
                 bias-pull-down;
                 slew-rate = <0x3>;
         };
         sd1-grp1 {
                 pinmux = <IMX95_PAD_SD1_CMD__USDHC1_CMD
                           IMX95_PAD_SD1_DATA0__USDHC1_DATA0
                           IMX95_PAD_SD1_DATA1__USDHC1_DATA1
                           IMX95_PAD_SD1_DATA2__USDHC1_DATA2
                           IMX95_PAD_SD1_DATA3__USDHC1_DATA3
                           IMX95_PAD_SD1_DATA4__USDHC1_DATA4
                           IMX95_PAD_SD1_DATA5__USDHC1_DATA5
                           IMX95_PAD_SD1_DATA6__USDHC1_DATA6
                           IMX95_PAD_SD1_DATA7__USDHC1_DATA7>;
                 drive-strength = <0xe>;
                 input-schmitt-enable;
                 bias-pull-up;
                 slew-rate = <0x3>;
         };
 };

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Changes in v5:
- Added Rob'r R-b in patch 1 after addressed the comments
- Per Rob, use of_machine_compatible_match for patch 2
- Use of_machine_compatible_match for patch 3, and enable COMPILE_TEST
- Link to v4: https://lore.kernel.org/r/20240505-pinctrl-scmi-oem-v3-v4-0-7c99f989e9ba@nxp.com

Changes in v4:
- Rebase to next-20240503 
- Add pinctrl-scmi-imx.c itself get pins and scmi pinctrl structure to decouple
  pinctrl-scmi.c and pinctrl-scmi-imx.c, so drop patch 3,4,5.
- Link to v3: https://lore.kernel.org/r/20240428-pinctrl-scmi-oem-v3-v3-0-eda341eb47ed@nxp.com

Changes in v3:
- patch 2,3,4,5 are new.
- Rewrite the binding, drop nxp,pin-x properties, use generic properties
  as Rob commented.
- Switch to using pinmux means pinctrl-scmi.c could not be reused, so
  add a new driver in patch 6 for i.MX95. But pinctrl_scmi_get_pins and
  scmi_pinctrl are exported for i.MX95 usage.
- Link to v2: https://lore.kernel.org/r/20240418-pinctrl-scmi-oem-v1-v2-0-3a555a3c58c3@nxp.com

Changes in v2:
- Rename nxp,imx95-pinctrl.yaml  to nxp,imx95-scmi-pinctrl.yaml and move
  to firmware
- Merged patch [1,2]/3 v1 into patch 1/2 v2.
- nxp,imx95-scmi-pinctrl.yaml only has patterProperties for subnode
  The pinctrl will be as below for i.MX95.
        pinctrl_usdhc1: usdhc1-pins {
                sd1cmd {
                        pins = "sd1cmd";
                        nxp,func-id = <0>;
                        nxp,pin-conf = <0x138e>;
                };
                sd1data {
                        pins = "sd1data";
                        nxp,func-id = <0>;
                        nxp,pin-conf = <0x138e>;
                };
        };
- Add pins enum, correct description.
- Link to v1: https://lore.kernel.org/r/20240412-pinctrl-scmi-oem-v1-v1-0-704f242544c1@nxp.com

---
Peng Fan (3):
      dt-bindings: firmware: arm,scmi: Add properties for i.MX95 Pinctrl OEM extensions
      pinctrl: scmi: add blocklist
      pinctrl: imx: support SCMI pinctrl protocol for i.MX95

 .../devicetree/bindings/firmware/arm,scmi.yaml     |   9 +-
 .../bindings/firmware/nxp,imx95-scmi-pinctrl.yaml  |  41 ++
 drivers/pinctrl/freescale/Kconfig                  |   9 +
 drivers/pinctrl/freescale/Makefile                 |   1 +
 drivers/pinctrl/freescale/pinctrl-imx-scmi.c       | 585 +++++++++++++++++++++
 drivers/pinctrl/pinctrl-scmi.c                     |   9 +
 6 files changed, 651 insertions(+), 3 deletions(-)
---
base-commit: 4db57327adc359a3f9a3481d60104be67c42964f
change-id: 20240428-pinctrl-scmi-oem-v3-12130031a74d

Best regards,

Comments

Sudeep Holla May 8, 2024, 9:12 a.m. UTC | #1
On Wed, May 08, 2024 at 11:32:01AM +0800, Peng Fan (OSS) wrote:
> ARM SCMI v3.2 Table 24 Pin Configuration Type and Enumerations:
> '192 -255 OEM specific units'.
>
> i.MX95 System Manager FW supports SCMI PINCTRL protocol, but it has zero
> functions, groups. So pinctrl-scmi.c could not be reused for i.MX95.
> Because nxp,pin-func, nxp,pin-conf properties are rejected by dt
> maintainers, so use generic property 'pinmux' which requires a new driver
> pinctrl-imx-scmi.c
>

Not a review in particular, but if we decide to merge this deviation, it
must be under the condition that it can be deleted anytime in the future
if this becomes annoyance(like other vendors using this as a way to deviate
from the specification). If we can't agree with that, then we better not
merge this at all.

--
Regards,
Sudeep
Peng Fan May 8, 2024, 9:41 a.m. UTC | #2
Hi Sudeep,

> Subject: Re: [PATCH v5 0/3] pinctrl: scmi: support i.MX95 OEM extensions
> 
> On Wed, May 08, 2024 at 11:32:01AM +0800, Peng Fan (OSS) wrote:
> > ARM SCMI v3.2 Table 24 Pin Configuration Type and Enumerations:
> > '192 -255 OEM specific units'.
> >
> > i.MX95 System Manager FW supports SCMI PINCTRL protocol, but it has
> > zero functions, groups. So pinctrl-scmi.c could not be reused for i.MX95.
> > Because nxp,pin-func, nxp,pin-conf properties are rejected by dt
> > maintainers, so use generic property 'pinmux' which requires a new
> > driver pinctrl-imx-scmi.c
> >
> 
> Not a review in particular, but if we decide to merge this deviation, it must be
> under the condition that it can be deleted anytime in the future if this
> becomes annoyance(like other vendors using this as a way to deviate from
> the specification). If we can't agree with that, then we better not merge this
> at all.

It is ok for me. I agree.
But actually this driver still follows Spec by using OEM extensions.

If in future, the spec adds something saying pinmux bit field, and pinctrl-scmi.c
supports it, we could drop the imx driver.

Thanks,
Peng.

> 
> --
> Regards,
> Sudeep
Sudeep Holla May 8, 2024, 12:22 p.m. UTC | #3
On Wed, May 08, 2024 at 09:41:24AM +0000, Peng Fan wrote:
> Hi Sudeep,
>
> > Subject: Re: [PATCH v5 0/3] pinctrl: scmi: support i.MX95 OEM extensions
> >
> > On Wed, May 08, 2024 at 11:32:01AM +0800, Peng Fan (OSS) wrote:
> > > ARM SCMI v3.2 Table 24 Pin Configuration Type and Enumerations:
> > > '192 -255 OEM specific units'.
> > >
> > > i.MX95 System Manager FW supports SCMI PINCTRL protocol, but it has
> > > zero functions, groups. So pinctrl-scmi.c could not be reused for i.MX95.
> > > Because nxp,pin-func, nxp,pin-conf properties are rejected by dt
> > > maintainers, so use generic property 'pinmux' which requires a new
> > > driver pinctrl-imx-scmi.c
> > >
> >
> > Not a review in particular, but if we decide to merge this deviation, it must be
> > under the condition that it can be deleted anytime in the future if this
> > becomes annoyance(like other vendors using this as a way to deviate from
> > the specification). If we can't agree with that, then we better not merge this
> > at all.
>
> It is ok for me. I agree.
> But actually this driver still follows Spec by using OEM extensions.
>

Agreed, but that's what I call as deviations. When such extensions are
used as baseline implementation, it becomes deviations.

--
Regards,
Sudeep