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