diff mbox series

[v4,01/11] dt-bindings: net: add STM32MP13 compatible in documentation for stm32

Message ID 20240604143502.154463-2-christophe.roullier@foss.st.com (mailing list archive)
State New, archived
Headers show
Series Series to deliver Ethernet for STM32MP13 | expand

Commit Message

Christophe Roullier June 4, 2024, 2:34 p.m. UTC
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(-)

Comments

Krzysztof Kozlowski June 5, 2024, 8:14 a.m. UTC | #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
Christophe Roullier June 5, 2024, 9:55 a.m. UTC | #2
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 :-)

>
Krzysztof Kozlowski June 5, 2024, 11:46 a.m. UTC | #3
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
Rob Herring (Arm) June 6, 2024, 12:21 a.m. UTC | #4
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 mbox series

Patch

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";