Message ID | 20240604143502.154463-2-christophe.roullier@foss.st.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Series to deliver Ethernet for STM32MP13 | expand |
On 04/06/2024 16:34, Christophe Roullier wrote: > New STM32 SOC have 2 GMACs instances. > GMAC IP version is SNPS 4.20. > > Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com> > --- > .../devicetree/bindings/net/stm32-dwmac.yaml | 41 +++++++++++++++---- > 1 file changed, 34 insertions(+), 7 deletions(-) > > diff --git a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml > index 7ccf75676b6d5..ecbed9a7aaf6d 100644 > --- a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml > +++ b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml > @@ -22,18 +22,17 @@ select: > enum: > - st,stm32-dwmac > - st,stm32mp1-dwmac > + - st,stm32mp13-dwmac > required: > - compatible > > -allOf: > - - $ref: snps,dwmac.yaml# > - > properties: > compatible: > oneOf: > - items: > - enum: > - st,stm32mp1-dwmac > + - st,stm32mp13-dwmac > - const: snps,dwmac-4.20a > - items: > - enum: > @@ -75,12 +74,15 @@ properties: > st,syscon: > $ref: /schemas/types.yaml#/definitions/phandle-array > items: > - - items: > + - minItems: 2 > + items: > - description: phandle to the syscon node which encompases the glue register > - description: offset of the control register > + - description: field to set mask in register > description: > Should be phandle/offset pair. The phandle to the syscon node which > - encompases the glue register, and the offset of the control register > + encompases the glue register, the offset of the control register and > + the mask to set bitfield in control register > > st,ext-phyclk: > description: > @@ -112,12 +114,37 @@ required: > > unevaluatedProperties: false > > +allOf: > + - $ref: snps,dwmac.yaml# > + - if: > + properties: > + compatible: > + contains: > + enum: > + - st,stm32mp1-dwmac > + - st,stm32-dwmac > + then: > + properties: > + st,syscon: > + items: > + maxItems: 2 > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - st,stm32mp13-dwmac > + then: > + properties: > + st,syscon: > + items: > + minItems: 3 I don't think this works. You now constrain the first dimension which had only one item before. Make your example complete and test it. Best regards, Krzysztof
On 6/5/24 10:14, Krzysztof Kozlowski wrote: > On 04/06/2024 16:34, Christophe Roullier wrote: >> New STM32 SOC have 2 GMACs instances. >> GMAC IP version is SNPS 4.20. >> >> Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com> >> --- >> .../devicetree/bindings/net/stm32-dwmac.yaml | 41 +++++++++++++++---- >> 1 file changed, 34 insertions(+), 7 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml >> index 7ccf75676b6d5..ecbed9a7aaf6d 100644 >> --- a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml >> +++ b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml >> @@ -22,18 +22,17 @@ select: >> enum: >> - st,stm32-dwmac >> - st,stm32mp1-dwmac >> + - st,stm32mp13-dwmac >> required: >> - compatible >> >> -allOf: >> - - $ref: snps,dwmac.yaml# >> - >> properties: >> compatible: >> oneOf: >> - items: >> - enum: >> - st,stm32mp1-dwmac >> + - st,stm32mp13-dwmac >> - const: snps,dwmac-4.20a >> - items: >> - enum: >> @@ -75,12 +74,15 @@ properties: >> st,syscon: >> $ref: /schemas/types.yaml#/definitions/phandle-array >> items: >> - - items: >> + - minItems: 2 >> + items: >> - description: phandle to the syscon node which encompases the glue register >> - description: offset of the control register >> + - description: field to set mask in register >> description: >> Should be phandle/offset pair. The phandle to the syscon node which >> - encompases the glue register, and the offset of the control register >> + encompases the glue register, the offset of the control register and >> + the mask to set bitfield in control register >> >> st,ext-phyclk: >> description: >> @@ -112,12 +114,37 @@ required: >> >> unevaluatedProperties: false >> >> +allOf: >> + - $ref: snps,dwmac.yaml# >> + - if: >> + properties: >> + compatible: >> + contains: >> + enum: >> + - st,stm32mp1-dwmac >> + - st,stm32-dwmac >> + then: >> + properties: >> + st,syscon: >> + items: >> + maxItems: 2 >> + >> + - if: >> + properties: >> + compatible: >> + contains: >> + enum: >> + - st,stm32mp13-dwmac >> + then: >> + properties: >> + st,syscon: >> + items: >> + minItems: 3 > I don't think this works. You now constrain the first dimension which > had only one item before. > > Make your example complete and test it. > > Best regards, > Krzysztof Hi Krzysztof, "Official" bindings for MP15: st,syscon = <&syscfg 0x4>; "Official" bindings for MP13: st,syscon = <&syscfg 0x4 0xff0000>; or st,syscon = <&syscfg 0x4 0xff000000>; If I execute make dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/net/stm32-dwmac.yaml with: For MP15: st,syscon = <&syscfg>; =>bindings/net/stm32-dwmac.example.dtb: ethernet@40027000: st,syscon:0: [4294967295] is too short For MP15: st,syscon = <&syscfg 0x4 0xff0000>; =>devicetree/bindings/net/stm32-dwmac.example.dtb: ethernet@40027000: st,syscon:0: [4294967295, 4, 16711680] is too long For MP13: st,syscon = <&syscfg 0x4>; => devicetree/bindings/net/stm32-dwmac.example.dtb: ethernet@5800a000: st,syscon:0: [4294967295, 4] is too short For MP13: st,syscon = <&syscfg 0x4 0xff0000 0xff>; => devicetree/bindings/net/stm32-dwmac.example.dtb: ethernet@5800a000: st,syscon:0: [4294967295, 4, 16711680, 255] is too long So it is seems good :-) >
On 05/06/2024 11:55, Christophe ROULLIER wrote: > > On 6/5/24 10:14, Krzysztof Kozlowski wrote: >> On 04/06/2024 16:34, Christophe Roullier wrote: >>> New STM32 SOC have 2 GMACs instances. >>> GMAC IP version is SNPS 4.20. >>> >>> Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com> >>> --- >>> .../devicetree/bindings/net/stm32-dwmac.yaml | 41 +++++++++++++++---- >>> 1 file changed, 34 insertions(+), 7 deletions(-) >>> >>> diff --git a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml >>> index 7ccf75676b6d5..ecbed9a7aaf6d 100644 >>> --- a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml >>> +++ b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml >>> @@ -22,18 +22,17 @@ select: >>> enum: >>> - st,stm32-dwmac >>> - st,stm32mp1-dwmac >>> + - st,stm32mp13-dwmac >>> required: >>> - compatible >>> >>> -allOf: >>> - - $ref: snps,dwmac.yaml# >>> - >>> properties: >>> compatible: >>> oneOf: >>> - items: >>> - enum: >>> - st,stm32mp1-dwmac >>> + - st,stm32mp13-dwmac >>> - const: snps,dwmac-4.20a >>> - items: >>> - enum: >>> @@ -75,12 +74,15 @@ properties: >>> st,syscon: >>> $ref: /schemas/types.yaml#/definitions/phandle-array >>> items: >>> - - items: >>> + - minItems: 2 >>> + items: >>> - description: phandle to the syscon node which encompases the glue register >>> - description: offset of the control register >>> + - description: field to set mask in register >>> description: >>> Should be phandle/offset pair. The phandle to the syscon node which >>> - encompases the glue register, and the offset of the control register >>> + encompases the glue register, the offset of the control register and >>> + the mask to set bitfield in control register >>> >>> st,ext-phyclk: >>> description: >>> @@ -112,12 +114,37 @@ required: >>> >>> unevaluatedProperties: false >>> >>> +allOf: >>> + - $ref: snps,dwmac.yaml# >>> + - if: >>> + properties: >>> + compatible: >>> + contains: >>> + enum: >>> + - st,stm32mp1-dwmac >>> + - st,stm32-dwmac >>> + then: >>> + properties: >>> + st,syscon: >>> + items: >>> + maxItems: 2 >>> + >>> + - if: >>> + properties: >>> + compatible: >>> + contains: >>> + enum: >>> + - st,stm32mp13-dwmac >>> + then: >>> + properties: >>> + st,syscon: >>> + items: >>> + minItems: 3 >> I don't think this works. You now constrain the first dimension which >> had only one item before. >> >> Make your example complete and test it. >> >> Best regards, >> Krzysztof > > Hi Krzysztof, > > "Official" bindings for MP15: st,syscon = <&syscfg 0x4>; > "Official" bindings for MP13: st,syscon = <&syscfg 0x4 0xff0000>; or > st,syscon = <&syscfg 0x4 0xff000000>; > > If I execute make dt_binding_check > DT_SCHEMA_FILES=Documentation/devicetree/bindings/net/stm32-dwmac.yaml with: > > For MP15: st,syscon = <&syscfg>; > =>bindings/net/stm32-dwmac.example.dtb: ethernet@40027000: st,syscon:0: > [4294967295] is too short > > For MP15: st,syscon = <&syscfg 0x4 0xff0000>; > =>devicetree/bindings/net/stm32-dwmac.example.dtb: ethernet@40027000: > st,syscon:0: [4294967295, 4, 16711680] is too long > > For MP13: st,syscon = <&syscfg 0x4>; => > devicetree/bindings/net/stm32-dwmac.example.dtb: ethernet@5800a000: > st,syscon:0: [4294967295, 4] is too short > > For MP13: st,syscon = <&syscfg 0x4 0xff0000 0xff>; => > devicetree/bindings/net/stm32-dwmac.example.dtb: ethernet@5800a000: > st,syscon:0: [4294967295, 4, 16711680, 255] is too long > > So it is seems good :-) Code is still incorrect, although will work because of how schema parses matrix. But even by looking it is not symmetrical between allOf:if:then and properties:. Make it symmetric - apply the number of items on the second dimension. Best regards, Krzysztof
On Wed, Jun 05, 2024 at 01:46:33PM +0200, Krzysztof Kozlowski wrote: > On 05/06/2024 11:55, Christophe ROULLIER wrote: > > > > On 6/5/24 10:14, Krzysztof Kozlowski wrote: > >> On 04/06/2024 16:34, Christophe Roullier wrote: > >>> New STM32 SOC have 2 GMACs instances. > >>> GMAC IP version is SNPS 4.20. > >>> > >>> Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com> > >>> --- > >>> .../devicetree/bindings/net/stm32-dwmac.yaml | 41 +++++++++++++++---- > >>> 1 file changed, 34 insertions(+), 7 deletions(-) > >>> > >>> diff --git a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml > >>> index 7ccf75676b6d5..ecbed9a7aaf6d 100644 > >>> --- a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml > >>> +++ b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml > >>> @@ -22,18 +22,17 @@ select: > >>> enum: > >>> - st,stm32-dwmac > >>> - st,stm32mp1-dwmac > >>> + - st,stm32mp13-dwmac > >>> required: > >>> - compatible > >>> > >>> -allOf: > >>> - - $ref: snps,dwmac.yaml# > >>> - > >>> properties: > >>> compatible: > >>> oneOf: > >>> - items: > >>> - enum: > >>> - st,stm32mp1-dwmac > >>> + - st,stm32mp13-dwmac > >>> - const: snps,dwmac-4.20a > >>> - items: > >>> - enum: > >>> @@ -75,12 +74,15 @@ properties: > >>> st,syscon: > >>> $ref: /schemas/types.yaml#/definitions/phandle-array > >>> items: > >>> - - items: > >>> + - minItems: 2 > >>> + items: > >>> - description: phandle to the syscon node which encompases the glue register > >>> - description: offset of the control register > >>> + - description: field to set mask in register > >>> description: > >>> Should be phandle/offset pair. The phandle to the syscon node which > >>> - encompases the glue register, and the offset of the control register > >>> + encompases the glue register, the offset of the control register and > >>> + the mask to set bitfield in control register > >>> > >>> st,ext-phyclk: > >>> description: > >>> @@ -112,12 +114,37 @@ required: > >>> > >>> unevaluatedProperties: false > >>> > >>> +allOf: > >>> + - $ref: snps,dwmac.yaml# > >>> + - if: > >>> + properties: > >>> + compatible: > >>> + contains: > >>> + enum: > >>> + - st,stm32mp1-dwmac > >>> + - st,stm32-dwmac > >>> + then: > >>> + properties: > >>> + st,syscon: > >>> + items: > >>> + maxItems: 2 > >>> + > >>> + - if: > >>> + properties: > >>> + compatible: > >>> + contains: > >>> + enum: > >>> + - st,stm32mp13-dwmac > >>> + then: > >>> + properties: > >>> + st,syscon: > >>> + items: > >>> + minItems: 3 > >> I don't think this works. You now constrain the first dimension which > >> had only one item before. > >> > >> Make your example complete and test it. > >> > >> Best regards, > >> Krzysztof > > > > Hi Krzysztof, > > > > "Official" bindings for MP15: st,syscon = <&syscfg 0x4>; > > "Official" bindings for MP13: st,syscon = <&syscfg 0x4 0xff0000>; or > > st,syscon = <&syscfg 0x4 0xff000000>; > > > > If I execute make dt_binding_check > > DT_SCHEMA_FILES=Documentation/devicetree/bindings/net/stm32-dwmac.yaml with: > > > > For MP15: st,syscon = <&syscfg>; > > =>bindings/net/stm32-dwmac.example.dtb: ethernet@40027000: st,syscon:0: > > [4294967295] is too short > > > > For MP15: st,syscon = <&syscfg 0x4 0xff0000>; > > =>devicetree/bindings/net/stm32-dwmac.example.dtb: ethernet@40027000: > > st,syscon:0: [4294967295, 4, 16711680] is too long > > > > For MP13: st,syscon = <&syscfg 0x4>; => > > devicetree/bindings/net/stm32-dwmac.example.dtb: ethernet@5800a000: > > st,syscon:0: [4294967295, 4] is too short > > > > For MP13: st,syscon = <&syscfg 0x4 0xff0000 0xff>; => > > devicetree/bindings/net/stm32-dwmac.example.dtb: ethernet@5800a000: > > st,syscon:0: [4294967295, 4, 16711680, 255] is too long > > > > So it is seems good :-) > > Code is still incorrect, although will work because of how schema parses > matrix. But even by looking it is not symmetrical between allOf:if:then > and properties:. Make it symmetric - apply the number of items on the > second dimension. It looks correct to me. But it could also be like this: st,syscon: items: - minItems: 3 Either way works. Is that what you are asking for? I'm just happy when folks can write a working schema. Rob
diff --git a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml index 7ccf75676b6d5..ecbed9a7aaf6d 100644 --- a/Documentation/devicetree/bindings/net/stm32-dwmac.yaml +++ b/Documentation/devicetree/bindings/net/stm32-dwmac.yaml @@ -22,18 +22,17 @@ select: enum: - st,stm32-dwmac - st,stm32mp1-dwmac + - st,stm32mp13-dwmac required: - compatible -allOf: - - $ref: snps,dwmac.yaml# - properties: compatible: oneOf: - items: - enum: - st,stm32mp1-dwmac + - st,stm32mp13-dwmac - const: snps,dwmac-4.20a - items: - enum: @@ -75,12 +74,15 @@ properties: st,syscon: $ref: /schemas/types.yaml#/definitions/phandle-array items: - - items: + - minItems: 2 + items: - description: phandle to the syscon node which encompases the glue register - description: offset of the control register + - description: field to set mask in register description: Should be phandle/offset pair. The phandle to the syscon node which - encompases the glue register, and the offset of the control register + encompases the glue register, the offset of the control register and + the mask to set bitfield in control register st,ext-phyclk: description: @@ -112,12 +114,37 @@ required: unevaluatedProperties: false +allOf: + - $ref: snps,dwmac.yaml# + - if: + properties: + compatible: + contains: + enum: + - st,stm32mp1-dwmac + - st,stm32-dwmac + then: + properties: + st,syscon: + items: + maxItems: 2 + + - if: + properties: + compatible: + contains: + enum: + - st,stm32mp13-dwmac + then: + properties: + st,syscon: + items: + minItems: 3 + examples: - | #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/clock/stm32mp1-clks.h> - #include <dt-bindings/reset/stm32mp1-resets.h> - #include <dt-bindings/mfd/stm32h7-rcc.h> //Example 1 ethernet0: ethernet@5800a000 { compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a";
New STM32 SOC have 2 GMACs instances. GMAC IP version is SNPS 4.20. Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com> --- .../devicetree/bindings/net/stm32-dwmac.yaml | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-)