Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1Distributed Switch Architecture Device Tree Bindings
2----------------------------------------------------
3
4Two bindings exist, one of which has been deprecated due to
5limitations.
6
7Current Binding
8---------------
9
10Switches are true Linux devices and can be probed by any means. Once
11probed, they register to the DSA framework, passing a node
12pointer. This node is expected to fulfil the following binding, and
13may contain additional properties as required by the device it is
14embedded within.
15
16Required properties:
17
18- ports : A container for child nodes representing switch ports.
19
20Optional properties:
21
22- dsa,member : A two element list indicates which DSA cluster, and position
23 within the cluster a switch takes. <0 0> is cluster 0,
24 switch 0. <0 1> is cluster 0, switch 1. <1 0> is cluster 1,
25 switch 0. A switch not part of any cluster (single device
26 hanging off a CPU port) must not specify this property
27
28The ports container has the following properties
29
30Required properties:
31
32- #address-cells : Must be 1
33- #size-cells : Must be 0
34
35Each port children node must have the following mandatory properties:
36- reg : Describes the port address in the switch
37
38An uplink/downlink port between switches in the cluster has the following
39mandatory property:
40
41- link : Should be a list of phandles to other switch's DSA
42 port. This port is used as the outgoing port
43 towards the phandle ports. The full routing
44 information must be given, not just the one hop
45 routes to neighbouring switches.
46
47A CPU port has the following mandatory property:
48
49- ethernet : Should be a phandle to a valid Ethernet device node.
50 This host device is what the switch port is
51 connected to.
52
53A user port has the following optional property:
54
55- label : Describes the label associated with this port, which
56 will become the netdev name.
57
58Port child nodes may also contain the following optional standardised
59properties, described in binding documents:
60
61- phy-handle : Phandle to a PHY on an MDIO bus. See
62 Documentation/devicetree/bindings/net/ethernet.txt
63 for details.
64
65- phy-mode : See
66 Documentation/devicetree/bindings/net/ethernet.txt
67 for details.
68
69- fixed-link : Fixed-link subnode describing a link to a non-MDIO
70 managed entity. See
71 Documentation/devicetree/bindings/net/fixed-link.txt
72 for details.
73
74Example
75
76The following example shows three switches on three MDIO busses,
77linked into one DSA cluster.
78
79&mdio1 {
80 #address-cells = <1>;
81 #size-cells = <0>;
82
83 switch0: switch0@0 {
84 compatible = "marvell,mv88e6085";
85 reg = <0>;
86
87 dsa,member = <0 0>;
88
89 ports {
90 #address-cells = <1>;
91 #size-cells = <0>;
92 port@0 {
93 reg = <0>;
94 label = "lan0";
95 };
96
97 port@1 {
98 reg = <1>;
99 label = "lan1";
100 };
101
102 port@2 {
103 reg = <2>;
104 label = "lan2";
105 };
106
107 switch0port5: port@5 {
108 reg = <5>;
109 phy-mode = "rgmii-txid";
110 link = <&switch1port6
111 &switch2port9>;
112 fixed-link {
113 speed = <1000>;
114 full-duplex;
115 };
116 };
117
118 port@6 {
119 reg = <6>;
120 ethernet = <&fec1>;
121 fixed-link {
122 speed = <100>;
123 full-duplex;
124 };
125 };
126 };
127 };
128};
129
130&mdio2 {
131 #address-cells = <1>;
132 #size-cells = <0>;
133
134 switch1: switch1@0 {
135 compatible = "marvell,mv88e6085";
136 reg = <0>;
137
138 dsa,member = <0 1>;
139
140 ports {
141 #address-cells = <1>;
142 #size-cells = <0>;
143 port@0 {
144 reg = <0>;
145 label = "lan3";
146 phy-handle = <&switch1phy0>;
147 };
148
149 port@1 {
150 reg = <1>;
151 label = "lan4";
152 phy-handle = <&switch1phy1>;
153 };
154
155 port@2 {
156 reg = <2>;
157 label = "lan5";
158 phy-handle = <&switch1phy2>;
159 };
160
161 switch1port5: port@5 {
162 reg = <5>;
163 link = <&switch2port9>;
164 phy-mode = "rgmii-txid";
165 fixed-link {
166 speed = <1000>;
167 full-duplex;
168 };
169 };
170
171 switch1port6: port@6 {
172 reg = <6>;
173 phy-mode = "rgmii-txid";
174 link = <&switch0port5>;
175 fixed-link {
176 speed = <1000>;
177 full-duplex;
178 };
179 };
180 };
181 mdio-bus {
182 #address-cells = <1>;
183 #size-cells = <0>;
184 switch1phy0: switch1phy0@0 {
185 reg = <0>;
186 };
187 switch1phy1: switch1phy0@1 {
188 reg = <1>;
189 };
190 switch1phy2: switch1phy0@2 {
191 reg = <2>;
192 };
193 };
194 };
195};
196
197&mdio4 {
198 #address-cells = <1>;
199 #size-cells = <0>;
200
201 switch2: switch2@0 {
202 compatible = "marvell,mv88e6085";
203 reg = <0>;
204
205 dsa,member = <0 2>;
206
207 ports {
208 #address-cells = <1>;
209 #size-cells = <0>;
210 port@0 {
211 reg = <0>;
212 label = "lan6";
213 };
214
215 port@1 {
216 reg = <1>;
217 label = "lan7";
218 };
219
220 port@2 {
221 reg = <2>;
222 label = "lan8";
223 };
224
225 port@3 {
226 reg = <3>;
227 label = "optical3";
228 fixed-link {
229 speed = <1000>;
230 full-duplex;
231 link-gpios = <&gpio6 2
232 GPIO_ACTIVE_HIGH>;
233 };
234 };
235
236 port@4 {
237 reg = <4>;
238 label = "optical4";
239 fixed-link {
240 speed = <1000>;
241 full-duplex;
242 link-gpios = <&gpio6 3
243 GPIO_ACTIVE_HIGH>;
244 };
245 };
246
247 switch2port9: port@9 {
248 reg = <9>;
249 phy-mode = "rgmii-txid";
250 link = <&switch1port5
251 &switch0port5>;
252 fixed-link {
253 speed = <1000>;
254 full-duplex;
255 };
256 };
257 };
258 };
259};
260
261Deprecated Binding
262------------------
263
264The deprecated binding makes use of a platform device to represent the
265switches. The switches themselves are not Linux devices, and make use
266of an MDIO bus for management.
267
268Required properties:
269- compatible : Should be "marvell,dsa"
270- #address-cells : Must be 2, first cell is the address on the MDIO bus
271 and second cell is the address in the switch tree.
272 Second cell is used only when cascading/chaining.
273- #size-cells : Must be 0
274- dsa,ethernet : Should be a phandle to a valid Ethernet device node
275- dsa,mii-bus : Should be a phandle to a valid MDIO bus device node
276
277Optional properties:
278- interrupts : property with a value describing the switch
279 interrupt number (not supported by the driver)
280
281A DSA node can contain multiple switch chips which are therefore child nodes of
282the parent DSA node. The maximum number of allowed child nodes is 4
283(DSA_MAX_SWITCHES).
284Each of these switch child nodes should have the following required properties:
285
286- reg : Contains two fields. The first one describes the
287 address on the MII bus. The second is the switch
288 number that must be unique in cascaded configurations
289- #address-cells : Must be 1
290- #size-cells : Must be 0
291
292A switch child node has the following optional property:
293
294- eeprom-length : Set to the length of an EEPROM connected to the
295 switch. Must be set if the switch can not detect
296 the presence and/or size of a connected EEPROM,
297 otherwise optional.
298
299A switch may have multiple "port" children nodes
300
301Each port children node must have the following mandatory properties:
302- reg : Describes the port address in the switch
303- label : Describes the label associated with this port, special
304 labels are "cpu" to indicate a CPU port and "dsa" to
305 indicate an uplink/downlink port.
306
307Note that a port labelled "dsa" will imply checking for the uplink phandle
308described below.
309
310Optional property:
311- link : Should be a list of phandles to another switch's DSA port.
312 This property is only used when switches are being
313 chained/cascaded together. This port is used as outgoing port
314 towards the phandle port, which can be more than one hop away.
315
316- phy-handle : Phandle to a PHY on an external MDIO bus, not the
317 switch internal one. See
318 Documentation/devicetree/bindings/net/ethernet.txt
319 for details.
320
321- phy-mode : String representing the connection to the designated
322 PHY node specified by the 'phy-handle' property. See
323 Documentation/devicetree/bindings/net/ethernet.txt
324 for details.
325
326- mii-bus : Should be a phandle to a valid MDIO bus device node.
327 This mii-bus will be used in preference to the
328 global dsa,mii-bus defined above, for this switch.
329
330Optional subnodes:
331- fixed-link : Fixed-link subnode describing a link to a non-MDIO
332 managed entity. See
333 Documentation/devicetree/bindings/net/fixed-link.txt
334 for details.
335
336Example:
337
338 dsa@0 {
339 compatible = "marvell,dsa";
340 #address-cells = <2>;
341 #size-cells = <0>;
342
343 interrupts = <10>;
344 dsa,ethernet = <ðernet0>;
345 dsa,mii-bus = <&mii_bus0>;
346
347 switch@0 {
348 #address-cells = <1>;
349 #size-cells = <0>;
350 reg = <16 0>; /* MDIO address 16, switch 0 in tree */
351
352 port@0 {
353 reg = <0>;
354 label = "lan1";
355 phy-handle = <&phy0>;
356 };
357
358 port@1 {
359 reg = <1>;
360 label = "lan2";
361 };
362
363 port@5 {
364 reg = <5>;
365 label = "cpu";
366 };
367
368 switch0port6: port@6 {
369 reg = <6>;
370 label = "dsa";
371 link = <&switch1port0
372 &switch2port0>;
373 };
374 };
375
376 switch@1 {
377 #address-cells = <1>;
378 #size-cells = <0>;
379 reg = <17 1>; /* MDIO address 17, switch 1 in tree */
380 mii-bus = <&mii_bus1>;
381 reset-gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;
382
383 switch1port0: port@0 {
384 reg = <0>;
385 label = "dsa";
386 link = <&switch0port6>;
387 };
388 switch1port1: port@1 {
389 reg = <1>;
390 label = "dsa";
391 link = <&switch2port1>;
392 };
393 };
394
395 switch@2 {
396 #address-cells = <1>;
397 #size-cells = <0>;
398 reg = <18 2>; /* MDIO address 18, switch 2 in tree */
399 mii-bus = <&mii_bus1>;
400
401 switch2port0: port@0 {
402 reg = <0>;
403 label = "dsa";
404 link = <&switch1port1
405 &switch0port6>;
406 };
407 };
408 };