diff mbox series

[v2,4/7] dt-bindings: net: dsa: mediatek,mt7530: define port binding per compatible

Message ID 20220813154415.349091-5-arinc.unal@arinc9.com (mailing list archive)
State New, archived
Headers show
Series completely rework mediatek,mt7530 binding | expand

Commit Message

Arınç ÜNAL Aug. 13, 2022, 3:44 p.m. UTC
Define DSA port binding under each compatible device as each device
requires different values for certain properties.

Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
---
 .../bindings/net/dsa/mediatek,mt7530.yaml     | 116 +++++++++++++-----
 1 file changed, 87 insertions(+), 29 deletions(-)

Comments

Krzysztof Kozlowski Aug. 19, 2022, 12:43 p.m. UTC | #1
On 13/08/2022 18:44, Arınç ÜNAL wrote:
> Define DSA port binding under each compatible device as each device
> requires different values for certain properties.
> 
> Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
> ---
>  .../bindings/net/dsa/mediatek,mt7530.yaml     | 116 +++++++++++++-----
>  1 file changed, 87 insertions(+), 29 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
> index cc87f48d4d07..ff51a2f6875f 100644
> --- a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
> +++ b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
> @@ -130,35 +130,6 @@ properties:
>        ethsys.
>      maxItems: 1
>  
> -patternProperties:
> -  "^(ethernet-)?ports$":
> -    type: object
> -
> -    patternProperties:
> -      "^(ethernet-)?port@[0-9]+$":
> -        type: object
> -        description: Ethernet switch ports
> -

my comments from v1 apply here

None of the reasons you said force you to define properties in some
allOf:if:then subblock. These force you to constrain the properties in
allOf:if:then, but not define.


> I can split patternProperties to two sections, but I can't directly
> define the reg property like you put above.

Of course you can and original bindings were doing it.

Let me ask specific questions (yes, no):
1. Are ethernet-ports and ethernet-port present in each variant?
2. Is dsa-port.yaml applicable to each variant? (looks like that - three
compatibles, three all:if:then)
3. If reg appearing in each variant?
4. If above is true, if reg is maximum one item in each variant?

Looking at your patch, I think answer is 4x yes, which means you can
define them in one place and constrain in allOf:if:then, just like all
other schemas, because this one is not different.

Best regards,
Krzysztof
Arınç ÜNAL Aug. 20, 2022, 7:34 a.m. UTC | #2
On 19.08.2022 15:43, Krzysztof Kozlowski wrote:
> On 13/08/2022 18:44, Arınç ÜNAL wrote:
>> Define DSA port binding under each compatible device as each device
>> requires different values for certain properties.
>>
>> Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
>> ---
>>   .../bindings/net/dsa/mediatek,mt7530.yaml     | 116 +++++++++++++-----
>>   1 file changed, 87 insertions(+), 29 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
>> index cc87f48d4d07..ff51a2f6875f 100644
>> --- a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
>> +++ b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
>> @@ -130,35 +130,6 @@ properties:
>>         ethsys.
>>       maxItems: 1
>>   
>> -patternProperties:
>> -  "^(ethernet-)?ports$":
>> -    type: object
>> -
>> -    patternProperties:
>> -      "^(ethernet-)?port@[0-9]+$":
>> -        type: object
>> -        description: Ethernet switch ports
>> -
> 
> my comments from v1 apply here
> 
> None of the reasons you said force you to define properties in some
> allOf:if:then subblock. These force you to constrain the properties in
> allOf:if:then, but not define.
> 
> 
>> I can split patternProperties to two sections, but I can't directly
>> define the reg property like you put above.
> 
> Of course you can and original bindings were doing it.
> 
> Let me ask specific questions (yes, no):
> 1. Are ethernet-ports and ethernet-port present in each variant?
> 2. Is dsa-port.yaml applicable to each variant? (looks like that - three
> compatibles, three all:if:then)
> 3. If reg appearing in each variant?
> 4. If above is true, if reg is maximum one item in each variant?

All yes.

> 
> Looking at your patch, I think answer is 4x yes, which means you can
> define them in one place and constrain in allOf:if:then, just like all
> other schemas, because this one is not different.

If I understand correctly, I do this already with v3. Properties are 
defined under the constructed node. Accepted values for properties are 
constrained under if:then.

