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