xref: /freebsd-src/sys/contrib/device-tree/Bindings/net/dsa/mt7530.txt (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
1c66ec88fSEmmanuel VadotMediatek MT7530 Ethernet switch
2c66ec88fSEmmanuel Vadot================================
3c66ec88fSEmmanuel Vadot
4c66ec88fSEmmanuel VadotRequired properties:
5c66ec88fSEmmanuel Vadot
6c66ec88fSEmmanuel Vadot- compatible: may be compatible = "mediatek,mt7530"
7c66ec88fSEmmanuel Vadot	or compatible = "mediatek,mt7621"
86be33864SEmmanuel Vadot	or compatible = "mediatek,mt7531"
9c66ec88fSEmmanuel Vadot- #address-cells: Must be 1.
10c66ec88fSEmmanuel Vadot- #size-cells: Must be 0.
11c66ec88fSEmmanuel Vadot- mediatek,mcm: Boolean; if defined, indicates that either MT7530 is the part
12c66ec88fSEmmanuel Vadot	on multi-chip module belong to MT7623A has or the remotely standalone
13c66ec88fSEmmanuel Vadot	chip as the function MT7623N reference board provided for.
14c66ec88fSEmmanuel Vadot
15c66ec88fSEmmanuel VadotIf compatible mediatek,mt7530 is set then the following properties are required
16c66ec88fSEmmanuel Vadot
17c66ec88fSEmmanuel Vadot- core-supply: Phandle to the regulator node necessary for the core power.
18c66ec88fSEmmanuel Vadot- io-supply: Phandle to the regulator node necessary for the I/O power.
19c66ec88fSEmmanuel Vadot	See Documentation/devicetree/bindings/regulator/mt6323-regulator.txt
20c66ec88fSEmmanuel Vadot	for details for the regulator setup on these boards.
21c66ec88fSEmmanuel Vadot
22c66ec88fSEmmanuel VadotIf the property mediatek,mcm isn't defined, following property is required
23c66ec88fSEmmanuel Vadot
24c66ec88fSEmmanuel Vadot- reset-gpios: Should be a gpio specifier for a reset line.
25c66ec88fSEmmanuel Vadot
26c66ec88fSEmmanuel VadotElse, following properties are required
27c66ec88fSEmmanuel Vadot
28c66ec88fSEmmanuel Vadot- resets : Phandle pointing to the system reset controller with
29c66ec88fSEmmanuel Vadot	line index for the ethsys.
30c66ec88fSEmmanuel Vadot- reset-names : Should be set to "mcm".
31c66ec88fSEmmanuel Vadot
32c66ec88fSEmmanuel VadotRequired properties for the child nodes within ports container:
33c66ec88fSEmmanuel Vadot
34c66ec88fSEmmanuel Vadot- reg: Port address described must be 6 for CPU port and from 0 to 5 for
35c66ec88fSEmmanuel Vadot	user ports.
366be33864SEmmanuel Vadot- phy-mode: String, the following values are acceptable for port labeled
376be33864SEmmanuel Vadot	"cpu":
386be33864SEmmanuel Vadot	If compatible mediatek,mt7530 or mediatek,mt7621 is set,
396be33864SEmmanuel Vadot	must be either "trgmii" or "rgmii"
406be33864SEmmanuel Vadot	If compatible mediatek,mt7531 is set,
416be33864SEmmanuel Vadot	must be either "sgmii", "1000base-x" or "2500base-x"
42c66ec88fSEmmanuel Vadot
436be33864SEmmanuel VadotPort 5 of mt7530 and mt7621 switch is muxed between:
44c66ec88fSEmmanuel Vadot1. GMAC5: GMAC5 can interface with another external MAC or PHY.
45c66ec88fSEmmanuel Vadot2. PHY of port 0 or port 4: PHY interfaces with an external MAC like 2nd GMAC
46c66ec88fSEmmanuel Vadot   of the SOC. Used in many setups where port 0/4 becomes the WAN port.
47c66ec88fSEmmanuel Vadot   Note: On a MT7621 SOC with integrated switch: 2nd GMAC can only connected to
48c66ec88fSEmmanuel Vadot	 GMAC5 when the gpios for RGMII2 (GPIO 22-33) are not used and not
49c66ec88fSEmmanuel Vadot	 connected to external component!
50c66ec88fSEmmanuel Vadot
51c66ec88fSEmmanuel VadotPort 5 modes/configurations:
52c66ec88fSEmmanuel Vadot1. Port 5 is disabled and isolated: An external phy can interface to the 2nd
53c66ec88fSEmmanuel Vadot   GMAC of the SOC.
54c66ec88fSEmmanuel Vadot   In the case of a build-in MT7530 switch, port 5 shares the RGMII bus with 2nd
55c66ec88fSEmmanuel Vadot   GMAC and an optional external phy. Mind the GPIO/pinctl settings of the SOC!
56c66ec88fSEmmanuel Vadot2. Port 5 is muxed to PHY of port 0/4: Port 0/4 interfaces with 2nd GMAC.
57c66ec88fSEmmanuel Vadot   It is a simple MAC to PHY interface, port 5 needs to be setup for xMII mode
58c66ec88fSEmmanuel Vadot   and RGMII delay.
59c66ec88fSEmmanuel Vadot3. Port 5 is muxed to GMAC5 and can interface to an external phy.
60c66ec88fSEmmanuel Vadot   Port 5 becomes an extra switch port.
61c66ec88fSEmmanuel Vadot   Only works on platform where external phy TX<->RX lines are swapped.
62c66ec88fSEmmanuel Vadot   Like in the Ubiquiti ER-X-SFP.
63c66ec88fSEmmanuel Vadot4. Port 5 is muxed to GMAC5 and interfaces with the 2nd GAMC as 2nd CPU port.
64c66ec88fSEmmanuel Vadot   Currently a 2nd CPU port is not supported by DSA code.
65c66ec88fSEmmanuel Vadot
66c66ec88fSEmmanuel VadotDepending on how the external PHY is wired:
67c66ec88fSEmmanuel Vadot1. normal: The PHY can only connect to 2nd GMAC but not to the switch
68c66ec88fSEmmanuel Vadot2. swapped: RGMII TX, RX are swapped; external phy interface with the switch as
69c66ec88fSEmmanuel Vadot   a ethernet port. But can't interface to the 2nd GMAC.
70c66ec88fSEmmanuel Vadot
71c66ec88fSEmmanuel VadotBased on the DT the port 5 mode is configured.
72c66ec88fSEmmanuel Vadot
73c66ec88fSEmmanuel VadotDriver tries to lookup the phy-handle of the 2nd GMAC of the master device.
74c66ec88fSEmmanuel VadotWhen phy-handle matches PHY of port 0 or 4 then port 5 set-up as mode 2.
75c66ec88fSEmmanuel Vadotphy-mode must be set, see also example 2 below!
76c66ec88fSEmmanuel Vadot * mt7621: phy-mode = "rgmii-txid";
77c66ec88fSEmmanuel Vadot * mt7623: phy-mode = "rgmii";
78c66ec88fSEmmanuel Vadot
795def4c47SEmmanuel VadotOptional properties:
805def4c47SEmmanuel Vadot
815def4c47SEmmanuel Vadot- gpio-controller: Boolean; if defined, MT7530's LED controller will run on
825def4c47SEmmanuel Vadot	GPIO mode.
835def4c47SEmmanuel Vadot- #gpio-cells: Must be 2 if gpio-controller is defined.
84*5956d97fSEmmanuel Vadot- interrupt-controller: Boolean; Enables the internal interrupt controller.
85*5956d97fSEmmanuel Vadot
86*5956d97fSEmmanuel VadotIf interrupt-controller is defined, the following properties are required.
87*5956d97fSEmmanuel Vadot
88*5956d97fSEmmanuel Vadot- #interrupt-cells: Must be 1.
89*5956d97fSEmmanuel Vadot- interrupts: Parent interrupt for the interrupt controller.
905def4c47SEmmanuel Vadot
91c66ec88fSEmmanuel VadotSee Documentation/devicetree/bindings/net/dsa/dsa.txt for a list of additional
92c66ec88fSEmmanuel Vadotrequired, optional properties and how the integrated switch subnodes must
93c66ec88fSEmmanuel Vadotbe specified.
94c66ec88fSEmmanuel Vadot
95c66ec88fSEmmanuel VadotExample:
96c66ec88fSEmmanuel Vadot
97c66ec88fSEmmanuel Vadot	&mdio0 {
98c66ec88fSEmmanuel Vadot		switch@0 {
99c66ec88fSEmmanuel Vadot			compatible = "mediatek,mt7530";
100c66ec88fSEmmanuel Vadot			#address-cells = <1>;
101c66ec88fSEmmanuel Vadot			#size-cells = <0>;
102c66ec88fSEmmanuel Vadot			reg = <0>;
103c66ec88fSEmmanuel Vadot
104c66ec88fSEmmanuel Vadot			core-supply = <&mt6323_vpa_reg>;
105c66ec88fSEmmanuel Vadot			io-supply = <&mt6323_vemc3v3_reg>;
106c66ec88fSEmmanuel Vadot			reset-gpios = <&pio 33 0>;
107c66ec88fSEmmanuel Vadot
108c66ec88fSEmmanuel Vadot			ports {
109c66ec88fSEmmanuel Vadot				#address-cells = <1>;
110c66ec88fSEmmanuel Vadot				#size-cells = <0>;
111c66ec88fSEmmanuel Vadot				reg = <0>;
112c66ec88fSEmmanuel Vadot				port@0 {
113c66ec88fSEmmanuel Vadot					reg = <0>;
114c66ec88fSEmmanuel Vadot					label = "lan0";
115c66ec88fSEmmanuel Vadot				};
116c66ec88fSEmmanuel Vadot
117c66ec88fSEmmanuel Vadot				port@1 {
118c66ec88fSEmmanuel Vadot					reg = <1>;
119c66ec88fSEmmanuel Vadot					label = "lan1";
120c66ec88fSEmmanuel Vadot				};
121c66ec88fSEmmanuel Vadot
122c66ec88fSEmmanuel Vadot				port@2 {
123c66ec88fSEmmanuel Vadot					reg = <2>;
124c66ec88fSEmmanuel Vadot					label = "lan2";
125c66ec88fSEmmanuel Vadot				};
126c66ec88fSEmmanuel Vadot
127c66ec88fSEmmanuel Vadot				port@3 {
128c66ec88fSEmmanuel Vadot					reg = <3>;
129c66ec88fSEmmanuel Vadot					label = "lan3";
130c66ec88fSEmmanuel Vadot				};
131c66ec88fSEmmanuel Vadot
132c66ec88fSEmmanuel Vadot				port@4 {
133c66ec88fSEmmanuel Vadot					reg = <4>;
134c66ec88fSEmmanuel Vadot					label = "wan";
135c66ec88fSEmmanuel Vadot				};
136c66ec88fSEmmanuel Vadot
137c66ec88fSEmmanuel Vadot				port@6 {
138c66ec88fSEmmanuel Vadot					reg = <6>;
139c66ec88fSEmmanuel Vadot					label = "cpu";
140c66ec88fSEmmanuel Vadot					ethernet = <&gmac0>;
141c66ec88fSEmmanuel Vadot					phy-mode = "trgmii";
142c66ec88fSEmmanuel Vadot					fixed-link {
143c66ec88fSEmmanuel Vadot						speed = <1000>;
144c66ec88fSEmmanuel Vadot						full-duplex;
145c66ec88fSEmmanuel Vadot					};
146c66ec88fSEmmanuel Vadot				};
147c66ec88fSEmmanuel Vadot			};
148c66ec88fSEmmanuel Vadot		};
149c66ec88fSEmmanuel Vadot	};
150c66ec88fSEmmanuel Vadot
151c66ec88fSEmmanuel VadotExample 2: MT7621: Port 4 is WAN port: 2nd GMAC -> Port 5 -> PHY port 4.
152c66ec88fSEmmanuel Vadot
153c66ec88fSEmmanuel Vadot&eth {
154c66ec88fSEmmanuel Vadot	gmac0: mac@0 {
155c66ec88fSEmmanuel Vadot		compatible = "mediatek,eth-mac";
156c66ec88fSEmmanuel Vadot		reg = <0>;
157c66ec88fSEmmanuel Vadot		phy-mode = "rgmii";
158c66ec88fSEmmanuel Vadot
159c66ec88fSEmmanuel Vadot		fixed-link {
160c66ec88fSEmmanuel Vadot			speed = <1000>;
161c66ec88fSEmmanuel Vadot			full-duplex;
162c66ec88fSEmmanuel Vadot			pause;
163c66ec88fSEmmanuel Vadot		};
164c66ec88fSEmmanuel Vadot	};
165c66ec88fSEmmanuel Vadot
166c66ec88fSEmmanuel Vadot	gmac1: mac@1 {
167c66ec88fSEmmanuel Vadot		compatible = "mediatek,eth-mac";
168c66ec88fSEmmanuel Vadot		reg = <1>;
169c66ec88fSEmmanuel Vadot		phy-mode = "rgmii-txid";
170c66ec88fSEmmanuel Vadot		phy-handle = <&phy4>;
171c66ec88fSEmmanuel Vadot	};
172c66ec88fSEmmanuel Vadot
173c66ec88fSEmmanuel Vadot	mdio: mdio-bus {
174c66ec88fSEmmanuel Vadot		#address-cells = <1>;
175c66ec88fSEmmanuel Vadot		#size-cells = <0>;
176c66ec88fSEmmanuel Vadot
177c66ec88fSEmmanuel Vadot		/* Internal phy */
178c66ec88fSEmmanuel Vadot		phy4: ethernet-phy@4 {
179c66ec88fSEmmanuel Vadot			reg = <4>;
180c66ec88fSEmmanuel Vadot		};
181c66ec88fSEmmanuel Vadot
182c66ec88fSEmmanuel Vadot		mt7530: switch@1f {
183c66ec88fSEmmanuel Vadot			compatible = "mediatek,mt7621";
184c66ec88fSEmmanuel Vadot			#address-cells = <1>;
185c66ec88fSEmmanuel Vadot			#size-cells = <0>;
186c66ec88fSEmmanuel Vadot			reg = <0x1f>;
187c66ec88fSEmmanuel Vadot			pinctrl-names = "default";
188c66ec88fSEmmanuel Vadot			mediatek,mcm;
189c66ec88fSEmmanuel Vadot
190c66ec88fSEmmanuel Vadot			resets = <&rstctrl 2>;
191c66ec88fSEmmanuel Vadot			reset-names = "mcm";
192c66ec88fSEmmanuel Vadot
193c66ec88fSEmmanuel Vadot			ports {
194c66ec88fSEmmanuel Vadot				#address-cells = <1>;
195c66ec88fSEmmanuel Vadot				#size-cells = <0>;
196c66ec88fSEmmanuel Vadot
197c66ec88fSEmmanuel Vadot				port@0 {
198c66ec88fSEmmanuel Vadot					reg = <0>;
199c66ec88fSEmmanuel Vadot					label = "lan0";
200c66ec88fSEmmanuel Vadot				};
201c66ec88fSEmmanuel Vadot
202c66ec88fSEmmanuel Vadot				port@1 {
203c66ec88fSEmmanuel Vadot					reg = <1>;
204c66ec88fSEmmanuel Vadot					label = "lan1";
205c66ec88fSEmmanuel Vadot				};
206c66ec88fSEmmanuel Vadot
207c66ec88fSEmmanuel Vadot				port@2 {
208c66ec88fSEmmanuel Vadot					reg = <2>;
209c66ec88fSEmmanuel Vadot					label = "lan2";
210c66ec88fSEmmanuel Vadot				};
211c66ec88fSEmmanuel Vadot
212c66ec88fSEmmanuel Vadot				port@3 {
213c66ec88fSEmmanuel Vadot					reg = <3>;
214c66ec88fSEmmanuel Vadot					label = "lan3";
215c66ec88fSEmmanuel Vadot				};
216c66ec88fSEmmanuel Vadot
217c66ec88fSEmmanuel Vadot/* Commented out. Port 4 is handled by 2nd GMAC.
218c66ec88fSEmmanuel Vadot				port@4 {
219c66ec88fSEmmanuel Vadot					reg = <4>;
220c66ec88fSEmmanuel Vadot					label = "lan4";
221c66ec88fSEmmanuel Vadot				};
222c66ec88fSEmmanuel Vadot*/
223c66ec88fSEmmanuel Vadot
224c66ec88fSEmmanuel Vadot				cpu_port0: port@6 {
225c66ec88fSEmmanuel Vadot					reg = <6>;
226c66ec88fSEmmanuel Vadot					label = "cpu";
227c66ec88fSEmmanuel Vadot					ethernet = <&gmac0>;
228c66ec88fSEmmanuel Vadot					phy-mode = "rgmii";
229c66ec88fSEmmanuel Vadot
230c66ec88fSEmmanuel Vadot					fixed-link {
231c66ec88fSEmmanuel Vadot						speed = <1000>;
232c66ec88fSEmmanuel Vadot						full-duplex;
233c66ec88fSEmmanuel Vadot						pause;
234c66ec88fSEmmanuel Vadot					};
235c66ec88fSEmmanuel Vadot				};
236c66ec88fSEmmanuel Vadot			};
237c66ec88fSEmmanuel Vadot		};
238c66ec88fSEmmanuel Vadot	};
239c66ec88fSEmmanuel Vadot};
240c66ec88fSEmmanuel Vadot
241c66ec88fSEmmanuel VadotExample 3: MT7621: Port 5 is connected to external PHY: Port 5 -> external PHY.
242c66ec88fSEmmanuel Vadot
243c66ec88fSEmmanuel Vadot&eth {
244c66ec88fSEmmanuel Vadot	gmac0: mac@0 {
245c66ec88fSEmmanuel Vadot		compatible = "mediatek,eth-mac";
246c66ec88fSEmmanuel Vadot		reg = <0>;
247c66ec88fSEmmanuel Vadot		phy-mode = "rgmii";
248c66ec88fSEmmanuel Vadot
249c66ec88fSEmmanuel Vadot		fixed-link {
250c66ec88fSEmmanuel Vadot			speed = <1000>;
251c66ec88fSEmmanuel Vadot			full-duplex;
252c66ec88fSEmmanuel Vadot			pause;
253c66ec88fSEmmanuel Vadot		};
254c66ec88fSEmmanuel Vadot	};
255c66ec88fSEmmanuel Vadot
256c66ec88fSEmmanuel Vadot	mdio: mdio-bus {
257c66ec88fSEmmanuel Vadot		#address-cells = <1>;
258c66ec88fSEmmanuel Vadot		#size-cells = <0>;
259c66ec88fSEmmanuel Vadot
260c66ec88fSEmmanuel Vadot		/* External phy */
261c66ec88fSEmmanuel Vadot		ephy5: ethernet-phy@7 {
262c66ec88fSEmmanuel Vadot			reg = <7>;
263c66ec88fSEmmanuel Vadot		};
264c66ec88fSEmmanuel Vadot
265c66ec88fSEmmanuel Vadot		mt7530: switch@1f {
266c66ec88fSEmmanuel Vadot			compatible = "mediatek,mt7621";
267c66ec88fSEmmanuel Vadot			#address-cells = <1>;
268c66ec88fSEmmanuel Vadot			#size-cells = <0>;
269c66ec88fSEmmanuel Vadot			reg = <0x1f>;
270c66ec88fSEmmanuel Vadot			pinctrl-names = "default";
271c66ec88fSEmmanuel Vadot			mediatek,mcm;
272c66ec88fSEmmanuel Vadot
273c66ec88fSEmmanuel Vadot			resets = <&rstctrl 2>;
274c66ec88fSEmmanuel Vadot			reset-names = "mcm";
275c66ec88fSEmmanuel Vadot
276c66ec88fSEmmanuel Vadot			ports {
277c66ec88fSEmmanuel Vadot				#address-cells = <1>;
278c66ec88fSEmmanuel Vadot				#size-cells = <0>;
279c66ec88fSEmmanuel Vadot
280c66ec88fSEmmanuel Vadot				port@0 {
281c66ec88fSEmmanuel Vadot					reg = <0>;
282c66ec88fSEmmanuel Vadot					label = "lan0";
283c66ec88fSEmmanuel Vadot				};
284c66ec88fSEmmanuel Vadot
285c66ec88fSEmmanuel Vadot				port@1 {
286c66ec88fSEmmanuel Vadot					reg = <1>;
287c66ec88fSEmmanuel Vadot					label = "lan1";
288c66ec88fSEmmanuel Vadot				};
289c66ec88fSEmmanuel Vadot
290c66ec88fSEmmanuel Vadot				port@2 {
291c66ec88fSEmmanuel Vadot					reg = <2>;
292c66ec88fSEmmanuel Vadot					label = "lan2";
293c66ec88fSEmmanuel Vadot				};
294c66ec88fSEmmanuel Vadot
295c66ec88fSEmmanuel Vadot				port@3 {
296c66ec88fSEmmanuel Vadot					reg = <3>;
297c66ec88fSEmmanuel Vadot					label = "lan3";
298c66ec88fSEmmanuel Vadot				};
299c66ec88fSEmmanuel Vadot
300c66ec88fSEmmanuel Vadot				port@4 {
301c66ec88fSEmmanuel Vadot					reg = <4>;
302c66ec88fSEmmanuel Vadot					label = "lan4";
303c66ec88fSEmmanuel Vadot				};
304c66ec88fSEmmanuel Vadot
305c66ec88fSEmmanuel Vadot				port@5 {
306c66ec88fSEmmanuel Vadot					reg = <5>;
307c66ec88fSEmmanuel Vadot					label = "lan5";
308c66ec88fSEmmanuel Vadot					phy-mode = "rgmii";
309c66ec88fSEmmanuel Vadot					phy-handle = <&ephy5>;
310c66ec88fSEmmanuel Vadot				};
311c66ec88fSEmmanuel Vadot
312c66ec88fSEmmanuel Vadot				cpu_port0: port@6 {
313c66ec88fSEmmanuel Vadot					reg = <6>;
314c66ec88fSEmmanuel Vadot					label = "cpu";
315c66ec88fSEmmanuel Vadot					ethernet = <&gmac0>;
316c66ec88fSEmmanuel Vadot					phy-mode = "rgmii";
317c66ec88fSEmmanuel Vadot
318c66ec88fSEmmanuel Vadot					fixed-link {
319c66ec88fSEmmanuel Vadot						speed = <1000>;
320c66ec88fSEmmanuel Vadot						full-duplex;
321c66ec88fSEmmanuel Vadot						pause;
322c66ec88fSEmmanuel Vadot					};
323c66ec88fSEmmanuel Vadot				};
324c66ec88fSEmmanuel Vadot			};
325c66ec88fSEmmanuel Vadot		};
326c66ec88fSEmmanuel Vadot	};
327c66ec88fSEmmanuel Vadot};
328