[PATCH 10/10] dt-bindings: net: dsa: b53: Add YAML bindings

Vladimir Oltean olteanv at gmail.com
Tue Nov 10 17:43:11 EST 2020


On Mon, Nov 09, 2020 at 07:31:13PM -0800, Florian Fainelli wrote:
> diff --git a/Documentation/devicetree/bindings/net/dsa/b53.yaml b/Documentation/devicetree/bindings/net/dsa/b53.yaml
> new file mode 100644
> index 000000000000..4fcbac1de95b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/dsa/b53.yaml
> @@ -0,0 +1,249 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/net/dsa/b53.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Broadcom BCM53xx Ethernet switches
> +
> +allOf:
> +  - $ref: dsa.yaml#
> +
> +maintainers:
> +  - Florian Fainelli <f.fainelli at gmail.com>
> +
> +description:
> +  Broadcom BCM53xx Ethernet switches
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - const: brcm,bcm5325
> +      - const: brcm,bcm53115
> +      - const: brcm,bcm53125
> +      - const: brcm,bcm53128
> +      - const: brcm,bcm5365
> +      - const: brcm,bcm5395
> +      - const: brcm,bcm5389
> +      - const: brcm,bcm5397
> +      - const: brcm,bcm5398
> +      - items:
> +          - const: brcm,bcm11360-srab
> +          - const: brcm,cygnus-srab
> +      - items:
> +          - enum:
> +              - brcm,bcm53010-srab
> +              - brcm,bcm53011-srab
> +              - brcm,bcm53012-srab
> +              - brcm,bcm53018-srab
> +              - brcm,bcm53019-srab
> +          - const: brcm,bcm5301x-srab
> +      - items:
> +          - enum:
> +              - brcm,bcm11404-srab
> +              - brcm,bcm11407-srab
> +              - brcm,bcm11409-srab
> +              - brcm,bcm58310-srab
> +              - brcm,bcm58311-srab
> +              - brcm,bcm58313-srab
> +          - const: brcm,omega-srab
> +      - items:
> +          - enum:
> +              - brcm,bcm58522-srab
> +              - brcm,bcm58523-srab
> +              - brcm,bcm58525-srab
> +              - brcm,bcm58622-srab
> +              - brcm,bcm58623-srab
> +              - brcm,bcm58625-srab
> +              - brcm,bcm88312-srab
> +          - const: brcm,nsp-srab
> +      - items:
> +          - enum:
> +              - brcm,bcm3384-switch
> +              - brcm,bcm6328-switch
> +              - brcm,bcm6368-switch
> +          - const: brcm,bcm63xx-switch
> +
> +required:
> +  - compatible
> +  - reg
> +
> +# BCM585xx/586xx/88312 SoCs
> +if:
> +  properties:
> +    compatible:
> +      contains:
> +        enum:
> +          - brcm,bcm58522-srab
> +          - brcm,bcm58523-srab
> +          - brcm,bcm58525-srab
> +          - brcm,bcm58622-srab
> +          - brcm,bcm58623-srab
> +          - brcm,bcm58625-srab
> +          - brcm,bcm88312-srab
> +then:
> +  properties:
> +    reg:
> +      minItems: 3
> +      maxItems: 3
> +    reg-names:
> +      items:
> +        - const: srab
> +        - const: mux_config
> +        - const: sgmii_config

I am only reading these with a human eye, I don't parse YAML syntax.
Does the syntax enforce that these reg-names are declared in this
precise order, which is necessary for the proper operation of the
driver?

> +    interrupts:
> +      minItems: 13
> +      maxItems: 13
> +    interrupt-names:
> +      items:
> +        - const: link_state_p0
> +        - const: link_state_p1
> +        - const: link_state_p2
> +        - const: link_state_p3
> +        - const: link_state_p4
> +        - const: link_state_p5
> +        - const: link_state_p7
> +        - const: link_state_p8
> +        - const: phy
> +        - const: ts
> +        - const: imp_sleep_timer_p5
> +        - const: imp_sleep_timer_p7
> +        - const: imp_sleep_timer_p8
> +  required:
> +    - interrupts
> +else:
> +  properties:
> +    reg:
> +      maxItems: 1
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    mdio {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        switch at 1e {

You have renamed a node called 'ethernet-switch' into one called
'switch'. Was it deliberate?

> +            compatible = "brcm,bcm53125";
> +            reg = <30>;
> +
> +            ethernet-ports {
> +                #address-cells = <1>;
> +                #size-cells = <0>;
> +
> +                port at 0 {
> +                    reg = <0>;
> +                    label = "lan1";
> +                };
> +
> +                port at 1 {
> +                    reg = <1>;
> +                    label = "lan2";
> +                };
> +
> +                port at 5 {
> +                    reg = <5>;
> +                    label = "cable-modem";
> +                    phy-mode = "rgmii-txid";
> +                    fixed-link {
> +                        speed = <1000>;
> +                        full-duplex;
> +                    };
> +                };
> +
> +                port at 8 {
> +                    reg = <8>;
> +                    label = "cpu";
> +                    phy-mode = "rgmii-txid";
> +                    ethernet = <&eth0>;
> +                    fixed-link {
> +                        speed = <1000>;
> +                        full-duplex;
> +                    };
> +                };
> +            };
> +        };
> +    };
> +  - |
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +
> +    axi {
> +        #address-cells = <1>;
> +        #size-cells = <1>;
> +
> +        switch at 36000 {
> +            compatible = "brcm,bcm58623-srab", "brcm,nsp-srab";
> +            reg = <0x36000 0x1000>,
> +                  <0x3f308 0x8>,
> +                  <0x3f410 0xc>;
> +            reg-names = "srab", "mux_config", "sgmii_config";
> +            interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
> +                         <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
> +            interrupt-names = "link_state_p0",
> +                              "link_state_p1",
> +                              "link_state_p2",
> +                              "link_state_p3",
> +                              "link_state_p4",
> +                              "link_state_p5",
> +                              "link_state_p7",
> +                              "link_state_p8",
> +                              "phy",
> +                              "ts",
> +                              "imp_sleep_timer_p5",
> +                              "imp_sleep_timer_p7",
> +                              "imp_sleep_timer_p8";
> +
> +            ethernet-ports {
> +                #address-cells = <1>;
> +                #size-cells = <0>;
> +
> +                port at 0 {
> +                    label = "port0";
> +                    reg = <0>;
> +                };
> +
> +                port at 1 {
> +                    label = "port1";
> +                    reg = <1>;
> +                };
> +
> +                port at 2 {
> +                    label = "port2";
> +                    reg = <2>;
> +                };
> +
> +                port at 3 {
> +                    label = "port3";
> +                    reg = <3>;
> +                };
> +
> +                port at 4 {
> +                    label = "port4";
> +                    reg = <4>;
> +                };
> +
> +                port at 8 {
> +                    ethernet = <&amac2>;
> +                    label = "cpu";
> +                    reg = <8>;
> +                    fixed-link {
> +                        speed = <1000>;
> +                        full-duplex;
> +                    };
> +                };
> +            };
> +        };
> +    };



More information about the linux-arm-kernel mailing list