xref: /linux/arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
1*711cca0fSRobert Marko// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
2*711cca0fSRobert Marko/*
3*711cca0fSRobert Marko * Copyright (c) 2025 Microchip Technology Inc. and its subsidiaries.
4*711cca0fSRobert Marko */
5*711cca0fSRobert Marko
6*711cca0fSRobert Marko/dts-v1/;
7*711cca0fSRobert Marko
8*711cca0fSRobert Marko#include <dt-bindings/gpio/gpio.h>
9*711cca0fSRobert Marko#include <dt-bindings/leds/common.h>
10*711cca0fSRobert Marko#include "lan9691.dtsi"
11*711cca0fSRobert Marko
12*711cca0fSRobert Marko/ {
13*711cca0fSRobert Marko	model = "Microchip EV23X71A";
14*711cca0fSRobert Marko	compatible = "microchip,ev23x71a", "microchip,lan9696", "microchip,lan9691";
15*711cca0fSRobert Marko
16*711cca0fSRobert Marko	aliases {
17*711cca0fSRobert Marko		serial0 = &usart0;
18*711cca0fSRobert Marko	};
19*711cca0fSRobert Marko
20*711cca0fSRobert Marko	chosen {
21*711cca0fSRobert Marko		stdout-path = "serial0:115200n8";
22*711cca0fSRobert Marko	};
23*711cca0fSRobert Marko
24*711cca0fSRobert Marko	gpio-restart {
25*711cca0fSRobert Marko		compatible = "gpio-restart";
26*711cca0fSRobert Marko		gpios = <&gpio 60 GPIO_ACTIVE_LOW>;
27*711cca0fSRobert Marko		open-source;
28*711cca0fSRobert Marko		priority = <200>;
29*711cca0fSRobert Marko	};
30*711cca0fSRobert Marko
31*711cca0fSRobert Marko	i2c-mux {
32*711cca0fSRobert Marko		compatible = "i2c-mux-gpio";
33*711cca0fSRobert Marko		#address-cells = <1>;
34*711cca0fSRobert Marko		#size-cells = <0>;
35*711cca0fSRobert Marko		i2c-parent = <&i2c3>;
36*711cca0fSRobert Marko		idle-state = <0x8>;
37*711cca0fSRobert Marko		mux-gpios = <&sgpio_out 0 1 GPIO_ACTIVE_HIGH>,
38*711cca0fSRobert Marko			    <&sgpio_out 0 2 GPIO_ACTIVE_HIGH>,
39*711cca0fSRobert Marko			    <&sgpio_out 0 3 GPIO_ACTIVE_HIGH>;
40*711cca0fSRobert Marko		settle-time-us = <100>;
41*711cca0fSRobert Marko
42*711cca0fSRobert Marko		i2c_sfp0: i2c@0 {
43*711cca0fSRobert Marko			reg = <0x0>;
44*711cca0fSRobert Marko		};
45*711cca0fSRobert Marko
46*711cca0fSRobert Marko		i2c_sfp1: i2c@1 {
47*711cca0fSRobert Marko			reg = <0x1>;
48*711cca0fSRobert Marko		};
49*711cca0fSRobert Marko
50*711cca0fSRobert Marko		i2c_sfp2: i2c@2 {
51*711cca0fSRobert Marko			reg = <0x2>;
52*711cca0fSRobert Marko		};
53*711cca0fSRobert Marko
54*711cca0fSRobert Marko		i2c_sfp3: i2c@3 {
55*711cca0fSRobert Marko			reg = <0x3>;
56*711cca0fSRobert Marko		};
57*711cca0fSRobert Marko
58*711cca0fSRobert Marko		i2c_poe: i2c@7 {
59*711cca0fSRobert Marko			reg = <0x7>;
60*711cca0fSRobert Marko		};
61*711cca0fSRobert Marko	};
62*711cca0fSRobert Marko
63*711cca0fSRobert Marko	leds {
64*711cca0fSRobert Marko		compatible = "gpio-leds";
65*711cca0fSRobert Marko
66*711cca0fSRobert Marko		led-status {
67*711cca0fSRobert Marko			color = <LED_COLOR_ID_GREEN>;
68*711cca0fSRobert Marko			function = LED_FUNCTION_STATUS;
69*711cca0fSRobert Marko			gpios = <&gpio 61 GPIO_ACTIVE_LOW>;
70*711cca0fSRobert Marko		};
71*711cca0fSRobert Marko
72*711cca0fSRobert Marko		led-sfp1-green {
73*711cca0fSRobert Marko			color = <LED_COLOR_ID_GREEN>;
74*711cca0fSRobert Marko			function = LED_FUNCTION_LAN;
75*711cca0fSRobert Marko			function-enumerator = <0>;
76*711cca0fSRobert Marko			gpios = <&sgpio_out 6 0 GPIO_ACTIVE_LOW>;
77*711cca0fSRobert Marko			default-state = "off";
78*711cca0fSRobert Marko		};
79*711cca0fSRobert Marko
80*711cca0fSRobert Marko		led-sfp1-yellow {
81*711cca0fSRobert Marko			color = <LED_COLOR_ID_YELLOW>;
82*711cca0fSRobert Marko			function = LED_FUNCTION_LAN;
83*711cca0fSRobert Marko			function-enumerator = <0>;
84*711cca0fSRobert Marko			gpios = <&sgpio_out 6 1 GPIO_ACTIVE_LOW>;
85*711cca0fSRobert Marko			default-state = "off";
86*711cca0fSRobert Marko		};
87*711cca0fSRobert Marko
88*711cca0fSRobert Marko		led-sfp2-green {
89*711cca0fSRobert Marko			color = <LED_COLOR_ID_GREEN>;
90*711cca0fSRobert Marko			function = LED_FUNCTION_LAN;
91*711cca0fSRobert Marko			function-enumerator = <1>;
92*711cca0fSRobert Marko			gpios = <&sgpio_out 7 0 GPIO_ACTIVE_LOW>;
93*711cca0fSRobert Marko			default-state = "off";
94*711cca0fSRobert Marko		};
95*711cca0fSRobert Marko
96*711cca0fSRobert Marko		led-sfp2-yellow {
97*711cca0fSRobert Marko			color = <LED_COLOR_ID_YELLOW>;
98*711cca0fSRobert Marko			function = LED_FUNCTION_LAN;
99*711cca0fSRobert Marko			function-enumerator = <1>;
100*711cca0fSRobert Marko			gpios = <&sgpio_out 7 1 GPIO_ACTIVE_LOW>;
101*711cca0fSRobert Marko			default-state = "off";
102*711cca0fSRobert Marko		};
103*711cca0fSRobert Marko
104*711cca0fSRobert Marko		led-sfp3-green {
105*711cca0fSRobert Marko			color = <LED_COLOR_ID_GREEN>;
106*711cca0fSRobert Marko			function = LED_FUNCTION_LAN;
107*711cca0fSRobert Marko			function-enumerator = <2>;
108*711cca0fSRobert Marko			gpios = <&sgpio_out 8 0 GPIO_ACTIVE_LOW>;
109*711cca0fSRobert Marko			default-state = "off";
110*711cca0fSRobert Marko		};
111*711cca0fSRobert Marko
112*711cca0fSRobert Marko		led-sfp3-yellow {
113*711cca0fSRobert Marko			color = <LED_COLOR_ID_YELLOW>;
114*711cca0fSRobert Marko			function = LED_FUNCTION_LAN;
115*711cca0fSRobert Marko			function-enumerator = <2>;
116*711cca0fSRobert Marko			gpios = <&sgpio_out 8 1 GPIO_ACTIVE_LOW>;
117*711cca0fSRobert Marko			default-state = "off";
118*711cca0fSRobert Marko		};
119*711cca0fSRobert Marko
120*711cca0fSRobert Marko		led-sfp4-green {
121*711cca0fSRobert Marko			color = <LED_COLOR_ID_GREEN>;
122*711cca0fSRobert Marko			function = LED_FUNCTION_LAN;
123*711cca0fSRobert Marko			function-enumerator = <3>;
124*711cca0fSRobert Marko			gpios = <&sgpio_out 9 0 GPIO_ACTIVE_LOW>;
125*711cca0fSRobert Marko			default-state = "off";
126*711cca0fSRobert Marko		};
127*711cca0fSRobert Marko
128*711cca0fSRobert Marko		led-sfp4-yellow {
129*711cca0fSRobert Marko			color = <LED_COLOR_ID_YELLOW>;
130*711cca0fSRobert Marko			function = LED_FUNCTION_LAN;
131*711cca0fSRobert Marko			function-enumerator = <3>;
132*711cca0fSRobert Marko			gpios = <&sgpio_out 9 1 GPIO_ACTIVE_LOW>;
133*711cca0fSRobert Marko			default-state = "off";
134*711cca0fSRobert Marko		};
135*711cca0fSRobert Marko	};
136*711cca0fSRobert Marko
137*711cca0fSRobert Marko	mux-controller {
138*711cca0fSRobert Marko		compatible = "gpio-mux";
139*711cca0fSRobert Marko		#mux-control-cells = <0>;
140*711cca0fSRobert Marko		mux-gpios = <&sgpio_out 1 2 GPIO_ACTIVE_LOW>,
141*711cca0fSRobert Marko			    <&sgpio_out 1 3 GPIO_ACTIVE_LOW>;
142*711cca0fSRobert Marko	};
143*711cca0fSRobert Marko
144*711cca0fSRobert Marko	sfp0: sfp0 {
145*711cca0fSRobert Marko		compatible = "sff,sfp";
146*711cca0fSRobert Marko		i2c-bus = <&i2c_sfp0>;
147*711cca0fSRobert Marko		tx-disable-gpios = <&sgpio_out 6 2 GPIO_ACTIVE_HIGH>;
148*711cca0fSRobert Marko		los-gpios = <&sgpio_in 6 0 GPIO_ACTIVE_HIGH>;
149*711cca0fSRobert Marko		mod-def0-gpios = <&sgpio_in 6 1 GPIO_ACTIVE_LOW>;
150*711cca0fSRobert Marko		tx-fault-gpios = <&sgpio_in 6 2 GPIO_ACTIVE_HIGH>;
151*711cca0fSRobert Marko	};
152*711cca0fSRobert Marko
153*711cca0fSRobert Marko	sfp1: sfp1 {
154*711cca0fSRobert Marko		compatible = "sff,sfp";
155*711cca0fSRobert Marko		i2c-bus = <&i2c_sfp1>;
156*711cca0fSRobert Marko		tx-disable-gpios = <&sgpio_out 7 2 GPIO_ACTIVE_HIGH>;
157*711cca0fSRobert Marko		los-gpios = <&sgpio_in 7 0 GPIO_ACTIVE_HIGH>;
158*711cca0fSRobert Marko		mod-def0-gpios = <&sgpio_in 7 1 GPIO_ACTIVE_LOW>;
159*711cca0fSRobert Marko		tx-fault-gpios = <&sgpio_in 7 2 GPIO_ACTIVE_HIGH>;
160*711cca0fSRobert Marko	};
161*711cca0fSRobert Marko
162*711cca0fSRobert Marko	sfp2: sfp2 {
163*711cca0fSRobert Marko		compatible = "sff,sfp";
164*711cca0fSRobert Marko		i2c-bus = <&i2c_sfp2>;
165*711cca0fSRobert Marko		tx-disable-gpios = <&sgpio_out 8 2 GPIO_ACTIVE_HIGH>;
166*711cca0fSRobert Marko		los-gpios = <&sgpio_in 8 0 GPIO_ACTIVE_HIGH>;
167*711cca0fSRobert Marko		mod-def0-gpios = <&sgpio_in 8 1 GPIO_ACTIVE_LOW>;
168*711cca0fSRobert Marko		tx-fault-gpios = <&sgpio_in 8 2 GPIO_ACTIVE_HIGH>;
169*711cca0fSRobert Marko	};
170*711cca0fSRobert Marko
171*711cca0fSRobert Marko	sfp3: sfp3 {
172*711cca0fSRobert Marko		compatible = "sff,sfp";
173*711cca0fSRobert Marko		i2c-bus = <&i2c_sfp3>;
174*711cca0fSRobert Marko		tx-disable-gpios = <&sgpio_out 9 2 GPIO_ACTIVE_HIGH>;
175*711cca0fSRobert Marko		los-gpios = <&sgpio_in 9 0 GPIO_ACTIVE_HIGH>;
176*711cca0fSRobert Marko		mod-def0-gpios = <&sgpio_in 9 1 GPIO_ACTIVE_LOW>;
177*711cca0fSRobert Marko		tx-fault-gpios = <&sgpio_in 9 2 GPIO_ACTIVE_HIGH>;
178*711cca0fSRobert Marko	};
179*711cca0fSRobert Marko};
180*711cca0fSRobert Marko
181*711cca0fSRobert Marko&gpio {
182*711cca0fSRobert Marko	emmc_sd_pins: emmc-sd-pins {
183*711cca0fSRobert Marko		/* eMMC_SD - CMD, CLK, D0, D1, D2, D3, D4, D5, D6, D7, RSTN */
184*711cca0fSRobert Marko		pins = "GPIO_14", "GPIO_15", "GPIO_16", "GPIO_17",
185*711cca0fSRobert Marko		       "GPIO_18", "GPIO_19", "GPIO_20", "GPIO_21",
186*711cca0fSRobert Marko		       "GPIO_22", "GPIO_23", "GPIO_24";
187*711cca0fSRobert Marko		function = "emmc_sd";
188*711cca0fSRobert Marko	};
189*711cca0fSRobert Marko
190*711cca0fSRobert Marko	fan_pins: fan-pins {
191*711cca0fSRobert Marko		pins = "GPIO_25", "GPIO_26";
192*711cca0fSRobert Marko		function = "fan";
193*711cca0fSRobert Marko	};
194*711cca0fSRobert Marko
195*711cca0fSRobert Marko	fc0_pins: fc0-pins {
196*711cca0fSRobert Marko		pins = "GPIO_3", "GPIO_4";
197*711cca0fSRobert Marko		function = "fc";
198*711cca0fSRobert Marko	};
199*711cca0fSRobert Marko
200*711cca0fSRobert Marko	fc2_pins: fc2-pins {
201*711cca0fSRobert Marko		pins = "GPIO_64", "GPIO_65", "GPIO_66";
202*711cca0fSRobert Marko		function = "fc";
203*711cca0fSRobert Marko	};
204*711cca0fSRobert Marko
205*711cca0fSRobert Marko	fc3_pins: fc3-pins {
206*711cca0fSRobert Marko		pins = "GPIO_55", "GPIO_56";
207*711cca0fSRobert Marko		function = "fc";
208*711cca0fSRobert Marko	};
209*711cca0fSRobert Marko
210*711cca0fSRobert Marko	mdio_irq_pins: mdio-irq-pins {
211*711cca0fSRobert Marko		pins = "GPIO_11";
212*711cca0fSRobert Marko		function = "miim_irq";
213*711cca0fSRobert Marko	};
214*711cca0fSRobert Marko
215*711cca0fSRobert Marko	mdio_pins: mdio-pins {
216*711cca0fSRobert Marko		pins = "GPIO_9", "GPIO_10";
217*711cca0fSRobert Marko		function = "miim";
218*711cca0fSRobert Marko	};
219*711cca0fSRobert Marko
220*711cca0fSRobert Marko	ptp_ext_pins: ptp-ext-pins {
221*711cca0fSRobert Marko		pins = "GPIO_59";
222*711cca0fSRobert Marko		function = "ptpsync_5";
223*711cca0fSRobert Marko	};
224*711cca0fSRobert Marko
225*711cca0fSRobert Marko	ptp_out_pins: ptp-out-pins {
226*711cca0fSRobert Marko		pins = "GPIO_58";
227*711cca0fSRobert Marko		function = "ptpsync_4";
228*711cca0fSRobert Marko	};
229*711cca0fSRobert Marko
230*711cca0fSRobert Marko	sgpio_pins: sgpio-pins {
231*711cca0fSRobert Marko		/* SCK, D0, D1, LD */
232*711cca0fSRobert Marko		pins = "GPIO_5", "GPIO_6", "GPIO_7", "GPIO_8";
233*711cca0fSRobert Marko		function = "sgpio_a";
234*711cca0fSRobert Marko	};
235*711cca0fSRobert Marko
236*711cca0fSRobert Marko	usb_over_pins: usb-over-pins {
237*711cca0fSRobert Marko		pins = "GPIO_13";
238*711cca0fSRobert Marko		function = "usb_over_detect";
239*711cca0fSRobert Marko	};
240*711cca0fSRobert Marko
241*711cca0fSRobert Marko	usb_power_pins: usb-power-pins {
242*711cca0fSRobert Marko		pins = "GPIO_1";
243*711cca0fSRobert Marko		function = "usb_power";
244*711cca0fSRobert Marko	};
245*711cca0fSRobert Marko
246*711cca0fSRobert Marko	usb_rst_pins: usb-rst-pins {
247*711cca0fSRobert Marko		pins = "GPIO_12";
248*711cca0fSRobert Marko		function = "usb2phy_rst";
249*711cca0fSRobert Marko	};
250*711cca0fSRobert Marko
251*711cca0fSRobert Marko	usb_ulpi_pins: usb-ulpi-pins {
252*711cca0fSRobert Marko		pins = "GPIO_30", "GPIO_31", "GPIO_32", "GPIO_33",
253*711cca0fSRobert Marko		       "GPIO_34", "GPIO_35", "GPIO_36", "GPIO_37",
254*711cca0fSRobert Marko		       "GPIO_38", "GPIO_39", "GPIO_40", "GPIO_41";
255*711cca0fSRobert Marko		function = "usb_ulpi";
256*711cca0fSRobert Marko	};
257*711cca0fSRobert Marko};
258*711cca0fSRobert Marko
259*711cca0fSRobert Marko&flx0 {
260*711cca0fSRobert Marko	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
261*711cca0fSRobert Marko	status = "okay";
262*711cca0fSRobert Marko};
263*711cca0fSRobert Marko
264*711cca0fSRobert Marko&flx2 {
265*711cca0fSRobert Marko	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
266*711cca0fSRobert Marko	status = "okay";
267*711cca0fSRobert Marko};
268*711cca0fSRobert Marko
269*711cca0fSRobert Marko&flx3 {
270*711cca0fSRobert Marko	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
271*711cca0fSRobert Marko	status = "okay";
272*711cca0fSRobert Marko};
273*711cca0fSRobert Marko
274*711cca0fSRobert Marko&i2c3 {
275*711cca0fSRobert Marko	pinctrl-0 = <&fc3_pins>;
276*711cca0fSRobert Marko	pinctrl-names = "default";
277*711cca0fSRobert Marko	i2c-analog-filter;
278*711cca0fSRobert Marko	i2c-digital-filter;
279*711cca0fSRobert Marko	i2c-digital-filter-width-ns = <35>;
280*711cca0fSRobert Marko	i2c-sda-hold-time-ns = <1500>;
281*711cca0fSRobert Marko	status = "okay";
282*711cca0fSRobert Marko};
283*711cca0fSRobert Marko
284*711cca0fSRobert Marko&mdio0 {
285*711cca0fSRobert Marko	pinctrl-0 = <&mdio_pins>, <&mdio_irq_pins>;
286*711cca0fSRobert Marko	pinctrl-names = "default";
287*711cca0fSRobert Marko	reset-gpios = <&gpio 62 GPIO_ACTIVE_LOW>;
288*711cca0fSRobert Marko	status = "okay";
289*711cca0fSRobert Marko
290*711cca0fSRobert Marko	phy3: phy@3 {
291*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
292*711cca0fSRobert Marko		reg = <3>;
293*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
294*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
295*711cca0fSRobert Marko	};
296*711cca0fSRobert Marko
297*711cca0fSRobert Marko	phy4: phy@4 {
298*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
299*711cca0fSRobert Marko		reg = <4>;
300*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
301*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
302*711cca0fSRobert Marko	};
303*711cca0fSRobert Marko
304*711cca0fSRobert Marko	phy5: phy@5 {
305*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
306*711cca0fSRobert Marko		reg = <5>;
307*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
308*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
309*711cca0fSRobert Marko	};
310*711cca0fSRobert Marko
311*711cca0fSRobert Marko	phy6: phy@6 {
312*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
313*711cca0fSRobert Marko		reg = <6>;
314*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
315*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
316*711cca0fSRobert Marko	};
317*711cca0fSRobert Marko
318*711cca0fSRobert Marko	phy7: phy@7 {
319*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
320*711cca0fSRobert Marko		reg = <7>;
321*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
322*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
323*711cca0fSRobert Marko	};
324*711cca0fSRobert Marko
325*711cca0fSRobert Marko	phy8: phy@8 {
326*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
327*711cca0fSRobert Marko		reg = <8>;
328*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
329*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
330*711cca0fSRobert Marko	};
331*711cca0fSRobert Marko
332*711cca0fSRobert Marko	phy9: phy@9 {
333*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
334*711cca0fSRobert Marko		reg = <9>;
335*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
336*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
337*711cca0fSRobert Marko	};
338*711cca0fSRobert Marko
339*711cca0fSRobert Marko	phy10: phy@10 {
340*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
341*711cca0fSRobert Marko		reg = <10>;
342*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
343*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
344*711cca0fSRobert Marko	};
345*711cca0fSRobert Marko
346*711cca0fSRobert Marko	phy11: phy@11 {
347*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
348*711cca0fSRobert Marko		reg = <11>;
349*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
350*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
351*711cca0fSRobert Marko	};
352*711cca0fSRobert Marko
353*711cca0fSRobert Marko	phy12: phy@12 {
354*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
355*711cca0fSRobert Marko		reg = <12>;
356*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
357*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
358*711cca0fSRobert Marko	};
359*711cca0fSRobert Marko
360*711cca0fSRobert Marko	phy13: phy@13 {
361*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
362*711cca0fSRobert Marko		reg = <13>;
363*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
364*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
365*711cca0fSRobert Marko	};
366*711cca0fSRobert Marko
367*711cca0fSRobert Marko	phy14: phy@14 {
368*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
369*711cca0fSRobert Marko		reg = <14>;
370*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
371*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
372*711cca0fSRobert Marko	};
373*711cca0fSRobert Marko
374*711cca0fSRobert Marko	phy15: phy@15 {
375*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
376*711cca0fSRobert Marko		reg = <15>;
377*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
378*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
379*711cca0fSRobert Marko	};
380*711cca0fSRobert Marko
381*711cca0fSRobert Marko	phy16: phy@16 {
382*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
383*711cca0fSRobert Marko		reg = <16>;
384*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
385*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
386*711cca0fSRobert Marko	};
387*711cca0fSRobert Marko
388*711cca0fSRobert Marko	phy17: phy@17 {
389*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
390*711cca0fSRobert Marko		reg = <17>;
391*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
392*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
393*711cca0fSRobert Marko	};
394*711cca0fSRobert Marko
395*711cca0fSRobert Marko	phy18: phy@18 {
396*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
397*711cca0fSRobert Marko		reg = <18>;
398*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
399*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
400*711cca0fSRobert Marko	};
401*711cca0fSRobert Marko
402*711cca0fSRobert Marko	phy19: phy@19 {
403*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
404*711cca0fSRobert Marko		reg = <19>;
405*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
406*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
407*711cca0fSRobert Marko	};
408*711cca0fSRobert Marko
409*711cca0fSRobert Marko	phy20: phy@20 {
410*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
411*711cca0fSRobert Marko		reg = <20>;
412*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
413*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
414*711cca0fSRobert Marko	};
415*711cca0fSRobert Marko
416*711cca0fSRobert Marko	phy21: phy@21 {
417*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
418*711cca0fSRobert Marko		reg = <21>;
419*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
420*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
421*711cca0fSRobert Marko	};
422*711cca0fSRobert Marko
423*711cca0fSRobert Marko	phy22: phy@22 {
424*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
425*711cca0fSRobert Marko		reg = <22>;
426*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
427*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
428*711cca0fSRobert Marko	};
429*711cca0fSRobert Marko
430*711cca0fSRobert Marko	phy23: phy@23 {
431*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
432*711cca0fSRobert Marko		reg = <23>;
433*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
434*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
435*711cca0fSRobert Marko	};
436*711cca0fSRobert Marko
437*711cca0fSRobert Marko	phy24: phy@24 {
438*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
439*711cca0fSRobert Marko		reg = <24>;
440*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
441*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
442*711cca0fSRobert Marko	};
443*711cca0fSRobert Marko
444*711cca0fSRobert Marko	phy25: phy@25 {
445*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
446*711cca0fSRobert Marko		reg = <25>;
447*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
448*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
449*711cca0fSRobert Marko	};
450*711cca0fSRobert Marko
451*711cca0fSRobert Marko	phy26: phy@26 {
452*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
453*711cca0fSRobert Marko		reg = <26>;
454*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
455*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
456*711cca0fSRobert Marko	};
457*711cca0fSRobert Marko
458*711cca0fSRobert Marko	phy27: phy@27 {
459*711cca0fSRobert Marko		compatible = "ethernet-phy-ieee802.3-c22";
460*711cca0fSRobert Marko		reg = <27>;
461*711cca0fSRobert Marko		interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
462*711cca0fSRobert Marko		interrupt-parent = <&gpio>;
463*711cca0fSRobert Marko	};
464*711cca0fSRobert Marko};
465*711cca0fSRobert Marko
466*711cca0fSRobert Marko&serdes {
467*711cca0fSRobert Marko	status = "okay";
468*711cca0fSRobert Marko};
469*711cca0fSRobert Marko
470*711cca0fSRobert Marko&sgpio {
471*711cca0fSRobert Marko	pinctrl-0 = <&sgpio_pins>;
472*711cca0fSRobert Marko	pinctrl-names = "default";
473*711cca0fSRobert Marko	microchip,sgpio-port-ranges = <0 1>, <6 9>;
474*711cca0fSRobert Marko	status = "okay";
475*711cca0fSRobert Marko
476*711cca0fSRobert Marko	gpio@0 {
477*711cca0fSRobert Marko		ngpios = <128>;
478*711cca0fSRobert Marko	};
479*711cca0fSRobert Marko	gpio@1 {
480*711cca0fSRobert Marko		ngpios = <128>;
481*711cca0fSRobert Marko	};
482*711cca0fSRobert Marko};
483*711cca0fSRobert Marko
484*711cca0fSRobert Marko&spi2 {
485*711cca0fSRobert Marko	pinctrl-0 = <&fc2_pins>;
486*711cca0fSRobert Marko	pinctrl-names = "default";
487*711cca0fSRobert Marko	cs-gpios = <&gpio 63 GPIO_ACTIVE_LOW>;
488*711cca0fSRobert Marko	status = "okay";
489*711cca0fSRobert Marko};
490*711cca0fSRobert Marko
491*711cca0fSRobert Marko&switch {
492*711cca0fSRobert Marko	pinctrl-0 = <&ptp_out_pins>, <&ptp_ext_pins>;
493*711cca0fSRobert Marko	pinctrl-names = "default";
494*711cca0fSRobert Marko	status = "okay";
495*711cca0fSRobert Marko
496*711cca0fSRobert Marko	ethernet-ports {
497*711cca0fSRobert Marko		#address-cells = <1>;
498*711cca0fSRobert Marko		#size-cells = <0>;
499*711cca0fSRobert Marko
500*711cca0fSRobert Marko		port0: port@0 {
501*711cca0fSRobert Marko			reg = <0>;
502*711cca0fSRobert Marko			phy-handle = <&phy4>;
503*711cca0fSRobert Marko			phy-mode = "qsgmii";
504*711cca0fSRobert Marko			phys = <&serdes 0>;
505*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
506*711cca0fSRobert Marko		};
507*711cca0fSRobert Marko
508*711cca0fSRobert Marko		port1: port@1 {
509*711cca0fSRobert Marko			reg = <1>;
510*711cca0fSRobert Marko			phy-handle = <&phy5>;
511*711cca0fSRobert Marko			phy-mode = "qsgmii";
512*711cca0fSRobert Marko			phys = <&serdes 0>;
513*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
514*711cca0fSRobert Marko		};
515*711cca0fSRobert Marko
516*711cca0fSRobert Marko		port2: port@2 {
517*711cca0fSRobert Marko			reg = <2>;
518*711cca0fSRobert Marko			phy-handle = <&phy6>;
519*711cca0fSRobert Marko			phy-mode = "qsgmii";
520*711cca0fSRobert Marko			phys = <&serdes 0>;
521*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
522*711cca0fSRobert Marko		};
523*711cca0fSRobert Marko
524*711cca0fSRobert Marko		port3: port@3 {
525*711cca0fSRobert Marko			reg = <3>;
526*711cca0fSRobert Marko			phy-handle = <&phy7>;
527*711cca0fSRobert Marko			phy-mode = "qsgmii";
528*711cca0fSRobert Marko			phys = <&serdes 0>;
529*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
530*711cca0fSRobert Marko		};
531*711cca0fSRobert Marko
532*711cca0fSRobert Marko		port4: port@4 {
533*711cca0fSRobert Marko			reg = <4>;
534*711cca0fSRobert Marko			phy-handle = <&phy8>;
535*711cca0fSRobert Marko			phy-mode = "qsgmii";
536*711cca0fSRobert Marko			phys = <&serdes 1>;
537*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
538*711cca0fSRobert Marko		};
539*711cca0fSRobert Marko
540*711cca0fSRobert Marko		port5: port@5 {
541*711cca0fSRobert Marko			reg = <5>;
542*711cca0fSRobert Marko			phy-handle = <&phy9>;
543*711cca0fSRobert Marko			phy-mode = "qsgmii";
544*711cca0fSRobert Marko			phys = <&serdes 1>;
545*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
546*711cca0fSRobert Marko		};
547*711cca0fSRobert Marko
548*711cca0fSRobert Marko		port6: port@6 {
549*711cca0fSRobert Marko			reg = <6>;
550*711cca0fSRobert Marko			phy-handle = <&phy10>;
551*711cca0fSRobert Marko			phy-mode = "qsgmii";
552*711cca0fSRobert Marko			phys = <&serdes 1>;
553*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
554*711cca0fSRobert Marko		};
555*711cca0fSRobert Marko
556*711cca0fSRobert Marko		port7: port@7 {
557*711cca0fSRobert Marko			reg = <7>;
558*711cca0fSRobert Marko			phy-handle = <&phy11>;
559*711cca0fSRobert Marko			phy-mode = "qsgmii";
560*711cca0fSRobert Marko			phys = <&serdes 1>;
561*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
562*711cca0fSRobert Marko		};
563*711cca0fSRobert Marko
564*711cca0fSRobert Marko		port8: port@8 {
565*711cca0fSRobert Marko			reg = <8>;
566*711cca0fSRobert Marko			phy-handle = <&phy12>;
567*711cca0fSRobert Marko			phy-mode = "qsgmii";
568*711cca0fSRobert Marko			phys = <&serdes 2>;
569*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
570*711cca0fSRobert Marko		};
571*711cca0fSRobert Marko
572*711cca0fSRobert Marko		port9: port@9 {
573*711cca0fSRobert Marko			reg = <9>;
574*711cca0fSRobert Marko			phy-handle = <&phy13>;
575*711cca0fSRobert Marko			phy-mode = "qsgmii";
576*711cca0fSRobert Marko			phys = <&serdes 2>;
577*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
578*711cca0fSRobert Marko		};
579*711cca0fSRobert Marko
580*711cca0fSRobert Marko		port10: port@10 {
581*711cca0fSRobert Marko			reg = <10>;
582*711cca0fSRobert Marko			phy-handle = <&phy14>;
583*711cca0fSRobert Marko			phy-mode = "qsgmii";
584*711cca0fSRobert Marko			phys = <&serdes 2>;
585*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
586*711cca0fSRobert Marko		};
587*711cca0fSRobert Marko
588*711cca0fSRobert Marko		port11: port@11 {
589*711cca0fSRobert Marko			reg = <11>;
590*711cca0fSRobert Marko			phy-handle = <&phy15>;
591*711cca0fSRobert Marko			phy-mode = "qsgmii";
592*711cca0fSRobert Marko			phys = <&serdes 2>;
593*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
594*711cca0fSRobert Marko		};
595*711cca0fSRobert Marko
596*711cca0fSRobert Marko		port12: port@12 {
597*711cca0fSRobert Marko			reg = <12>;
598*711cca0fSRobert Marko			phy-handle = <&phy16>;
599*711cca0fSRobert Marko			phy-mode = "qsgmii";
600*711cca0fSRobert Marko			phys = <&serdes 3>;
601*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
602*711cca0fSRobert Marko		};
603*711cca0fSRobert Marko
604*711cca0fSRobert Marko		port13: port@13 {
605*711cca0fSRobert Marko			reg = <13>;
606*711cca0fSRobert Marko			phy-handle = <&phy17>;
607*711cca0fSRobert Marko			phy-mode = "qsgmii";
608*711cca0fSRobert Marko			phys = <&serdes 3>;
609*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
610*711cca0fSRobert Marko		};
611*711cca0fSRobert Marko
612*711cca0fSRobert Marko		port14: port@14 {
613*711cca0fSRobert Marko			reg = <14>;
614*711cca0fSRobert Marko			phy-handle = <&phy18>;
615*711cca0fSRobert Marko			phy-mode = "qsgmii";
616*711cca0fSRobert Marko			phys = <&serdes 3>;
617*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
618*711cca0fSRobert Marko		};
619*711cca0fSRobert Marko
620*711cca0fSRobert Marko		port15: port@15 {
621*711cca0fSRobert Marko			reg = <15>;
622*711cca0fSRobert Marko			phy-handle = <&phy19>;
623*711cca0fSRobert Marko			phy-mode = "qsgmii";
624*711cca0fSRobert Marko			phys = <&serdes 3>;
625*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
626*711cca0fSRobert Marko		};
627*711cca0fSRobert Marko
628*711cca0fSRobert Marko		port16: port@16 {
629*711cca0fSRobert Marko			reg = <16>;
630*711cca0fSRobert Marko			phy-handle = <&phy20>;
631*711cca0fSRobert Marko			phy-mode = "qsgmii";
632*711cca0fSRobert Marko			phys = <&serdes 4>;
633*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
634*711cca0fSRobert Marko		};
635*711cca0fSRobert Marko
636*711cca0fSRobert Marko		port17: port@17 {
637*711cca0fSRobert Marko			reg = <17>;
638*711cca0fSRobert Marko			phy-handle = <&phy21>;
639*711cca0fSRobert Marko			phy-mode = "qsgmii";
640*711cca0fSRobert Marko			phys = <&serdes 4>;
641*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
642*711cca0fSRobert Marko		};
643*711cca0fSRobert Marko
644*711cca0fSRobert Marko		port18: port@18 {
645*711cca0fSRobert Marko			reg = <18>;
646*711cca0fSRobert Marko			phy-handle = <&phy22>;
647*711cca0fSRobert Marko			phy-mode = "qsgmii";
648*711cca0fSRobert Marko			phys = <&serdes 4>;
649*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
650*711cca0fSRobert Marko		};
651*711cca0fSRobert Marko
652*711cca0fSRobert Marko		port19: port@19 {
653*711cca0fSRobert Marko			reg = <19>;
654*711cca0fSRobert Marko			phy-handle = <&phy23>;
655*711cca0fSRobert Marko			phy-mode = "qsgmii";
656*711cca0fSRobert Marko			phys = <&serdes 4>;
657*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
658*711cca0fSRobert Marko		};
659*711cca0fSRobert Marko
660*711cca0fSRobert Marko		port20: port@20 {
661*711cca0fSRobert Marko			reg = <20>;
662*711cca0fSRobert Marko			phy-handle = <&phy24>;
663*711cca0fSRobert Marko			phy-mode = "qsgmii";
664*711cca0fSRobert Marko			phys = <&serdes 5>;
665*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
666*711cca0fSRobert Marko		};
667*711cca0fSRobert Marko
668*711cca0fSRobert Marko		port21: port@21 {
669*711cca0fSRobert Marko			reg = <21>;
670*711cca0fSRobert Marko			phy-handle = <&phy25>;
671*711cca0fSRobert Marko			phy-mode = "qsgmii";
672*711cca0fSRobert Marko			phys = <&serdes 5>;
673*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
674*711cca0fSRobert Marko		};
675*711cca0fSRobert Marko
676*711cca0fSRobert Marko		port22: port@22 {
677*711cca0fSRobert Marko			reg = <22>;
678*711cca0fSRobert Marko			phy-handle = <&phy26>;
679*711cca0fSRobert Marko			phy-mode = "qsgmii";
680*711cca0fSRobert Marko			phys = <&serdes 5>;
681*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
682*711cca0fSRobert Marko		};
683*711cca0fSRobert Marko
684*711cca0fSRobert Marko		port23: port@23 {
685*711cca0fSRobert Marko			reg = <23>;
686*711cca0fSRobert Marko			phy-handle = <&phy27>;
687*711cca0fSRobert Marko			phy-mode = "qsgmii";
688*711cca0fSRobert Marko			phys = <&serdes 5>;
689*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
690*711cca0fSRobert Marko		};
691*711cca0fSRobert Marko
692*711cca0fSRobert Marko		port24: port@24 {
693*711cca0fSRobert Marko			reg = <24>;
694*711cca0fSRobert Marko			phys = <&serdes 6>;
695*711cca0fSRobert Marko			phy-mode = "10gbase-r";
696*711cca0fSRobert Marko			sfp = <&sfp0>;
697*711cca0fSRobert Marko			managed = "in-band-status";
698*711cca0fSRobert Marko			microchip,bandwidth = <10000>;
699*711cca0fSRobert Marko			microchip,sd-sgpio = <24>;
700*711cca0fSRobert Marko		};
701*711cca0fSRobert Marko
702*711cca0fSRobert Marko		port25: port@25 {
703*711cca0fSRobert Marko			reg = <25>;
704*711cca0fSRobert Marko			phys = <&serdes 7>;
705*711cca0fSRobert Marko			phy-mode = "10gbase-r";
706*711cca0fSRobert Marko			sfp = <&sfp1>;
707*711cca0fSRobert Marko			managed = "in-band-status";
708*711cca0fSRobert Marko			microchip,bandwidth = <10000>;
709*711cca0fSRobert Marko			microchip,sd-sgpio = <28>;
710*711cca0fSRobert Marko		};
711*711cca0fSRobert Marko
712*711cca0fSRobert Marko		port26: port@26 {
713*711cca0fSRobert Marko			reg = <26>;
714*711cca0fSRobert Marko			phys = <&serdes 8>;
715*711cca0fSRobert Marko			phy-mode = "10gbase-r";
716*711cca0fSRobert Marko			sfp = <&sfp2>;
717*711cca0fSRobert Marko			managed = "in-band-status";
718*711cca0fSRobert Marko			microchip,bandwidth = <10000>;
719*711cca0fSRobert Marko			microchip,sd-sgpio = <32>;
720*711cca0fSRobert Marko		};
721*711cca0fSRobert Marko
722*711cca0fSRobert Marko		port27: port@27 {
723*711cca0fSRobert Marko			reg = <27>;
724*711cca0fSRobert Marko			phys = <&serdes 9>;
725*711cca0fSRobert Marko			phy-mode = "10gbase-r";
726*711cca0fSRobert Marko			sfp = <&sfp3>;
727*711cca0fSRobert Marko			managed = "in-band-status";
728*711cca0fSRobert Marko			microchip,bandwidth = <10000>;
729*711cca0fSRobert Marko			microchip,sd-sgpio = <36>;
730*711cca0fSRobert Marko		};
731*711cca0fSRobert Marko
732*711cca0fSRobert Marko		port29: port@29 {
733*711cca0fSRobert Marko			reg = <29>;
734*711cca0fSRobert Marko			phy-handle = <&phy3>;
735*711cca0fSRobert Marko			phy-mode = "rgmii-id";
736*711cca0fSRobert Marko			microchip,bandwidth = <1000>;
737*711cca0fSRobert Marko		};
738*711cca0fSRobert Marko	};
739*711cca0fSRobert Marko};
740*711cca0fSRobert Marko
741*711cca0fSRobert Marko&tmon {
742*711cca0fSRobert Marko	pinctrl-0 = <&fan_pins>;
743*711cca0fSRobert Marko	pinctrl-names = "default";
744*711cca0fSRobert Marko};
745*711cca0fSRobert Marko
746*711cca0fSRobert Marko&usart0 {
747*711cca0fSRobert Marko	pinctrl-0 = <&fc0_pins>;
748*711cca0fSRobert Marko	pinctrl-names = "default";
749*711cca0fSRobert Marko	status = "okay";
750*711cca0fSRobert Marko};
751*711cca0fSRobert Marko
752*711cca0fSRobert Marko&usb {
753*711cca0fSRobert Marko	pinctrl-0 = <&usb_ulpi_pins>, <&usb_rst_pins>, <&usb_over_pins>, <&usb_power_pins>;
754*711cca0fSRobert Marko	pinctrl-names = "default";
755*711cca0fSRobert Marko	status = "okay";
756*711cca0fSRobert Marko};
757