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