1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/dsa/brcm,b53.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Broadcom BCM53xx Ethernet switches
8
9maintainers:
10  - Florian Fainelli <f.fainelli@gmail.com>
11
12description:
13  Broadcom BCM53xx Ethernet switches
14
15properties:
16  compatible:
17    oneOf:
18      - const: brcm,bcm5325
19      - const: brcm,bcm53115
20      - const: brcm,bcm53125
21      - const: brcm,bcm53128
22      - const: brcm,bcm5365
23      - const: brcm,bcm5395
24      - const: brcm,bcm5389
25      - const: brcm,bcm5397
26      - const: brcm,bcm5398
27      - items:
28          - const: brcm,bcm11360-srab
29          - const: brcm,cygnus-srab
30      - items:
31          - enum:
32              - brcm,bcm53010-srab
33              - brcm,bcm53011-srab
34              - brcm,bcm53012-srab
35              - brcm,bcm53018-srab
36              - brcm,bcm53019-srab
37          - const: brcm,bcm5301x-srab
38      - items:
39          - enum:
40              - brcm,bcm11404-srab
41              - brcm,bcm11407-srab
42              - brcm,bcm11409-srab
43              - brcm,bcm58310-srab
44              - brcm,bcm58311-srab
45              - brcm,bcm58313-srab
46          - const: brcm,omega-srab
47      - items:
48          - enum:
49              - brcm,bcm58522-srab
50              - brcm,bcm58523-srab
51              - brcm,bcm58525-srab
52              - brcm,bcm58622-srab
53              - brcm,bcm58623-srab
54              - brcm,bcm58625-srab
55              - brcm,bcm88312-srab
56          - const: brcm,nsp-srab
57      - items:
58          - enum:
59              - brcm,bcm3384-switch
60              - brcm,bcm6328-switch
61              - brcm,bcm6368-switch
62          - const: brcm,bcm63xx-switch
63
64required:
65  - compatible
66  - reg
67
68allOf:
69  - $ref: dsa.yaml#/$defs/ethernet-ports
70  - if:
71      properties:
72        compatible:
73          contains:
74            enum:
75              - brcm,bcm5325
76              - brcm,bcm53115
77              - brcm,bcm53125
78              - brcm,bcm53128
79              - brcm,bcm5365
80              - brcm,bcm5395
81              - brcm,bcm5397
82              - brcm,bcm5398
83    then:
84      $ref: /schemas/spi/spi-peripheral-props.yaml
85
86    # BCM585xx/586xx/88312 SoCs
87  - if:
88      properties:
89        compatible:
90          contains:
91            enum:
92              - brcm,bcm58522-srab
93              - brcm,bcm58523-srab
94              - brcm,bcm58525-srab
95              - brcm,bcm58622-srab
96              - brcm,bcm58623-srab
97              - brcm,bcm58625-srab
98              - brcm,bcm88312-srab
99    then:
100      properties:
101        reg:
102          minItems: 3
103          maxItems: 3
104        reg-names:
105          items:
106            - const: srab
107            - const: mux_config
108            - const: sgmii_config
109        interrupts:
110          minItems: 13
111          maxItems: 13
112        interrupt-names:
113          items:
114            - const: link_state_p0
115            - const: link_state_p1
116            - const: link_state_p2
117            - const: link_state_p3
118            - const: link_state_p4
119            - const: link_state_p5
120            - const: link_state_p7
121            - const: link_state_p8
122            - const: phy
123            - const: ts
124            - const: imp_sleep_timer_p5
125            - const: imp_sleep_timer_p7
126            - const: imp_sleep_timer_p8
127      required:
128        - interrupts
129    else:
130      properties:
131        reg:
132          maxItems: 1
133
134unevaluatedProperties: false
135
136examples:
137  - |
138    mdio {
139        #address-cells = <1>;
140        #size-cells = <0>;
141
142        ethernet-switch@1e {
143            compatible = "brcm,bcm53125";
144            reg = <30>;
145
146            ethernet-ports {
147                #address-cells = <1>;
148                #size-cells = <0>;
149
150                port@0 {
151                    reg = <0>;
152                    label = "lan1";
153                };
154
155                port@1 {
156                    reg = <1>;
157                    label = "lan2";
158                };
159
160                port@5 {
161                    reg = <5>;
162                    label = "cable-modem";
163                    phy-mode = "rgmii-txid";
164                    fixed-link {
165                        speed = <1000>;
166                        full-duplex;
167                    };
168                };
169
170                port@8 {
171                    reg = <8>;
172                    phy-mode = "rgmii-txid";
173                    ethernet = <&eth0>;
174                    fixed-link {
175                        speed = <1000>;
176                        full-duplex;
177                    };
178                };
179            };
180        };
181    };
182  - |
183    #include <dt-bindings/interrupt-controller/arm-gic.h>
184    #include <dt-bindings/interrupt-controller/irq.h>
185
186    axi {
187        #address-cells = <1>;
188        #size-cells = <1>;
189
190        switch@36000 {
191            compatible = "brcm,bcm58623-srab", "brcm,nsp-srab";
192            reg = <0x36000 0x1000>,
193                  <0x3f308 0x8>,
194                  <0x3f410 0xc>;
195            reg-names = "srab", "mux_config", "sgmii_config";
196            interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
197                         <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
198                         <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
199                         <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
200                         <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
201                         <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
202                         <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
203                         <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
204                         <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
205                         <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
206                         <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
207                         <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
208                         <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
209            interrupt-names = "link_state_p0",
210                              "link_state_p1",
211                              "link_state_p2",
212                              "link_state_p3",
213                              "link_state_p4",
214                              "link_state_p5",
215                              "link_state_p7",
216                              "link_state_p8",
217                              "phy",
218                              "ts",
219                              "imp_sleep_timer_p5",
220                              "imp_sleep_timer_p7",
221                              "imp_sleep_timer_p8";
222
223            ethernet-ports {
224                #address-cells = <1>;
225                #size-cells = <0>;
226
227                port@0 {
228                    label = "port0";
229                    reg = <0>;
230                };
231
232                port@1 {
233                    label = "port1";
234                    reg = <1>;
235                };
236
237                port@2 {
238                    label = "port2";
239                    reg = <2>;
240                };
241
242                port@3 {
243                    label = "port3";
244                    reg = <3>;
245                };
246
247                port@4 {
248                    label = "port4";
249                    reg = <4>;
250                };
251
252                port@8 {
253                    ethernet = <&amac2>;
254                    reg = <8>;
255                    phy-mode = "internal";
256
257                    fixed-link {
258                        speed = <1000>;
259                        full-duplex;
260                    };
261                };
262            };
263        };
264    };
265