Phylink bindings are required for ethernet controllers that utilise phylink_fwnode_phy_connect() directly or through phylink_of_phy_connect(), and register OF-based only MDIO buses, if they register any. All the drivers that utilise phylink_fwnode_phy_connect() directly or through phylink_of_phy_connect(): - DSA - drivers/net/ethernet/mscc/ocelot_net.c - mscc,vsc7514-switch.yaml - drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c - microchip,sparx5-switch.yaml - drivers/net/ethernet/altera/altera_tse_main.c - altr,tse.yaml - drivers/net/ethernet/xilinx/xilinx_axienet_main.c - xlnx,axi-ethernet.yaml - drivers/net/ethernet/mediatek/mtk_eth_soc.c - mediatek,net.yaml - drivers/net/ethernet/ti/am65-cpsw-nuss.c - ti,k3-am654-cpsw-nuss.yaml - drivers/net/ethernet/atheros/ag71xx.c - qca,ar71xx.yaml - drivers/net/ethernet/freescale/dpaa/dpaa_eth.c - fsl,fman-dtsec.yaml - drivers/net/ethernet/microchip/lan966x/lan966x_main.c - microchip,lan966x-switch.yaml - drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c - marvell,pp2.yaml - drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c - fsl,qoriq-mc-dpmac.yaml - drivers/net/ethernet/cadence/macb_main.c - cdns,macb.yaml - Can register non-OF-based bus. - drivers/net/ethernet/stmicro/stmmac/stmmac_main.c - snps,dwmac.yaml - Can register non-OF-based bus. - drivers/net/ethernet/marvell/mvneta.c - marvell-armada-370-neta.txt - drivers/net/ethernet/freescale/enetc/enetc.c - fsl-enetc.txt RFC: The drivers marked with "can register non-OF-based bus" seem to search the MDIO bus to connect the PHY to the MAC using phylink_connect_phy() and/or phy_find_first() if phylink bindings don't exist. Should we enforce phylink bindings on their schemas regardless? DSA, like any other driver utilising the Linux MDIO infrastructure, can register a bus. On certain conditions, it registers the MDIO bus of the switch it controls non-OF-based. We can know when DSA won't create any non-OF-based buses. That leaves us with only OF-based buses in which case we can enforce phylink bindings for user ports. The bindings are already enforced for shared ports so we can enforce the bindings for all ports on the switch schemas which will achieve the same result with fewer lines. By looking at whether the mdio child node exists and what is explained on it, we can enforce phylink bindings. - mscc,vsc7514-switch.yaml - Enforce phylink bindings for all ports. - arrow,xrs700x.yaml - Enforce phylink bindings for all ports. - brcm,b53.yaml - Enforce phylink bindings for all ports if "mdio" is defined. - brcm,sf2.yaml - Enforce phylink bindings for all ports. - hirschmann,hellcreek.yaml - Enforce phylink bindings for all ports. - mediatek,mt7530.yaml - Enforce phylink bindings for all ports if "mdio" is defined. - microchip,ksz.yaml - Enforce phylink bindings for all ports if "mdio" is defined. - microchip,lan937x.yaml - Enforce phylink bindings for all ports if "mdio" is defined. - mscc,ocelot.yaml - Enforce phylink bindings for all ports. - nxp,sja1105.yaml - Enforce phylink bindings for all ports. - qca8k.yaml - Enforce phylink bindings for all ports if "mdio" is defined. - realtek.yaml - Enforce phylink bindings for all ports if "mdio" is defined. - renesas,rzn1-a5psw.yaml - Enforce phylink bindings for all ports. - ar9331.txt - Enforce phylink bindings for all ports. - lan9303.txt - Enforce phylink bindings for all ports if "mdio" is defined. - lantiq-gswip.txt - Enforce phylink bindings for all ports. - marvell.txt - Enforce phylink bindings for all ports if "mdio" is defined. - vitesse,vsc73xx.txt - Enforce phylink bindings for all ports if "mdio" is defined. I will convert the non json-schema documents accordingly. Signed-off-by: Arınç ÜNAL <arinc.unal@xxxxxxxxxx> --- .../devicetree/bindings/net/altr,tse.yaml | 1 + .../devicetree/bindings/net/cdns,macb.yaml | 1 + .../bindings/net/dsa/arrow,xrs700x.yaml | 6 ++ .../devicetree/bindings/net/dsa/brcm,b53.yaml | 9 +++ .../devicetree/bindings/net/dsa/brcm,sf2.yaml | 6 +- .../net/dsa/hirschmann,hellcreek.yaml | 6 ++ .../bindings/net/dsa/mediatek,mt7530.yaml | 9 +++ .../bindings/net/dsa/microchip,ksz.yaml | 9 +++ .../bindings/net/dsa/microchip,lan937x.yaml | 9 +++ .../bindings/net/dsa/mscc,ocelot.yaml | 6 ++ .../bindings/net/dsa/nxp,sja1105.yaml | 1 + .../devicetree/bindings/net/dsa/qca8k.yaml | 9 +++ .../devicetree/bindings/net/dsa/realtek.yaml | 57 +++++++++++-------- .../bindings/net/dsa/renesas,rzn1-a5psw.yaml | 2 +- .../bindings/net/fsl,fman-dtsec.yaml | 1 + .../bindings/net/fsl,qoriq-mc-dpmac.yaml | 1 + .../devicetree/bindings/net/marvell,pp2.yaml | 4 +- .../devicetree/bindings/net/mediatek,net.yaml | 1 + .../net/microchip,lan966x-switch.yaml | 4 +- .../bindings/net/microchip,sparx5-switch.yaml | 5 +- .../bindings/net/mscc,vsc7514-switch.yaml | 5 ++ .../devicetree/bindings/net/qca,ar71xx.yaml | 1 + .../devicetree/bindings/net/snps,dwmac.yaml | 1 + .../bindings/net/ti,k3-am654-cpsw-nuss.yaml | 4 +- .../bindings/net/xlnx,axi-ethernet.yaml | 3 +- 25 files changed, 130 insertions(+), 31 deletions(-) diff --git a/Documentation/devicetree/bindings/net/altr,tse.yaml b/Documentation/devicetree/bindings/net/altr,tse.yaml index f5d3b70af07a..24e0f1213109 100644 --- a/Documentation/devicetree/bindings/net/altr,tse.yaml +++ b/Documentation/devicetree/bindings/net/altr,tse.yaml @@ -67,6 +67,7 @@ required: allOf: - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink - if: properties: compatible: diff --git a/Documentation/devicetree/bindings/net/cdns,macb.yaml b/Documentation/devicetree/bindings/net/cdns,macb.yaml index bf8894a0257e..a455de04c5f1 100644 --- a/Documentation/devicetree/bindings/net/cdns,macb.yaml +++ b/Documentation/devicetree/bindings/net/cdns,macb.yaml @@ -156,6 +156,7 @@ required: allOf: - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink - if: not: diff --git a/Documentation/devicetree/bindings/net/dsa/arrow,xrs700x.yaml b/Documentation/devicetree/bindings/net/dsa/arrow,xrs700x.yaml index 9565a7402146..7829fc9e202d 100644 --- a/Documentation/devicetree/bindings/net/dsa/arrow,xrs700x.yaml +++ b/Documentation/devicetree/bindings/net/dsa/arrow,xrs700x.yaml @@ -29,6 +29,12 @@ properties: reg: maxItems: 1 +patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-9]+$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink + required: - compatible - reg diff --git a/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml b/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml index 0bb2ff0cf2d0..ed5b3eab1948 100644 --- a/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml +++ b/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml @@ -142,6 +142,15 @@ allOf: reg: maxItems: 1 + - if: + required: [ mdio ] + then: + patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-9]+$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink + unevaluatedProperties: false examples: diff --git a/Documentation/devicetree/bindings/net/dsa/brcm,sf2.yaml b/Documentation/devicetree/bindings/net/dsa/brcm,sf2.yaml index c745407f2f68..6cffcd35a943 100644 --- a/Documentation/devicetree/bindings/net/dsa/brcm,sf2.yaml +++ b/Documentation/devicetree/bindings/net/dsa/brcm,sf2.yaml @@ -81,7 +81,10 @@ properties: patternProperties: '^port@[0-9a-f]$': - $ref: dsa-port.yaml# + type: object + allOf: + - $ref: dsa-port.yaml# + - $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink unevaluatedProperties: false properties: @@ -161,6 +164,7 @@ examples: port@0 { label = "gphy"; reg = <0>; + phy-handle = <&phy8>; }; }; }; diff --git a/Documentation/devicetree/bindings/net/dsa/hirschmann,hellcreek.yaml b/Documentation/devicetree/bindings/net/dsa/hirschmann,hellcreek.yaml index 4021b054f684..30b4c7b1fd08 100644 --- a/Documentation/devicetree/bindings/net/dsa/hirschmann,hellcreek.yaml +++ b/Documentation/devicetree/bindings/net/dsa/hirschmann,hellcreek.yaml @@ -67,6 +67,12 @@ properties: additionalProperties: false +patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-9]+$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink + required: - compatible - reg diff --git a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml index 31a7dbbf704d..a8e1134707e4 100644 --- a/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml +++ b/Documentation/devicetree/bindings/net/dsa/mediatek,mt7530.yaml @@ -297,6 +297,15 @@ allOf: mediatek,mcm: false reset-names: false + - if: + required: [ mdio ] + then: + patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-9]+$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink + unevaluatedProperties: false examples: diff --git a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml index 20e4174fe1ab..d8f12234eec6 100644 --- a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml +++ b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml @@ -60,6 +60,15 @@ required: - compatible - reg +if: + required: [ mdio ] +then: + patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-9]+$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink + unevaluatedProperties: false examples: diff --git a/Documentation/devicetree/bindings/net/dsa/microchip,lan937x.yaml b/Documentation/devicetree/bindings/net/dsa/microchip,lan937x.yaml index 33a4926b2d94..44a892b93eca 100644 --- a/Documentation/devicetree/bindings/net/dsa/microchip,lan937x.yaml +++ b/Documentation/devicetree/bindings/net/dsa/microchip,lan937x.yaml @@ -65,6 +65,15 @@ required: - compatible - reg +if: + required: [ mdio ] +then: + patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-9]+$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink + unevaluatedProperties: false examples: diff --git a/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml b/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml index fe02d05196e4..80cc9c49282b 100644 --- a/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml +++ b/Documentation/devicetree/bindings/net/dsa/mscc,ocelot.yaml @@ -73,6 +73,12 @@ properties: little-endian: true big-endian: true +patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-9]+$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink + required: - compatible - reg diff --git a/Documentation/devicetree/bindings/net/dsa/nxp,sja1105.yaml b/Documentation/devicetree/bindings/net/dsa/nxp,sja1105.yaml index 6838dc165d06..1d5c4a81caf6 100644 --- a/Documentation/devicetree/bindings/net/dsa/nxp,sja1105.yaml +++ b/Documentation/devicetree/bindings/net/dsa/nxp,sja1105.yaml @@ -79,6 +79,7 @@ patternProperties: "^(ethernet-)?ports$": patternProperties: "^(ethernet-)?port@[0-9]+$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink allOf: - if: properties: diff --git a/Documentation/devicetree/bindings/net/dsa/qca8k.yaml b/Documentation/devicetree/bindings/net/dsa/qca8k.yaml index c472050582be..546939ab2053 100644 --- a/Documentation/devicetree/bindings/net/dsa/qca8k.yaml +++ b/Documentation/devicetree/bindings/net/dsa/qca8k.yaml @@ -114,6 +114,15 @@ required: - compatible - reg +if: + required: [ mdio ] +then: + patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-6]$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink + unevaluatedProperties: false examples: diff --git a/Documentation/devicetree/bindings/net/dsa/realtek.yaml b/Documentation/devicetree/bindings/net/dsa/realtek.yaml index 62ebaa4b5ae3..ec0428b74157 100644 --- a/Documentation/devicetree/bindings/net/dsa/realtek.yaml +++ b/Documentation/devicetree/bindings/net/dsa/realtek.yaml @@ -6,8 +6,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml# title: Realtek switches for unmanaged switches -allOf: - - $ref: dsa.yaml#/$defs/ethernet-ports +$ref: dsa.yaml#/$defs/ethernet-ports maintainers: - Linus Walleij <linus.walleij@xxxxxxxxxx> @@ -107,33 +106,43 @@ properties: compatible: const: realtek,smi-mdio -if: - required: - - reg +allOf: + - if: + required: + - reg -then: - $ref: /schemas/spi/spi-peripheral-props.yaml# - properties: - mdc-gpios: false - mdio-gpios: false - mdio: + then: + $ref: /schemas/spi/spi-peripheral-props.yaml# properties: - compatible: false + mdc-gpios: false + mdio-gpios: false + mdio: + properties: + compatible: false -else: - properties: - mdio: - required: - - compatible + else: + properties: + mdio: + required: + - compatible - required: - - mdc-gpios - - mdio-gpios - - mdio - - reset-gpios + required: + - mdc-gpios + - mdio-gpios + - mdio + - reset-gpios -required: - - compatible + required: + - compatible + + - if: + required: [ mdio ] + then: + patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-9]+$": + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink unevaluatedProperties: false diff --git a/Documentation/devicetree/bindings/net/dsa/renesas,rzn1-a5psw.yaml b/Documentation/devicetree/bindings/net/dsa/renesas,rzn1-a5psw.yaml index 9ad9f5cdf688..7ec4371932ef 100644 --- a/Documentation/devicetree/bindings/net/dsa/renesas,rzn1-a5psw.yaml +++ b/Documentation/devicetree/bindings/net/dsa/renesas,rzn1-a5psw.yaml @@ -72,7 +72,7 @@ properties: patternProperties: "^(ethernet-)?port@[0-4]$": - type: object + $ref: /schemas/net/ethernet-controller.yaml#/$defs/phylink description: Ethernet switch ports properties: diff --git a/Documentation/devicetree/bindings/net/fsl,fman-dtsec.yaml b/Documentation/devicetree/bindings/net/fsl,fman-dtsec.yaml index c80c880a9dab..c31db5f7d548 100644 --- a/Documentation/devicetree/bindings/net/fsl,fman-dtsec.yaml +++ b/Documentation/devicetree/bindings/net/fsl,fman-dtsec.yaml @@ -136,6 +136,7 @@ dependencies: allOf: - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink - if: properties: compatible: diff --git a/Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml b/Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml index a1b71b35319e..b2cab0fa7b35 100644 --- a/Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml +++ b/Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml @@ -15,6 +15,7 @@ description: allOf: - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink properties: compatible: diff --git a/Documentation/devicetree/bindings/net/marvell,pp2.yaml b/Documentation/devicetree/bindings/net/marvell,pp2.yaml index 4eadafc43d4f..8e60cc4bbbc9 100644 --- a/Documentation/devicetree/bindings/net/marvell,pp2.yaml +++ b/Documentation/devicetree/bindings/net/marvell,pp2.yaml @@ -59,7 +59,9 @@ patternProperties: '^(ethernet-)?port@[0-2]$': type: object description: subnode for each ethernet port. - $ref: ethernet-controller.yaml# + allOf: + - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink unevaluatedProperties: false properties: diff --git a/Documentation/devicetree/bindings/net/mediatek,net.yaml b/Documentation/devicetree/bindings/net/mediatek,net.yaml index e74502a0afe8..7562bb64baa9 100644 --- a/Documentation/devicetree/bindings/net/mediatek,net.yaml +++ b/Documentation/devicetree/bindings/net/mediatek,net.yaml @@ -391,6 +391,7 @@ patternProperties: unevaluatedProperties: false allOf: - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink description: Ethernet MAC node properties: diff --git a/Documentation/devicetree/bindings/net/microchip,lan966x-switch.yaml b/Documentation/devicetree/bindings/net/microchip,lan966x-switch.yaml index 306ef9ecf2b9..a770cfc490a9 100644 --- a/Documentation/devicetree/bindings/net/microchip,lan966x-switch.yaml +++ b/Documentation/devicetree/bindings/net/microchip,lan966x-switch.yaml @@ -73,7 +73,9 @@ properties: "^port@[0-9a-f]+$": type: object - $ref: /schemas/net/ethernet-controller.yaml# + allOf: + - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink unevaluatedProperties: false properties: diff --git a/Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml b/Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml index fcafef8d5a33..da4b4d934705 100644 --- a/Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml +++ b/Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml @@ -84,7 +84,10 @@ properties: patternProperties: "^port@[0-9a-f]+$": - $ref: /schemas/net/ethernet-controller.yaml# + type: object + allOf: + - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink unevaluatedProperties: false properties: diff --git a/Documentation/devicetree/bindings/net/mscc,vsc7514-switch.yaml b/Documentation/devicetree/bindings/net/mscc,vsc7514-switch.yaml index 8ee2c7d7ff42..b3aff7b0790e 100644 --- a/Documentation/devicetree/bindings/net/mscc,vsc7514-switch.yaml +++ b/Documentation/devicetree/bindings/net/mscc,vsc7514-switch.yaml @@ -126,6 +126,11 @@ properties: - const: xtr - const: fdma + ethernet-ports: + patternProperties: + "^port@[0-9a-f]+$": + $ref: ethernet-controller.yaml#/$defs/phylink + required: - compatible - reg diff --git a/Documentation/devicetree/bindings/net/qca,ar71xx.yaml b/Documentation/devicetree/bindings/net/qca,ar71xx.yaml index 89f94b31b546..d021bfb4ad20 100644 --- a/Documentation/devicetree/bindings/net/qca,ar71xx.yaml +++ b/Documentation/devicetree/bindings/net/qca,ar71xx.yaml @@ -8,6 +8,7 @@ title: QCA AR71XX MAC allOf: - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink maintainers: - Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx> diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index ddf9522a5dc2..62d8c2cfafe9 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -567,6 +567,7 @@ dependencies: allOf: - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink - if: properties: compatible: diff --git a/Documentation/devicetree/bindings/net/ti,k3-am654-cpsw-nuss.yaml b/Documentation/devicetree/bindings/net/ti,k3-am654-cpsw-nuss.yaml index c9c25132d154..d4366a11918e 100644 --- a/Documentation/devicetree/bindings/net/ti,k3-am654-cpsw-nuss.yaml +++ b/Documentation/devicetree/bindings/net/ti,k3-am654-cpsw-nuss.yaml @@ -117,7 +117,9 @@ properties: type: object description: CPSWxG NUSS external ports - $ref: ethernet-controller.yaml# + allOf: + - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink unevaluatedProperties: false properties: diff --git a/Documentation/devicetree/bindings/net/xlnx,axi-ethernet.yaml b/Documentation/devicetree/bindings/net/xlnx,axi-ethernet.yaml index 1d33d80af11c..f8894546c02a 100644 --- a/Documentation/devicetree/bindings/net/xlnx,axi-ethernet.yaml +++ b/Documentation/devicetree/bindings/net/xlnx,axi-ethernet.yaml @@ -130,7 +130,8 @@ required: - phy-handle allOf: - - $ref: /schemas/net/ethernet-controller.yaml# + - $ref: ethernet-controller.yaml# + - $ref: ethernet-controller.yaml#/$defs/phylink additionalProperties: false -- 2.39.2