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