[PATCH v3 02/10] dt-bindings: fsl,fpga-qixis-i2c: add support for LX2160ARDB FPGA

Ioana Ciornei posted 10 patches 2 weeks, 1 day ago
There is a newer version of this series
[PATCH v3 02/10] dt-bindings: fsl,fpga-qixis-i2c: add support for LX2160ARDB FPGA
Posted by Ioana Ciornei 2 weeks, 1 day ago
Extend the list of supported compatible strings with fsl,lx2160ardb-fpga.

Since the register map exposed by the LX2160ARDB's FPGA also contains
two GPIO controllers, accept the necessary GPIO pattern property.
At the same time, add the #address-cells and #size-cells properties as
valid ones so that the child nodes of the fsl,lx2160ardb-fpga node are
addressable.

This is necessary because when defining child devices such as the GPIO
controller described in the added example, the child device needs a the
reg property to properly identify its register location in the parent
I2C device address space.

Impose this restriction for the new compatible through an if-statement.

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
---
Changes in v2:
- Enforce a unit address on the child gpios nodes (remove the ?)
- Enforce the use of unit addresses by having #address-size and
  #size-cells only for the newly added fsl,lx2160ardb-fpga compatible
Changes in v3:
- Replace the trivial-gpio reference with an explicit mention of the
  accepted child gpio compatible.
- Reword the commit message.
- Add the 'else' case to the if statement.

 .../bindings/board/fsl,fpga-qixis-i2c.yaml    | 58 +++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml b/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
index 28b37772fb65..e889dac052e7 100644
--- a/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
+++ b/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
@@ -22,6 +22,13 @@ properties:
               - fsl,lx2160aqds-fpga
           - const: fsl,fpga-qixis-i2c
           - const: simple-mfd
+      - const: fsl,lx2160ardb-fpga
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
 
   interrupts:
     maxItems: 1
@@ -32,10 +39,37 @@ properties:
   mux-controller:
     $ref: /schemas/mux/reg-mux.yaml
 
+patternProperties:
+  "^gpio@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        contains:
+          enum:
+            - fsl,lx2160ardb-fpga-gpio-sfp
+
 required:
   - compatible
   - reg
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,lx2160ardb-fpga
+    then:
+      required:
+        - "#address-cells"
+        - "#size-cells"
+    else:
+      properties:
+        "#address-cells": false
+        "#size-cells": false
+
 additionalProperties: false
 
 examples:
@@ -68,3 +102,27 @@ examples:
         };
     };
 
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        board-control@66 {
+            compatible = "fsl,lx2160ardb-fpga";
+            reg = <0x66>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            gpio@19 {
+                compatible = "fsl,lx2160ardb-fpga-gpio-sfp";
+                reg = <0x19>;
+                gpio-controller;
+                #gpio-cells = <2>;
+                gpio-line-names =
+                    "SFP2_TX_EN", "",
+                    "", "",
+                    "SFP2_RX_LOS", "SFP2_TX_FAULT",
+                    "", "SFP2_MOD_ABS";
+            };
+        };
+    };
-- 
2.25.1
Re: [PATCH v3 02/10] dt-bindings: fsl,fpga-qixis-i2c: add support for LX2160ARDB FPGA
Posted by Conor Dooley 2 weeks ago
On Wed, Sep 17, 2025 at 12:04:14PM +0300, Ioana Ciornei wrote:
> Extend the list of supported compatible strings with fsl,lx2160ardb-fpga.
> 
> Since the register map exposed by the LX2160ARDB's FPGA also contains
> two GPIO controllers, accept the necessary GPIO pattern property.
> At the same time, add the #address-cells and #size-cells properties as
> valid ones so that the child nodes of the fsl,lx2160ardb-fpga node are
> addressable.
> 
> This is necessary because when defining child devices such as the GPIO
> controller described in the added example, the child device needs a the
> reg property to properly identify its register location in the parent
> I2C device address space.
> 
> Impose this restriction for the new compatible through an if-statement.
> 
> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> ---
> Changes in v2:
> - Enforce a unit address on the child gpios nodes (remove the ?)
> - Enforce the use of unit addresses by having #address-size and
>   #size-cells only for the newly added fsl,lx2160ardb-fpga compatible
> Changes in v3:
> - Replace the trivial-gpio reference with an explicit mention of the
>   accepted child gpio compatible.
> - Reword the commit message.
> - Add the 'else' case to the if statement.
> 
>  .../bindings/board/fsl,fpga-qixis-i2c.yaml    | 58 +++++++++++++++++++
>  1 file changed, 58 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml b/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
> index 28b37772fb65..e889dac052e7 100644
> --- a/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
> +++ b/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
> @@ -22,6 +22,13 @@ properties:
>                - fsl,lx2160aqds-fpga
>            - const: fsl,fpga-qixis-i2c
>            - const: simple-mfd
> +      - const: fsl,lx2160ardb-fpga

