GNU Linux-libre 5.19-rc6-gnu
[releases.git] / Documentation / devicetree / bindings / net / dsa / brcm,b53.yaml
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
7 title: Broadcom BCM53xx Ethernet switches
8
9 maintainers:
10   - Florian Fainelli <f.fainelli@gmail.com>
11
12 description:
13   Broadcom BCM53xx Ethernet switches
14
15 properties:
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
64 required:
65   - compatible
66   - reg
67
68 allOf:
69   - $ref: dsa.yaml#
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
134 unevaluatedProperties: false
135
136 examples:
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                     label = "cpu";
173                     phy-mode = "rgmii-txid";
174                     ethernet = <&eth0>;
175                     fixed-link {
176                         speed = <1000>;
177                         full-duplex;
178                     };
179                 };
180             };
181         };
182     };
183   - |
184     #include <dt-bindings/interrupt-controller/arm-gic.h>
185     #include <dt-bindings/interrupt-controller/irq.h>
186
187     axi {
188         #address-cells = <1>;
189         #size-cells = <1>;
190
191         switch@36000 {
192             compatible = "brcm,bcm58623-srab", "brcm,nsp-srab";
193             reg = <0x36000 0x1000>,
194                   <0x3f308 0x8>,
195                   <0x3f410 0xc>;
196             reg-names = "srab", "mux_config", "sgmii_config";
197             interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
198                          <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
199                          <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
200                          <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
201                          <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
202                          <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
203                          <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
204                          <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
205                          <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
206                          <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
207                          <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
208                          <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
209                          <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
210             interrupt-names = "link_state_p0",
211                               "link_state_p1",
212                               "link_state_p2",
213                               "link_state_p3",
214                               "link_state_p4",
215                               "link_state_p5",
216                               "link_state_p7",
217                               "link_state_p8",
218                               "phy",
219                               "ts",
220                               "imp_sleep_timer_p5",
221                               "imp_sleep_timer_p7",
222                               "imp_sleep_timer_p8";
223
224             ethernet-ports {
225                 #address-cells = <1>;
226                 #size-cells = <0>;
227
228                 port@0 {
229                     label = "port0";
230                     reg = <0>;
231                 };
232
233                 port@1 {
234                     label = "port1";
235                     reg = <1>;
236                 };
237
238                 port@2 {
239                     label = "port2";
240                     reg = <2>;
241                 };
242
243                 port@3 {
244                     label = "port3";
245                     reg = <3>;
246                 };
247
248                 port@4 {
249                     label = "port4";
250                     reg = <4>;
251                 };
252
253                 port@8 {
254                     ethernet = <&amac2>;
255                     label = "cpu";
256                     reg = <8>;
257                     fixed-link {
258                         speed = <1000>;
259                         full-duplex;
260                     };
261                 };
262             };
263         };
264     };