xref: /freebsd/sys/contrib/device-tree/Bindings/net/dsa/lan9303.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1SMSC/MicroChip LAN9303 three port ethernet switch
2-------------------------------------------------
3
4Required properties:
5
6- compatible: should be
7  - "smsc,lan9303-i2c" for I2C managed mode
8    or
9  - "smsc,lan9303-mdio" for mdio managed mode
10
11Optional properties:
12
13- reset-gpios: GPIO to be used to reset the whole device
14- reset-duration: reset duration in milliseconds, defaults to 200 ms
15
16Subnodes:
17
18The integrated switch subnode should be specified according to the binding
19described in dsa/dsa.txt. The CPU port of this switch is always port 0.
20
21Note: always use 'reg = <0/1/2>;' for the three DSA ports, even if the device is
22configured to use 1/2/3 instead. This hardware configuration will be
23auto-detected and mapped accordingly.
24
25Example:
26
27I2C managed mode:
28
29	master: masterdevice@X {
30
31		fixed-link { /* RMII fixed link to LAN9303 */
32			speed = <100>;
33			full-duplex;
34		};
35	};
36
37	switch: switch@a {
38		compatible = "smsc,lan9303-i2c";
39		reg = <0xa>;
40		reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
41		reset-duration = <200>;
42
43		ports {
44			#address-cells = <1>;
45			#size-cells = <0>;
46
47			port@0 { /* RMII fixed link to master */
48				reg = <0>;
49				label = "cpu";
50				ethernet = <&master>;
51			};
52
53			port@1 { /* external port 1 */
54				reg = <1>;
55				label = "lan1";
56			};
57
58			port@2 { /* external port 2 */
59				reg = <2>;
60				label = "lan2";
61			};
62		};
63	};
64
65MDIO managed mode:
66
67	master: masterdevice@X {
68		phy-handle = <&switch>;
69
70		mdio {
71			#address-cells = <1>;
72			#size-cells = <0>;
73
74			switch: switch-phy@0 {
75				compatible = "smsc,lan9303-mdio";
76				reg = <0>;
77				reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
78				reset-duration = <100>;
79
80				ports {
81					#address-cells = <1>;
82					#size-cells = <0>;
83
84					port@0 {
85						reg = <0>;
86						label = "cpu";
87						ethernet = <&master>;
88					};
89
90					port@1 { /* external port 1 */
91						reg = <1>;
92						label = "lan1";
93					};
94
95					port@2 { /* external port 2 */
96						reg = <2>;
97						label = "lan2";
98					};
99				};
100			};
101		};
102	};
103