How come this is not compatible with fsl,fpga-qixis-i2c ? Seems like
that device has a feature subset of that one, given your changes here.

> +
> +  "#address-cells":
> +    const: 1
> +
> +  "#size-cells":
> +    const: 0
>  
>    interrupts:
>      maxItems: 1
> @@ -32,10 +39,37 @@ properties:
>    mux-controller:
>      $ref: /schemas/mux/reg-mux.yaml
>  
> +patternProperties:
> +  "^gpio@[0-9a-f]+$":
> +    type: object
> +    additionalProperties: true
> +
> +    properties:
> +      compatible:
> +        contains:
> +          enum:
> +            - fsl,lx2160ardb-fpga-gpio-sfp
> +
>  required:
>    - compatible
>    - reg
>  
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - fsl,lx2160ardb-fpga
> +    then:
> +      required:
> +        - "#address-cells"
> +        - "#size-cells"
> +    else:
> +      properties:
> +        "#address-cells": false
> +        "#size-cells": false
> +
>  additionalProperties: false
>  
>  examples:
> @@ -68,3 +102,27 @@ examples:
>          };
>      };
>  
> +  - |
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        board-control@66 {
> +            compatible = "fsl,lx2160ardb-fpga";
> +            reg = <0x66>;
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            gpio@19 {
> +                compatible = "fsl,lx2160ardb-fpga-gpio-sfp";
> +                reg = <0x19>;
> +                gpio-controller;
> +                #gpio-cells = <2>;
> +                gpio-line-names =
> +                    "SFP2_TX_EN", "",
> +                    "", "",
> +                    "SFP2_RX_LOS", "SFP2_TX_FAULT",
> +                    "", "SFP2_MOD_ABS";
> +            };
> +        };
> +    };
> -- 
> 2.25.1
> 
Re: [PATCH v3 02/10] dt-bindings: fsl,fpga-qixis-i2c: add support for LX2160ARDB FPGA
Posted by Ioana Ciornei 2 weeks ago
On Wed, Sep 17, 2025 at 08:19:42PM +0100, Conor Dooley wrote:
> On Wed, Sep 17, 2025 at 12:04:14PM +0300, Ioana Ciornei wrote:
> > Extend the list of supported compatible strings with fsl,lx2160ardb-fpga.
> > 
> > Since the register map exposed by the LX2160ARDB's FPGA also contains
> > two GPIO controllers, accept the necessary GPIO pattern property.
> > At the same time, add the #address-cells and #size-cells properties as
> > valid ones so that the child nodes of the fsl,lx2160ardb-fpga node are
> > addressable.
> > 
> > This is necessary because when defining child devices such as the GPIO
> > controller described in the added example, the child device needs a the
> > reg property to properly identify its register location in the parent
> > I2C device address space.
> > 
> > Impose this restriction for the new compatible through an if-statement.
> > 
> > Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> > ---
> > Changes in v2:
> > - Enforce a unit address on the child gpios nodes (remove the ?)
> > - Enforce the use of unit addresses by having #address-size and
> >   #size-cells only for the newly added fsl,lx2160ardb-fpga compatible
> > Changes in v3:
> > - Replace the trivial-gpio reference with an explicit mention of the
> >   accepted child gpio compatible.
> > - Reword the commit message.
> > - Add the 'else' case to the if statement.
> > 
> >  .../bindings/board/fsl,fpga-qixis-i2c.yaml    | 58 +++++++++++++++++++
> >  1 file changed, 58 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml b/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
> > index 28b37772fb65..e889dac052e7 100644
> > --- a/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
> > +++ b/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
> > @@ -22,6 +22,13 @@ properties:
> >                - fsl,lx2160aqds-fpga
> >            - const: fsl,fpga-qixis-i2c
> >            - const: simple-mfd
> > +      - const: fsl,lx2160ardb-fpga
> 
> How come this is not compatible with fsl,fpga-qixis-i2c ? Seems like
> that device has a feature subset of that one, given your changes here.

