xref: /linux/scripts/dtc/include-prefixes/arm64/mediatek/mt7988a-bananapi-bpi-r4-pro.dtsi (revision 0cac5ce06e524755b3dac1e0a060b05992076d93)
1*f397471aSFrank Wunderlich// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2*f397471aSFrank Wunderlich/*
3*f397471aSFrank Wunderlich * Copyright (C) 2025 MediaTek Inc.
4*f397471aSFrank Wunderlich * Author: Sam.Shih <sam.shih@mediatek.com>
5*f397471aSFrank Wunderlich * Author: Frank Wunderlich <frank-w@public-files.de>
6*f397471aSFrank Wunderlich */
7*f397471aSFrank Wunderlich
8*f397471aSFrank Wunderlich/dts-v1/;
9*f397471aSFrank Wunderlich
10*f397471aSFrank Wunderlich#include "mt7988a.dtsi"
11*f397471aSFrank Wunderlich#include <dt-bindings/gpio/gpio.h>
12*f397471aSFrank Wunderlich#include <dt-bindings/input/input.h>
13*f397471aSFrank Wunderlich#include <dt-bindings/leds/common.h>
14*f397471aSFrank Wunderlich#include <dt-bindings/regulator/richtek,rt5190a-regulator.h>
15*f397471aSFrank Wunderlich
16*f397471aSFrank Wunderlich/ {
17*f397471aSFrank Wunderlich	aliases {
18*f397471aSFrank Wunderlich		ethernet0 = &gmac0;
19*f397471aSFrank Wunderlich		i2c0 = &i2c0;
20*f397471aSFrank Wunderlich		i2c1 = &i2c1;
21*f397471aSFrank Wunderlich		i2c2 = &i2c2;
22*f397471aSFrank Wunderlich		/* PCA9548 (0-0070) provides 4 i2c channels */
23*f397471aSFrank Wunderlich		i2c3 = &imux0;
24*f397471aSFrank Wunderlich		i2c4 = &imux1_sfp1;
25*f397471aSFrank Wunderlich		i2c5 = &imux2_sfp2;
26*f397471aSFrank Wunderlich		i2c6 = &imux3_wifi;
27*f397471aSFrank Wunderlich	};
28*f397471aSFrank Wunderlich
29*f397471aSFrank Wunderlich	chosen {
30*f397471aSFrank Wunderlich		stdout-path = &serial0;
31*f397471aSFrank Wunderlich	};
32*f397471aSFrank Wunderlich
33*f397471aSFrank Wunderlich	fan: pwm-fan {
34*f397471aSFrank Wunderlich		compatible = "pwm-fan";
35*f397471aSFrank Wunderlich		/* cooling level (0, 1, 2, 3) : (0% duty, 30% duty, 50% duty, 100% duty) */
36*f397471aSFrank Wunderlich		cooling-levels = <0 80 128 255>;
37*f397471aSFrank Wunderlich		pinctrl-0 = <&pwm0_pins>;
38*f397471aSFrank Wunderlich		pinctrl-names = "default";
39*f397471aSFrank Wunderlich		pwms = <&pwm 0 50000>;
40*f397471aSFrank Wunderlich		#cooling-cells = <2>;
41*f397471aSFrank Wunderlich	};
42*f397471aSFrank Wunderlich
43*f397471aSFrank Wunderlich	gpio-keys {
44*f397471aSFrank Wunderlich		compatible = "gpio-keys";
45*f397471aSFrank Wunderlich
46*f397471aSFrank Wunderlich		button-reset {
47*f397471aSFrank Wunderlich			label = "reset";
48*f397471aSFrank Wunderlich			gpios = <&pio 13 GPIO_ACTIVE_LOW>;
49*f397471aSFrank Wunderlich			linux,code = <KEY_RESTART>;
50*f397471aSFrank Wunderlich		};
51*f397471aSFrank Wunderlich
52*f397471aSFrank Wunderlich		button-wps {
53*f397471aSFrank Wunderlich			label = "WPS";
54*f397471aSFrank Wunderlich			gpios = <&pio 14 GPIO_ACTIVE_LOW>;
55*f397471aSFrank Wunderlich			linux,code = <KEY_WPS_BUTTON>;
56*f397471aSFrank Wunderlich		};
57*f397471aSFrank Wunderlich	};
58*f397471aSFrank Wunderlich
59*f397471aSFrank Wunderlich	gpio-leds {
60*f397471aSFrank Wunderlich		compatible = "gpio-leds";
61*f397471aSFrank Wunderlich
62*f397471aSFrank Wunderlich		led_red: sys-led-red {
63*f397471aSFrank Wunderlich			color = <LED_COLOR_ID_RED>;
64*f397471aSFrank Wunderlich			gpios = <&pca9555 15 GPIO_ACTIVE_HIGH>;
65*f397471aSFrank Wunderlich			default-state = "on";
66*f397471aSFrank Wunderlich		};
67*f397471aSFrank Wunderlich
68*f397471aSFrank Wunderlich		led_blue: sys-led-blue {
69*f397471aSFrank Wunderlich			color = <LED_COLOR_ID_BLUE>;
70*f397471aSFrank Wunderlich			gpios = <&pca9555 14 GPIO_ACTIVE_HIGH>;
71*f397471aSFrank Wunderlich			default-state = "on";
72*f397471aSFrank Wunderlich		};
73*f397471aSFrank Wunderlich	};
74*f397471aSFrank Wunderlich
75*f397471aSFrank Wunderlich	reg_1p8v: regulator-dvdd1v8 {
76*f397471aSFrank Wunderlich		compatible = "regulator-fixed";
77*f397471aSFrank Wunderlich		regulator-name = "DVDD1V8_SOC";
78*f397471aSFrank Wunderlich		regulator-min-microvolt = <1800000>;
79*f397471aSFrank Wunderlich		regulator-max-microvolt = <1800000>;
80*f397471aSFrank Wunderlich		regulator-boot-on;
81*f397471aSFrank Wunderlich		regulator-always-on;
82*f397471aSFrank Wunderlich	};
83*f397471aSFrank Wunderlich
84*f397471aSFrank Wunderlich	reg_3p3v: regulator-3v3vd {
85*f397471aSFrank Wunderlich		compatible = "regulator-fixed";
86*f397471aSFrank Wunderlich		regulator-name = "3V3VD";
87*f397471aSFrank Wunderlich		regulator-min-microvolt = <3300000>;
88*f397471aSFrank Wunderlich		regulator-max-microvolt = <3300000>;
89*f397471aSFrank Wunderlich		regulator-boot-on;
90*f397471aSFrank Wunderlich		regulator-always-on;
91*f397471aSFrank Wunderlich	};
92*f397471aSFrank Wunderlich
93*f397471aSFrank Wunderlich	/* SFP1 cage (LAN) */
94*f397471aSFrank Wunderlich	sfp1: sfp1 {
95*f397471aSFrank Wunderlich		compatible = "sff,sfp";
96*f397471aSFrank Wunderlich		i2c-bus = <&imux1_sfp1>;
97*f397471aSFrank Wunderlich		los-gpios = <&pio 70 GPIO_ACTIVE_HIGH>;
98*f397471aSFrank Wunderlich		mod-def0-gpios = <&pio 69 GPIO_ACTIVE_LOW>;
99*f397471aSFrank Wunderlich		tx-disable-gpios = <&pio 21 GPIO_ACTIVE_HIGH>;
100*f397471aSFrank Wunderlich		maximum-power-milliwatt = <3000>;
101*f397471aSFrank Wunderlich	};
102*f397471aSFrank Wunderlich
103*f397471aSFrank Wunderlich	/* SFP2 cage (WAN) */
104*f397471aSFrank Wunderlich	sfp2: sfp2 {
105*f397471aSFrank Wunderlich		compatible = "sff,sfp";
106*f397471aSFrank Wunderlich		i2c-bus = <&imux2_sfp2>;
107*f397471aSFrank Wunderlich		los-gpios = <&pio 2 GPIO_ACTIVE_HIGH>;
108*f397471aSFrank Wunderlich		mod-def0-gpios = <&pio 1 GPIO_ACTIVE_LOW>;
109*f397471aSFrank Wunderlich		tx-disable-gpios = <&pio 0 GPIO_ACTIVE_HIGH>;
110*f397471aSFrank Wunderlich		maximum-power-milliwatt = <3000>;
111*f397471aSFrank Wunderlich	};
112*f397471aSFrank Wunderlich};
113*f397471aSFrank Wunderlich
114*f397471aSFrank Wunderlich&cci {
115*f397471aSFrank Wunderlich	proc-supply = <&rt5190_buck3>;
116*f397471aSFrank Wunderlich};
117*f397471aSFrank Wunderlich
118*f397471aSFrank Wunderlich&cpu0 {
119*f397471aSFrank Wunderlich	proc-supply = <&rt5190_buck3>;
120*f397471aSFrank Wunderlich};
121*f397471aSFrank Wunderlich
122*f397471aSFrank Wunderlich&cpu1 {
123*f397471aSFrank Wunderlich	proc-supply = <&rt5190_buck3>;
124*f397471aSFrank Wunderlich};
125*f397471aSFrank Wunderlich
126*f397471aSFrank Wunderlich&cpu2 {
127*f397471aSFrank Wunderlich	proc-supply = <&rt5190_buck3>;
128*f397471aSFrank Wunderlich};
129*f397471aSFrank Wunderlich
130*f397471aSFrank Wunderlich&cpu3 {
131*f397471aSFrank Wunderlich	proc-supply = <&rt5190_buck3>;
132*f397471aSFrank Wunderlich};
133*f397471aSFrank Wunderlich
134*f397471aSFrank Wunderlich&cpu_thermal {
135*f397471aSFrank Wunderlich	trips {
136*f397471aSFrank Wunderlich		cpu_trip_hot: hot {
137*f397471aSFrank Wunderlich			temperature = <120000>;
138*f397471aSFrank Wunderlich			hysteresis = <2000>;
139*f397471aSFrank Wunderlich			type = "hot";
140*f397471aSFrank Wunderlich		};
141*f397471aSFrank Wunderlich
142*f397471aSFrank Wunderlich		cpu_trip_active_high: active-high {
143*f397471aSFrank Wunderlich			temperature = <115000>;
144*f397471aSFrank Wunderlich			hysteresis = <2000>;
145*f397471aSFrank Wunderlich			type = "active";
146*f397471aSFrank Wunderlich		};
147*f397471aSFrank Wunderlich
148*f397471aSFrank Wunderlich		cpu_trip_active_med: active-med {
149*f397471aSFrank Wunderlich			temperature = <85000>;
150*f397471aSFrank Wunderlich			hysteresis = <2000>;
151*f397471aSFrank Wunderlich			type = "active";
152*f397471aSFrank Wunderlich		};
153*f397471aSFrank Wunderlich
154*f397471aSFrank Wunderlich		cpu_trip_active_low: active-low {
155*f397471aSFrank Wunderlich			temperature = <40000>;
156*f397471aSFrank Wunderlich			hysteresis = <2000>;
157*f397471aSFrank Wunderlich			type = "active";
158*f397471aSFrank Wunderlich		};
159*f397471aSFrank Wunderlich	};
160*f397471aSFrank Wunderlich
161*f397471aSFrank Wunderlich	cooling-maps {
162*f397471aSFrank Wunderlich		map-cpu-active-high {
163*f397471aSFrank Wunderlich			/* active: set fan to cooling level 2 */
164*f397471aSFrank Wunderlich			cooling-device = <&fan 3 3>;
165*f397471aSFrank Wunderlich			trip = <&cpu_trip_active_high>;
166*f397471aSFrank Wunderlich		};
167*f397471aSFrank Wunderlich
168*f397471aSFrank Wunderlich		map-cpu-active-med {
169*f397471aSFrank Wunderlich			/* active: set fan to cooling level 1 */
170*f397471aSFrank Wunderlich			cooling-device = <&fan 2 2>;
171*f397471aSFrank Wunderlich			trip = <&cpu_trip_active_med>;
172*f397471aSFrank Wunderlich		};
173*f397471aSFrank Wunderlich
174*f397471aSFrank Wunderlich		map-cpu-active-low {
175*f397471aSFrank Wunderlich			/* active: set fan to cooling level 0 */
176*f397471aSFrank Wunderlich			cooling-device = <&fan 1 1>;
177*f397471aSFrank Wunderlich			trip = <&cpu_trip_active_low>;
178*f397471aSFrank Wunderlich		};
179*f397471aSFrank Wunderlich	};
180*f397471aSFrank Wunderlich};
181*f397471aSFrank Wunderlich
182*f397471aSFrank Wunderlich&eth {
183*f397471aSFrank Wunderlich	pinctrl-0 = <&mdio0_pins>;
184*f397471aSFrank Wunderlich	pinctrl-names = "default";
185*f397471aSFrank Wunderlich	status = "okay";
186*f397471aSFrank Wunderlich};
187*f397471aSFrank Wunderlich
188*f397471aSFrank Wunderlich&fan {
189*f397471aSFrank Wunderlich	pinctrl-0 = <&pwm0_pins>;
190*f397471aSFrank Wunderlich	pinctrl-names = "default";
191*f397471aSFrank Wunderlich	pwms = <&pwm 0 50000>;
192*f397471aSFrank Wunderlich	status = "okay";
193*f397471aSFrank Wunderlich};
194*f397471aSFrank Wunderlich
195*f397471aSFrank Wunderlich&gmac0 {
196*f397471aSFrank Wunderlich	status = "okay";
197*f397471aSFrank Wunderlich};
198*f397471aSFrank Wunderlich
199*f397471aSFrank Wunderlich&gsw_phy0 {
200*f397471aSFrank Wunderlich	pinctrl-0 = <&gbe0_led0_pins>;
201*f397471aSFrank Wunderlich	pinctrl-names = "gbe-led";
202*f397471aSFrank Wunderlich};
203*f397471aSFrank Wunderlich
204*f397471aSFrank Wunderlich&gsw_phy0_led0 {
205*f397471aSFrank Wunderlich	color = <LED_COLOR_ID_YELLOW>;
206*f397471aSFrank Wunderlich	status = "okay";
207*f397471aSFrank Wunderlich};
208*f397471aSFrank Wunderlich
209*f397471aSFrank Wunderlich&gsw_port0 {
210*f397471aSFrank Wunderlich	label = "mgmt";
211*f397471aSFrank Wunderlich};
212*f397471aSFrank Wunderlich
213*f397471aSFrank Wunderlich/* R4Pro has only port 0 connected, so disable the others */
214*f397471aSFrank Wunderlich&gsw_phy1 {
215*f397471aSFrank Wunderlich	status = "disabled";
216*f397471aSFrank Wunderlich};
217*f397471aSFrank Wunderlich
218*f397471aSFrank Wunderlich&gsw_port1 {
219*f397471aSFrank Wunderlich	status = "disabled";
220*f397471aSFrank Wunderlich};
221*f397471aSFrank Wunderlich
222*f397471aSFrank Wunderlich&gsw_phy2 {
223*f397471aSFrank Wunderlich	status = "disabled";
224*f397471aSFrank Wunderlich};
225*f397471aSFrank Wunderlich
226*f397471aSFrank Wunderlich&gsw_port2 {
227*f397471aSFrank Wunderlich	status = "disabled";
228*f397471aSFrank Wunderlich};
229*f397471aSFrank Wunderlich
230*f397471aSFrank Wunderlich&gsw_phy3 {
231*f397471aSFrank Wunderlich	status = "disabled";
232*f397471aSFrank Wunderlich};
233*f397471aSFrank Wunderlich
234*f397471aSFrank Wunderlich&gsw_port3 {
235*f397471aSFrank Wunderlich	status = "disabled";
236*f397471aSFrank Wunderlich};
237*f397471aSFrank Wunderlich
238*f397471aSFrank Wunderlich&i2c0 {
239*f397471aSFrank Wunderlich	pinctrl-0 = <&i2c0_pins>;
240*f397471aSFrank Wunderlich	pinctrl-names = "default";
241*f397471aSFrank Wunderlich	status = "okay";
242*f397471aSFrank Wunderlich
243*f397471aSFrank Wunderlich	rt5190a_64: rt5190a@64 {
244*f397471aSFrank Wunderlich		compatible = "richtek,rt5190a";
245*f397471aSFrank Wunderlich		reg = <0x64>;
246*f397471aSFrank Wunderlich		vin2-supply = <&rt5190_buck1>;
247*f397471aSFrank Wunderlich		vin3-supply = <&rt5190_buck1>;
248*f397471aSFrank Wunderlich		vin4-supply = <&rt5190_buck1>;
249*f397471aSFrank Wunderlich
250*f397471aSFrank Wunderlich		regulators {
251*f397471aSFrank Wunderlich			rt5190_buck1: buck1 {
252*f397471aSFrank Wunderlich				regulator-name = "rt5190a-buck1";
253*f397471aSFrank Wunderlich				regulator-min-microvolt = <5090000>;
254*f397471aSFrank Wunderlich				regulator-max-microvolt = <5090000>;
255*f397471aSFrank Wunderlich				regulator-allowed-modes =
256*f397471aSFrank Wunderlich				<RT5190A_OPMODE_AUTO RT5190A_OPMODE_FPWM>;
257*f397471aSFrank Wunderlich				regulator-boot-on;
258*f397471aSFrank Wunderlich				regulator-always-on;
259*f397471aSFrank Wunderlich			};
260*f397471aSFrank Wunderlich
261*f397471aSFrank Wunderlich			buck2 {
262*f397471aSFrank Wunderlich				regulator-name = "vcore";
263*f397471aSFrank Wunderlich				regulator-min-microvolt = <600000>;
264*f397471aSFrank Wunderlich				regulator-max-microvolt = <1400000>;
265*f397471aSFrank Wunderlich				regulator-boot-on;
266*f397471aSFrank Wunderlich				regulator-always-on;
267*f397471aSFrank Wunderlich			};
268*f397471aSFrank Wunderlich
269*f397471aSFrank Wunderlich			rt5190_buck3: buck3 {
270*f397471aSFrank Wunderlich				regulator-name = "vproc";
271*f397471aSFrank Wunderlich				regulator-min-microvolt = <600000>;
272*f397471aSFrank Wunderlich				regulator-max-microvolt = <1400000>;
273*f397471aSFrank Wunderlich				regulator-boot-on;
274*f397471aSFrank Wunderlich				regulator-always-on;
275*f397471aSFrank Wunderlich			};
276*f397471aSFrank Wunderlich
277*f397471aSFrank Wunderlich			buck4 {
278*f397471aSFrank Wunderlich				regulator-name = "rt5190a-buck4";
279*f397471aSFrank Wunderlich				regulator-min-microvolt = <1800000>;
280*f397471aSFrank Wunderlich				regulator-max-microvolt = <1800000>;
281*f397471aSFrank Wunderlich				regulator-allowed-modes =
282*f397471aSFrank Wunderlich				<RT5190A_OPMODE_AUTO RT5190A_OPMODE_FPWM>;
283*f397471aSFrank Wunderlich				regulator-boot-on;
284*f397471aSFrank Wunderlich				regulator-always-on;
285*f397471aSFrank Wunderlich			};
286*f397471aSFrank Wunderlich
287*f397471aSFrank Wunderlich			ldo {
288*f397471aSFrank Wunderlich				regulator-name = "rt5190a-ldo";
289*f397471aSFrank Wunderlich				regulator-min-microvolt = <1800000>;
290*f397471aSFrank Wunderlich				regulator-max-microvolt = <1800000>;
291*f397471aSFrank Wunderlich				regulator-boot-on;
292*f397471aSFrank Wunderlich				regulator-always-on;
293*f397471aSFrank Wunderlich			};
294*f397471aSFrank Wunderlich		};
295*f397471aSFrank Wunderlich	};
296*f397471aSFrank Wunderlich};
297*f397471aSFrank Wunderlich
298*f397471aSFrank Wunderlich&i2c1 {
299*f397471aSFrank Wunderlich	pinctrl-0 = <&i2c1_pins>;
300*f397471aSFrank Wunderlich	pinctrl-names = "default";
301*f397471aSFrank Wunderlich	status = "okay";
302*f397471aSFrank Wunderlich};
303*f397471aSFrank Wunderlich
304*f397471aSFrank Wunderlich&i2c2 {
305*f397471aSFrank Wunderlich	pinctrl-0 = <&i2c2_1_pins>;
306*f397471aSFrank Wunderlich	pinctrl-names = "default";
307*f397471aSFrank Wunderlich	status = "okay";
308*f397471aSFrank Wunderlich
309*f397471aSFrank Wunderlich	pca9545: i2c-mux@70 {
310*f397471aSFrank Wunderlich		compatible = "nxp,pca9545";
311*f397471aSFrank Wunderlich		reg = <0x70>;
312*f397471aSFrank Wunderlich		#address-cells = <1>;
313*f397471aSFrank Wunderlich		#size-cells = <0>;
314*f397471aSFrank Wunderlich
315*f397471aSFrank Wunderlich		imux0: i2c@0 {
316*f397471aSFrank Wunderlich			reg = <0>;
317*f397471aSFrank Wunderlich			#address-cells = <1>;
318*f397471aSFrank Wunderlich			#size-cells = <0>;
319*f397471aSFrank Wunderlich
320*f397471aSFrank Wunderlich			pca9555: i2c-gpio-expander@20 {
321*f397471aSFrank Wunderlich				compatible = "nxp,pca9555";
322*f397471aSFrank Wunderlich				reg = <0x20>;
323*f397471aSFrank Wunderlich				gpio-controller;
324*f397471aSFrank Wunderlich				#gpio-cells = <2>;
325*f397471aSFrank Wunderlich			};
326*f397471aSFrank Wunderlich
327*f397471aSFrank Wunderlich			rtc@51 {
328*f397471aSFrank Wunderlich				compatible = "nxp,pcf8563";
329*f397471aSFrank Wunderlich				reg = <0x51>;
330*f397471aSFrank Wunderlich			};
331*f397471aSFrank Wunderlich
332*f397471aSFrank Wunderlich			eeprom@57 {
333*f397471aSFrank Wunderlich				compatible = "atmel,24c02";
334*f397471aSFrank Wunderlich				reg = <0x57>;
335*f397471aSFrank Wunderlich				address-width = <8>;
336*f397471aSFrank Wunderlich				pagesize = <8>;
337*f397471aSFrank Wunderlich				size = <256>;
338*f397471aSFrank Wunderlich			};
339*f397471aSFrank Wunderlich		};
340*f397471aSFrank Wunderlich
341*f397471aSFrank Wunderlich		imux1_sfp1: i2c@1 {
342*f397471aSFrank Wunderlich			reg = <1>;
343*f397471aSFrank Wunderlich			#address-cells = <1>;
344*f397471aSFrank Wunderlich			#size-cells = <0>;
345*f397471aSFrank Wunderlich		};
346*f397471aSFrank Wunderlich
347*f397471aSFrank Wunderlich		imux2_sfp2: i2c@2 {
348*f397471aSFrank Wunderlich			reg = <2>;
349*f397471aSFrank Wunderlich			#address-cells = <1>;
350*f397471aSFrank Wunderlich			#size-cells = <0>;
351*f397471aSFrank Wunderlich		};
352*f397471aSFrank Wunderlich
353*f397471aSFrank Wunderlich		imux3_wifi: i2c@3 {
354*f397471aSFrank Wunderlich			reg = <3>;
355*f397471aSFrank Wunderlich			#address-cells = <1>;
356*f397471aSFrank Wunderlich			#size-cells = <0>;
357*f397471aSFrank Wunderlich		};
358*f397471aSFrank Wunderlich	};
359*f397471aSFrank Wunderlich};
360*f397471aSFrank Wunderlich
361*f397471aSFrank Wunderlich/* mPCIe SIM2 (11300000) */
362*f397471aSFrank Wunderlich&pcie0 {
363*f397471aSFrank Wunderlich	status = "okay";
364*f397471aSFrank Wunderlich};
365*f397471aSFrank Wunderlich
366*f397471aSFrank Wunderlich/* mPCIe (11310000 near leds) SIM3 */
367*f397471aSFrank Wunderlich&pcie1 {
368*f397471aSFrank Wunderlich	status = "okay";
369*f397471aSFrank Wunderlich};
370*f397471aSFrank Wunderlich
371*f397471aSFrank Wunderlich/* M.2 (11280000) 1L0 key-m SSD1 CN13 / key-b SIM1 CN15 */
372*f397471aSFrank Wunderlich&pcie2 {
373*f397471aSFrank Wunderlich	status = "okay";
374*f397471aSFrank Wunderlich};
375*f397471aSFrank Wunderlich
376*f397471aSFrank Wunderlich/* M.2 (11290000) 1L1 key-m SSD2 CN14 / key-b SIM2 CN18 */
377*f397471aSFrank Wunderlich&pcie3 {
378*f397471aSFrank Wunderlich	status = "okay";
379*f397471aSFrank Wunderlich};
380*f397471aSFrank Wunderlich
381*f397471aSFrank Wunderlich&pio {
382*f397471aSFrank Wunderlich	gbe0_led0_pins: gbe0-led0-pins {
383*f397471aSFrank Wunderlich		mux {
384*f397471aSFrank Wunderlich			function = "led";
385*f397471aSFrank Wunderlich			groups = "gbe0_led0";
386*f397471aSFrank Wunderlich		};
387*f397471aSFrank Wunderlich	};
388*f397471aSFrank Wunderlich
389*f397471aSFrank Wunderlich	i2c0_pins: i2c0-g0-pins {
390*f397471aSFrank Wunderlich		mux {
391*f397471aSFrank Wunderlich			function = "i2c";
392*f397471aSFrank Wunderlich			groups = "i2c0_1";
393*f397471aSFrank Wunderlich		};
394*f397471aSFrank Wunderlich	};
395*f397471aSFrank Wunderlich
396*f397471aSFrank Wunderlich	i2c1_pins: i2c1-g0-pins {
397*f397471aSFrank Wunderlich		mux {
398*f397471aSFrank Wunderlich			function = "i2c";
399*f397471aSFrank Wunderlich			groups = "i2c1_0";
400*f397471aSFrank Wunderlich		};
401*f397471aSFrank Wunderlich	};
402*f397471aSFrank Wunderlich
403*f397471aSFrank Wunderlich	i2c2_1_pins: i2c2-g1-pins {
404*f397471aSFrank Wunderlich		mux {
405*f397471aSFrank Wunderlich			function = "i2c";
406*f397471aSFrank Wunderlich			groups = "i2c2_1";
407*f397471aSFrank Wunderlich		};
408*f397471aSFrank Wunderlich	};
409*f397471aSFrank Wunderlich
410*f397471aSFrank Wunderlich	mdio0_pins: mdio0-pins {
411*f397471aSFrank Wunderlich		mux {
412*f397471aSFrank Wunderlich			function = "eth";
413*f397471aSFrank Wunderlich			groups = "mdc_mdio0";
414*f397471aSFrank Wunderlich		};
415*f397471aSFrank Wunderlich
416*f397471aSFrank Wunderlich		conf {
417*f397471aSFrank Wunderlich			pins = "SMI_0_MDC", "SMI_0_MDIO";
418*f397471aSFrank Wunderlich			drive-strength = <8>;
419*f397471aSFrank Wunderlich		};
420*f397471aSFrank Wunderlich	};
421*f397471aSFrank Wunderlich
422*f397471aSFrank Wunderlich	mmc0_pins_emmc_51: mmc0-emmc-51-pins {
423*f397471aSFrank Wunderlich		mux {
424*f397471aSFrank Wunderlich			function = "flash";
425*f397471aSFrank Wunderlich			groups = "emmc_51";
426*f397471aSFrank Wunderlich		};
427*f397471aSFrank Wunderlich	};
428*f397471aSFrank Wunderlich
429*f397471aSFrank Wunderlich	mmc0_pins_sdcard: mmc0-sdcard-pins {
430*f397471aSFrank Wunderlich		mux {
431*f397471aSFrank Wunderlich			function = "flash";
432*f397471aSFrank Wunderlich			groups = "sdcard";
433*f397471aSFrank Wunderlich		};
434*f397471aSFrank Wunderlich	};
435*f397471aSFrank Wunderlich
436*f397471aSFrank Wunderlich	/* 1L0 0=key-b (CN15), 1=key-m (CN13) */
437*f397471aSFrank Wunderlich	pcie-2-hog {
438*f397471aSFrank Wunderlich		gpio-hog;
439*f397471aSFrank Wunderlich		gpios = <79 GPIO_ACTIVE_HIGH>;
440*f397471aSFrank Wunderlich		output-high;
441*f397471aSFrank Wunderlich	};
442*f397471aSFrank Wunderlich
443*f397471aSFrank Wunderlich	/* 1L1 0=key-b (CN18), 1=key-m (CN14) */
444*f397471aSFrank Wunderlich	pcie-3-hog {
445*f397471aSFrank Wunderlich		gpio-hog;
446*f397471aSFrank Wunderlich		gpios = <63 GPIO_ACTIVE_HIGH>;
447*f397471aSFrank Wunderlich		output-high;
448*f397471aSFrank Wunderlich	};
449*f397471aSFrank Wunderlich
450*f397471aSFrank Wunderlich	pwm0_pins: pwm0-pins {
451*f397471aSFrank Wunderlich		mux {
452*f397471aSFrank Wunderlich			groups = "pwm0";
453*f397471aSFrank Wunderlich			function = "pwm";
454*f397471aSFrank Wunderlich		};
455*f397471aSFrank Wunderlich	};
456*f397471aSFrank Wunderlich
457*f397471aSFrank Wunderlich	spi0_flash_pins: spi0-flash-pins {
458*f397471aSFrank Wunderlich		mux {
459*f397471aSFrank Wunderlich			function = "spi";
460*f397471aSFrank Wunderlich			groups = "spi0", "spi0_wp_hold";
461*f397471aSFrank Wunderlich		};
462*f397471aSFrank Wunderlich	};
463*f397471aSFrank Wunderlich};
464*f397471aSFrank Wunderlich
465*f397471aSFrank Wunderlich&pwm {
466*f397471aSFrank Wunderlich	status = "okay";
467*f397471aSFrank Wunderlich};
468*f397471aSFrank Wunderlich
469*f397471aSFrank Wunderlich&serial0 {
470*f397471aSFrank Wunderlich	status = "okay";
471*f397471aSFrank Wunderlich};
472*f397471aSFrank Wunderlich
473*f397471aSFrank Wunderlich&spi0 {
474*f397471aSFrank Wunderlich	pinctrl-0 = <&spi0_flash_pins>;
475*f397471aSFrank Wunderlich	pinctrl-names = "default";
476*f397471aSFrank Wunderlich	status = "okay";
477*f397471aSFrank Wunderlich
478*f397471aSFrank Wunderlich	spi_nand: nand@0 {
479*f397471aSFrank Wunderlich		compatible = "spi-nand";
480*f397471aSFrank Wunderlich		reg = <0>;
481*f397471aSFrank Wunderlich		spi-max-frequency = <52000000>;
482*f397471aSFrank Wunderlich		spi-rx-bus-width = <4>;
483*f397471aSFrank Wunderlich		spi-tx-bus-width = <4>;
484*f397471aSFrank Wunderlich	};
485*f397471aSFrank Wunderlich};
486*f397471aSFrank Wunderlich
487*f397471aSFrank Wunderlich&spi_nand {
488*f397471aSFrank Wunderlich	partitions {
489*f397471aSFrank Wunderlich		compatible = "fixed-partitions";
490*f397471aSFrank Wunderlich		#address-cells = <1>;
491*f397471aSFrank Wunderlich		#size-cells = <1>;
492*f397471aSFrank Wunderlich
493*f397471aSFrank Wunderlich		partition@0 {
494*f397471aSFrank Wunderlich			reg = <0x0 0x200000>;
495*f397471aSFrank Wunderlich			label = "bl2";
496*f397471aSFrank Wunderlich		};
497*f397471aSFrank Wunderlich
498*f397471aSFrank Wunderlich		partition@200000 {
499*f397471aSFrank Wunderlich			compatible = "linux,ubi";
500*f397471aSFrank Wunderlich			reg = <0x200000 0xfe00000>;
501*f397471aSFrank Wunderlich			label = "ubi";
502*f397471aSFrank Wunderlich		};
503*f397471aSFrank Wunderlich	};
504*f397471aSFrank Wunderlich};
505*f397471aSFrank Wunderlich
506*f397471aSFrank Wunderlich/* back USB */
507*f397471aSFrank Wunderlich&ssusb0 {
508*f397471aSFrank Wunderlich	/* Use U2P only instead of both U3P/U2P due to U3P serdes shared with pcie2 */
509*f397471aSFrank Wunderlich	phys = <&xphyu2port0 PHY_TYPE_USB2>;
510*f397471aSFrank Wunderlich	mediatek,u3p-dis-msk = <1>;
511*f397471aSFrank Wunderlich	status = "okay";
512*f397471aSFrank Wunderlich};
513*f397471aSFrank Wunderlich
514*f397471aSFrank Wunderlich/* front USB */
515*f397471aSFrank Wunderlich&ssusb1 {
516*f397471aSFrank Wunderlich	status = "okay";
517*f397471aSFrank Wunderlich};
518*f397471aSFrank Wunderlich
519*f397471aSFrank Wunderlich&switch {
520*f397471aSFrank Wunderlich	dsa,member = <1 0>;
521*f397471aSFrank Wunderlich	status = "okay";
522*f397471aSFrank Wunderlich};
523*f397471aSFrank Wunderlich
524*f397471aSFrank Wunderlich&tphy {
525*f397471aSFrank Wunderlich	status = "okay";
526*f397471aSFrank Wunderlich};
527*f397471aSFrank Wunderlich
528*f397471aSFrank Wunderlich&watchdog {
529*f397471aSFrank Wunderlich	status = "okay";
530*f397471aSFrank Wunderlich};
531*f397471aSFrank Wunderlich
532*f397471aSFrank Wunderlich&xsphy {
533*f397471aSFrank Wunderlich	status = "okay";
534*f397471aSFrank Wunderlich};
535