Documentation / devicetree / bindings / net / dsa / brcm,sf2.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/dsa/brcm,sf2.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Broadcom Starfighter 2 integrated switch

maintainers:
  - Florian Fainelli <f.fainelli@gmail.com>

properties:
  compatible:
    items:
      - enum:
          - brcm,bcm4908-switch
          - brcm,bcm7278-switch-v4.0
          - brcm,bcm7278-switch-v4.8
          - brcm,bcm7445-switch-v4.0

  reg:
    minItems: 6
    maxItems: 6

  reg-names:
    items:
      - const: core
      - const: reg
      - const: intrl2_0
      - const: intrl2_1
      - const: fcb
      - const: acb

  interrupts:
    minItems: 2
    maxItems: 2

  interrupt-names:
    items:
      - const: switch_0
      - const: switch_1

  resets:
    maxItems: 1

  reset-names:
    const: switch

  clocks:
    minItems: 1
    items:
      - description: switch's main clock
      - description: dividing of the switch core clock

  clock-names:
    minItems: 1
    items:
      - const: sw_switch
      - const: sw_switch_mdiv

  brcm,num-gphy:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: maximum number of integrated gigabit PHYs in the switch

  brcm,num-rgmii-ports:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: maximum number of RGMII interfaces supported by the switch

  brcm,fcb-pause-override:
    description: if present indicates that the switch supports Failover Control
      Block pause override capability
    type: boolean

  brcm,acb-packets-inflight:
    description: if present indicates that the switch Admission Control Block
      supports reporting the number of packets in-flight in a switch queue
    type: boolean

  ports:
    type: object
    additionalProperties: true

    patternProperties:
      '^port@[0-9a-f]$':
        $ref: dsa-port.yaml#
        unevaluatedProperties: false

        properties:
          brcm,use-bcm-hdr:
            description: if present, indicates that the switch port has Broadcom
              tags enabled (per-packet metadata)
            type: boolean

required:
  - reg
  - interrupts

allOf:
  - $ref: dsa.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - brcm,bcm7278-switch-v4.0
              - brcm,bcm7278-switch-v4.8
    then:
      properties:
        clocks:
          minItems: 1
          maxItems: 1
        clock-names:
          minItems: 1
          maxItems: 1
      required:
        - clocks
        - clock-names
  - if:
      properties:
        compatible:
          contains:
            const: brcm,bcm7445-switch-v4.0
    then:
      properties:
        clocks:
          minItems: 2
          maxItems: 2
        clock-names:
          minItems: 2
          maxItems: 2
      required:
        - clocks
        - clock-names

additionalProperties: false

examples:
  - |
    switch@f0b00000 {
            compatible = "brcm,bcm7445-switch-v4.0";
            reg = <0xf0b00000 0x40000>,
                  <0xf0b40000 0x110>,
                  <0xf0b40340 0x30>,
                  <0xf0b40380 0x30>,
                  <0xf0b40400 0x34>,
                  <0xf0b40600 0x208>;
            reg-names = "core", "reg", "intrl2_0", "intrl2_1",
                        "fcb", "acb";
            interrupts = <0 0x18 0>,
                         <0 0x19 0>;
            clocks = <&sw_switch>, <&sw_switch_mdiv>;
            clock-names = "sw_switch", "sw_switch_mdiv";
            brcm,num-gphy = <1>;
            brcm,num-rgmii-ports = <2>;
            brcm,fcb-pause-override;
            brcm,acb-packets-inflight;
 
            ports {
                    #address-cells = <1>;
                    #size-cells = <0>;
 
                    port@0 {
                            label = "gphy";
                            reg = <0>;
                    };
            };
    };