The feature set exposed by the devices is highly dependent on the board
type, meaning that even though the FPGA found on the LX2160AQDS board
(fsl,lx2160aqds-fpga) works in the same way in terms of access over I2C
as the one found on the LX2160ARDB (fsl,lx2160ardb-fpga added here), the
register map inside the device space its different since there are
different on-board devices to be controlled.

I didn't add the fsl,fpga-qixis-i2c as a fallback because there is no
driver probing it and it seemed to not make sense / be necessary.

Ioana
Re: [PATCH v3 02/10] dt-bindings: fsl,fpga-qixis-i2c: add support for LX2160ARDB FPGA
Posted by Conor Dooley 1 week, 6 days ago
On Thu, Sep 18, 2025 at 02:44:06PM +0300, Ioana Ciornei wrote:
> On Wed, Sep 17, 2025 at 08:19:42PM +0100, Conor Dooley wrote:
> > On Wed, Sep 17, 2025 at 12:04:14PM +0300, Ioana Ciornei wrote:
> > > Extend the list of supported compatible strings with fsl,lx2160ardb-fpga.
> > > 
> > > Since the register map exposed by the LX2160ARDB's FPGA also contains
> > > two GPIO controllers, accept the necessary GPIO pattern property.
> > > At the same time, add the #address-cells and #size-cells properties as
> > > valid ones so that the child nodes of the fsl,lx2160ardb-fpga node are
> > > addressable.
> > > 
> > > This is necessary because when defining child devices such as the GPIO
> > > controller described in the added example, the child device needs a the
> > > reg property to properly identify its register location in the parent
> > > I2C device address space.
> > > 
> > > Impose this restriction for the new compatible through an if-statement.
> > > 
> > > Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> > > ---
> > > Changes in v2:
> > > - Enforce a unit address on the child gpios nodes (remove the ?)
> > > - Enforce the use of unit addresses by having #address-size and
> > >   #size-cells only for the newly added fsl,lx2160ardb-fpga compatible
> > > Changes in v3:
> > > - Replace the trivial-gpio reference with an explicit mention of the
> > >   accepted child gpio compatible.
> > > - Reword the commit message.
> > > - Add the 'else' case to the if statement.
> > > 
> > >  .../bindings/board/fsl,fpga-qixis-i2c.yaml    | 58 +++++++++++++++++++
> > >  1 file changed, 58 insertions(+)
> > > 
> > > diff --git a/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml b/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
> > > index 28b37772fb65..e889dac052e7 100644
> > > --- a/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
> > > +++ b/Documentation/devicetree/bindings/board/fsl,fpga-qixis-i2c.yaml
> > > @@ -22,6 +22,13 @@ properties:
> > >                - fsl,lx2160aqds-fpga
> > >            - const: fsl,fpga-qixis-i2c
> > >            - const: simple-mfd
> > > +      - const: fsl,lx2160ardb-fpga
> > 
> > How come this is not compatible with fsl,fpga-qixis-i2c ? Seems like
> > that device has a feature subset of that one, given your changes here.
> 
> The feature set exposed by the devices is highly dependent on the board
> type, meaning that even though the FPGA found on the LX2160AQDS board
> (fsl,lx2160aqds-fpga) works in the same way in terms of access over I2C
> as the one found on the LX2160ARDB (fsl,lx2160ardb-fpga added here), the
> register map inside the device space its different since there are
> different on-board devices to be controlled.

Okay, please cover that in your commit message. With that,
Acked-by: Conor Dooley <conor.dooley@microchip.com>