Arınç
Krzysztof Kozlowski Aug. 23, 2022, 10:48 a.m. UTC | #3
On 20/08/2022 10:34, Arınç ÜNAL wrote:
> On 19.08.2022 15:43, Krzysztof Kozlowski wrote:
>> On 13/08/2022 18:44, Arınç ÜNAL wrote:
>>> Define DSA port binding under each compatible device as each device
>>> requires different values for certain properties.
>>>
>>> Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
>>> ---
>>>   .../bindings/net/dsa/mediatek,mt7530.yaml     | 116 +++++++++++++-----
>>>   1 file changed, 87 insertions(+), 29 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
>>> index cc87f48d4d07..ff51a2f6875f 100644
>>> --- a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
>>> +++ b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
>>> @@ -130,35 +130,6 @@ properties:
>>>         ethsys.
>>>       maxItems: 1
>>>   
>>> -patternProperties:
>>> -  "^(ethernet-)?ports$":
>>> -    type: object
>>> -
>>> -    patternProperties:
>>> -      "^(ethernet-)?port@[0-9]+$":
>>> -        type: object
>>> -        description: Ethernet switch ports
>>> -
>>
>> my comments from v1 apply here
>>
>> None of the reasons you said force you to define properties in some
>> allOf:if:then subblock. These force you to constrain the properties in
>> allOf:if:then, but not define.
>>
>>
>>> I can split patternProperties to two sections, but I can't directly
>>> define the reg property like you put above.
>>
>> Of course you can and original bindings were doing it.
>>
>> Let me ask specific questions (yes, no):
>> 1. Are ethernet-ports and ethernet-port present in each variant?
>> 2. Is dsa-port.yaml applicable to each variant? (looks like that - three
>> compatibles, three all:if:then)
>> 3. If reg appearing in each variant?
>> 4. If above is true, if reg is maximum one item in each variant?
> 
> All yes.
> 
>>
>> Looking at your patch, I think answer is 4x yes, which means you can
>> define them in one place and constrain in allOf:if:then, just like all
>> other schemas, because this one is not different.
> 
> If I understand correctly, I do this already with v3. Properties are 
> defined under the constructed node. Accepted values for properties are 
> constrained under if:then.

v4 doesn't do it. You removed there patternProperties - again.


Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
index cc87f48d4d07..ff51a2f6875f 100644
--- a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
+++ b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml
@@ -130,35 +130,6 @@  properties:
       ethsys.
     maxItems: 1
 
-patternProperties:
-  "^(ethernet-)?ports$":
-    type: object
-
-    patternProperties:
-      "^(ethernet-)?port@[0-9]+$":
-        type: object
-        description: Ethernet switch ports
-
-        unevaluatedProperties: false
-
-        properties:
-          reg:
-            description:
-              Port address described must be 5 or 6 for CPU port and from 0
-              to 5 for user ports.
-
-        allOf:
-          - $ref: dsa-port.yaml#
-          - if:
-              properties:
-                label:
-                  items:
-                    - const: cpu
-            then:
-              required:
-                - reg
-                - phy-mode
-
 required:
   - compatible
   - reg
@@ -189,6 +160,35 @@  allOf:
         - core-supply
         - io-supply
 
+      patternProperties:
+        "^(ethernet-)?ports$":
+          type: object
+
+          patternProperties:
+            "^(ethernet-)?port@[0-9]+$":
+              type: object
+              description: Ethernet switch ports
+
+              unevaluatedProperties: false
+
+              properties:
+                reg:
+                  description:
+                    Port address described must be 5 or 6 for CPU port and from
+                    0 to 5 for user ports.
+
+              allOf:
+                - $ref: dsa-port.yaml#
+                - if:
+                    properties:
+                      label:
+                        items:
+                          - const: cpu
+                  then:
+                    required:
+                      - reg
+                      - phy-mode
+
   - if:
       properties:
         compatible:
@@ -198,6 +198,35 @@  allOf:
       properties:
         mediatek,mcm: false
 
+      patternProperties:
+        "^(ethernet-)?ports$":
+          type: object
+
+          patternProperties:
+            "^(ethernet-)?port@[0-9]+$":
+              type: object
+              description: Ethernet switch ports
+
+              unevaluatedProperties: false
+
+              properties:
+                reg:
+                  description:
+                    Port address described must be 5 or 6 for CPU port and from
+                    0 to 5 for user ports.
+
+              allOf:
+                - $ref: dsa-port.yaml#
+                - if:
+                    properties:
+                      label:
+                        items:
+                          - const: cpu
+                  then:
+                    required:
+                      - reg
+                      - phy-mode
+
   - if:
       properties:
         compatible:
@@ -207,6 +236,35 @@  allOf:
       required:
         - mediatek,mcm
 
+      patternProperties:
+        "^(ethernet-)?ports$":
+          type: object
+
+          patternProperties:
+            "^(ethernet-)?port@[0-9]+$":
+              type: object
+              description: Ethernet switch ports
+
+              unevaluatedProperties: false
+
+              properties:
+                reg:
+                  description:
+                    Port address described must be 5 or 6 for CPU port and from
+                    0 to 5 for user ports.
+
+              allOf:
+                - $ref: dsa-port.yaml#
+                - if:
+                    properties:
+                      label:
+                        items:
+                          - const: cpu
+                  then:
+                    required:
+                      - reg
+                      - phy-mode
+
 unevaluatedProperties: false
 
 examples: