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
-
- 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:
--
2.34.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
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ç
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
© 2016 - 2024 Red Hat, Inc.