RE: [PATCH 2/3] dt-bindings: firmware: xilinx: Add conditional pinctrl schema

Jain, Ronak
2025-09-17T07:28:29Z

[AMD Official Use Only - AMD Internal Distribution Only]

Hi Rob,

I am following up on this thread as the query from April is still open. Could you please take a look at my question in the inline mail below?

Thanks,
Ronak

> -----Original Message-----
> From: Jain, Ronak
> Sent: Tuesday, March 4, 2025 11:46 AM
> To: 'Rob Herring' <robh@kernel.org>
> Cc: 'krzk+dt@kernel.org' <krzk+dt@kernel.org>; 'conor+dt@kernel.org'
> <conor+dt@kernel.org>; Simek, Michal <michal.simek@amd.com>; Manne,
> Nava kishore <nava.kishore.manne@amd.com>; 'devicetree@vger.kernel.org'
> <devicetree@vger.kernel.org>; 'linux-arm-kernel@lists.infradead.org' <linux-
> arm-kernel@lists.infradead.org>; 'linux-kernel@vger.kernel.org' <linux-
> kernel@vger.kernel.org>
> Subject: RE: [PATCH 2/3] dt-bindings: firmware: xilinx: Add conditional pinctrl
> schema
>
> Hi @Rob Herring,
>
> Did you get a moment to go through the queries I asked for?
>
> Thanks,
> Ronak
>
> > -----Original Message-----
> > From: Jain, Ronak
> > Sent: Thursday, February 20, 2025 5:48 PM
> > To: Rob Herring <robh@kernel.org>
> > Cc: krzk+dt@kernel.org; conor+dt@kernel.org; Simek, Michal
> > <michal.simek@amd.com>; Manne, Nava kishore
> > <nava.kishore.manne@amd.com>; devicetree@vger.kernel.org; linux-arm-
> > kernel@lists.infradead.org; linux-kernel@vger.kernel.org
> > Subject: RE: [PATCH 2/3] dt-bindings: firmware: xilinx: Add conditional
> pinctrl
> > schema
> >
> > Hi Rob,
> >
> > > -----Original Message-----
> > > From: Jain, Ronak
> > > Sent: Thursday, February 13, 2025 4:46 PM
> > > To: Rob Herring <robh@kernel.org>
> > > Cc: krzk+dt@kernel.org; conor+dt@kernel.org; Simek, Michal
> > > <michal.simek@amd.com>; Manne, Nava kishore
> > > <nava.kishore.manne@amd.com>; devicetree@vger.kernel.org; linux-
> arm-
> > > kernel@lists.infradead.org; linux-kernel@vger.kernel.org
> > > Subject: RE: [PATCH 2/3] dt-bindings: firmware: xilinx: Add conditional
> > pinctrl
> > > schema
> > >
> > > Hi Rob,
> > >
> > > > -----Original Message-----
> > > > From: Rob Herring <robh@kernel.org>
> > > > Sent: Wednesday, February 12, 2025 3:24 AM
> > > > To: Jain, Ronak <ronak.jain@amd.com>
> > > > Cc: krzk+dt@kernel.org; conor+dt@kernel.org; Simek, Michal
> > > > <michal.simek@amd.com>; Manne, Nava kishore
> > > > <nava.kishore.manne@amd.com>; devicetree@vger.kernel.org; linux-
> > arm-
> > > > kernel@lists.infradead.org; linux-kernel@vger.kernel.org
> > > > Subject: Re: [PATCH 2/3] dt-bindings: firmware: xilinx: Add conditional
> > pinctrl
> > > > schema
> > > >
> > > > On Thu, Feb 06, 2025 at 06:22:43AM -0800, Ronak Jain wrote:
> > > > > Updates the Device Tree bindings for Xilinx firmware by introducing
> > > > > conditional schema references for the pinctrl node.
> > > > >
> > > > > Previously, the pinctrl node directly referenced
> > > > > xlnx,zynqmp-pinctrl.yaml. However, this patch modifies the schema to
> > > > > conditionally apply the correct pinctrl schema based on the
> compatible
> > > > > property. Specifically:
> > > > > - If compatible contains "xlnx,zynqmp-pinctrl", reference
> > > > > xlnx,zynqmp-pinctrl.yaml.
> > > > > - If compatible contains "xlnx,versal-pinctrl", reference
> > > > > xlnx,versal-pinctrl.yaml.
> > > > >
> > > > > Additionally, an example entry for "xlnx,versal-pinctrl" has been
> > > > > added under the examples section.
> > > > >
> > > > > Signed-off-by: Ronak Jain <ronak.jain@amd.com>
> > > > > ---
> > > > > .../firmware/xilinx/xlnx,zynqmp-firmware.yaml | 20
> > ++++++++++++++++++-
> > > > > 1 file changed, 19 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git
> > a/Documentation/devicetree/bindings/firmware/xilinx/xlnx,zynqmp-
> > > > firmware.yaml
> > b/Documentation/devicetree/bindings/firmware/xilinx/xlnx,zynqmp-
> > > > firmware.yaml
> > > > > index 2b72fb9d3c22..d50438b0fca8 100644
> > > > > ---
> a/Documentation/devicetree/bindings/firmware/xilinx/xlnx,zynqmp-
> > > > firmware.yaml
> > > > > +++
> b/Documentation/devicetree/bindings/firmware/xilinx/xlnx,zynqmp-
> > > > firmware.yaml
> > > > > @@ -76,7 +76,6 @@ properties:
> > > > > type: object
> > > > >
> > > > > pinctrl:
> > > > > - $ref: /schemas/pinctrl/xlnx,zynqmp-pinctrl.yaml#
> > > > > description: The pinctrl node provides access to pinconfig and
> > pincontrol
> > > > > functionality available in firmware.
> > > > > type: object
> > > > > @@ -106,6 +105,21 @@ properties:
> > > > > type: object
> > > > > deprecated: true
> > > > >
> > > > > +allOf:
> > > > > + - if:
> > > > > + properties:
> > > > > + compatible:
> > > > > + contains:
> > > > > + const: xlnx,zynqmp-firmware
> > > > > + then:
> > > > > + properties:
> > > > > + pinctrl:
> > > > > + $ref: /schemas/pinctrl/xlnx,zynqmp-pinctrl.yaml#
> > > > > + else:
> > > > > + properties:
> > > > > + pinctrl:
> > > > > + $ref: /schemas/pinctrl/xlnx,versal-pinctrl.yaml#
> > > >
> > > > The somewhat preferred way to do this would be to do this in the top
> > > > level:
> > > >
> > > > pinctrl:
> > > > type: object
> > > > additionalProperties: true
> > > > properties:
> > > > compatible:
> > > > contains:
> > > > enum:
> > > > - xlnx,zynqmp-pinctrl
> > > > - xlnx,versal-pinctrl
> > > > required:
> > > > - compatible
> > > >
> > > > Otherwise, the pinctrl schema ends up being applied twice.
> > >
> > > Thanks for the patch review and inputs. I'll update and send the next
> > version.
> > >
> >
> > In your suggested code, the schema allows either xlnx,zynqmp-pinctrl or
> > xlnx,versal-pinctrl on any platform, which is incorrect. This means that if a
> > user mistakenly assigns xlnx,versal-pinctrl to a ZynqMP platform or
> > xlnx,zynqmp-pinctrl to a Versal platform, the wrong reference will be used,
> > but no error is reported. The dt-binding check still passes instead of flagging
> > this as an issue.
> >
> > By using a conditional schema, we can enforce platform-specific
> compatibility,
> > ensuring that the correct compatible string is used for the corresponding
> > platform. This would also generate an error if an incorrect compatible string
> is
> > provided, preventing misconfigurations.
> >
> > Please let me know your thoughts.
> >
> > Thanks,
> > Ronak
> >
> > > Thanks,
> > > Ronak
> > > >
> > > > > +
> > > > > required:
> > > > > - compatible
> > > > >
> > > > > @@ -164,6 +178,10 @@ examples:
> > > > > compatible = "xlnx,versal-fpga";
> > > > > };
> > > > >
> > > > > + pinctrl {
> > > > > + compatible = "xlnx,versal-pinctrl";
> > > > > + };
> > > > > +
> > > > > xlnx_aes: zynqmp-aes {
> > > > > compatible = "xlnx,zynqmp-aes";
> > > > > };
> > > > > --
> > > > > 2.34.1
> > > > >