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