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
+
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";
--
2.25.1
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
© 2016 - 2026 Red Hat, Inc.