1*518272afSLeonard Göhrs// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
2*518272afSLeonard Göhrs/*
3*518272afSLeonard Göhrs * Copyright (C) 2020 STMicroelectronics - All Rights Reserved
4*518272afSLeonard Göhrs * Copyright (C) 2021 Rouven Czerwinski, Pengutronix
5*518272afSLeonard Göhrs * Copyright (C) 2023 Leonard Göhrs, Pengutronix
6*518272afSLeonard Göhrs */
7*518272afSLeonard Göhrs
8*518272afSLeonard Göhrs#include "stm32mp15xc.dtsi"
9*518272afSLeonard Göhrs#include "stm32mp15xx-osd32.dtsi"
10*518272afSLeonard Göhrs#include "stm32mp15xxac-pinctrl.dtsi"
11*518272afSLeonard Göhrs
12*518272afSLeonard Göhrs#include <dt-bindings/gpio/gpio.h>
13*518272afSLeonard Göhrs#include <dt-bindings/input/input.h>
14*518272afSLeonard Göhrs#include <dt-bindings/leds/common.h>
15*518272afSLeonard Göhrs#include <dt-bindings/pwm/pwm.h>
16*518272afSLeonard Göhrs
17*518272afSLeonard Göhrs/ {
18*518272afSLeonard Göhrs	aliases {
19*518272afSLeonard Göhrs		ethernet0 = &ethernet0;
20*518272afSLeonard Göhrs		ethernet1 = &port_uplink;
21*518272afSLeonard Göhrs		ethernet2 = &port_dut;
22*518272afSLeonard Göhrs		mmc1 = &sdmmc2;
23*518272afSLeonard Göhrs		serial0 = &uart4;
24*518272afSLeonard Göhrs		serial1 = &usart3;
25*518272afSLeonard Göhrs	};
26*518272afSLeonard Göhrs
27*518272afSLeonard Göhrs	chosen {
28*518272afSLeonard Göhrs		stdout-path = &uart4;
29*518272afSLeonard Göhrs	};
30*518272afSLeonard Göhrs
31*518272afSLeonard Göhrs	led-controller-0 {
32*518272afSLeonard Göhrs		compatible = "gpio-leds";
33*518272afSLeonard Göhrs
34*518272afSLeonard Göhrs		led-0 {
35*518272afSLeonard Göhrs			label = "tac:green:user1";
36*518272afSLeonard Göhrs			gpios = <&gpiof 10 GPIO_ACTIVE_HIGH>;
37*518272afSLeonard Göhrs			linux,default-trigger = "heartbeat";
38*518272afSLeonard Göhrs		};
39*518272afSLeonard Göhrs
40*518272afSLeonard Göhrs		led-1 {
41*518272afSLeonard Göhrs			label = "tac:green:user2";
42*518272afSLeonard Göhrs			gpios = <&gpiog 7 GPIO_ACTIVE_HIGH>;
43*518272afSLeonard Göhrs		};
44*518272afSLeonard Göhrs
45*518272afSLeonard Göhrs		led-2 {
46*518272afSLeonard Göhrs			label = "tac:green:statusdut";
47*518272afSLeonard Göhrs			gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
48*518272afSLeonard Göhrs		};
49*518272afSLeonard Göhrs
50*518272afSLeonard Göhrs		/* led-3 and led-4 are internally connected antiparallel to one
51*518272afSLeonard Göhrs		 * another inside the ethernet jack like this:
52*518272afSLeonard Göhrs		 * GPIOA14 ---+---|led-3|>--+--- GPIOD15
53*518272afSLeonard Göhrs		 *            +--<|led-4|---+
54*518272afSLeonard Göhrs		 * E.g. only one of the LEDs can be illuminated at a time while
55*518272afSLeonard Göhrs		 * the other output must be driven low.
56*518272afSLeonard Göhrs		 * This should likely be implemented using a multi color LED
57*518272afSLeonard Göhrs		 * driver for antiparallel LEDs.
58*518272afSLeonard Göhrs		 */
59*518272afSLeonard Göhrs		led-3 {
60*518272afSLeonard Göhrs			label = "tac:green:statuslab";
61*518272afSLeonard Göhrs			gpios = <&gpioa 14 GPIO_ACTIVE_HIGH>;
62*518272afSLeonard Göhrs		};
63*518272afSLeonard Göhrs
64*518272afSLeonard Göhrs		led-4 {
65*518272afSLeonard Göhrs			label = "tac:orange:statuslab";
66*518272afSLeonard Göhrs			gpios = <&gpiod 15 GPIO_ACTIVE_HIGH>;
67*518272afSLeonard Göhrs		};
68*518272afSLeonard Göhrs	};
69*518272afSLeonard Göhrs
70*518272afSLeonard Göhrs	gpio-keys {
71*518272afSLeonard Göhrs		compatible = "gpio-keys";
72*518272afSLeonard Göhrs
73*518272afSLeonard Göhrs		button-lower {
74*518272afSLeonard Göhrs			label = "USER_BTN2";
75*518272afSLeonard Göhrs			linux,code = <KEY_ESC>;
76*518272afSLeonard Göhrs			gpios = <&gpioe 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
77*518272afSLeonard Göhrs		};
78*518272afSLeonard Göhrs
79*518272afSLeonard Göhrs		button-upper {
80*518272afSLeonard Göhrs			label = "USER_BTN";
81*518272afSLeonard Göhrs			linux,code = <KEY_HOME>;
82*518272afSLeonard Göhrs			gpios = <&gpioi 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
83*518272afSLeonard Göhrs		};
84*518272afSLeonard Göhrs	};
85*518272afSLeonard Göhrs
86*518272afSLeonard Göhrs	/* supplied by either barrel connector or PoE */
87*518272afSLeonard Göhrs	reg_12v: regulator-12v {
88*518272afSLeonard Göhrs		compatible = "regulator-fixed";
89*518272afSLeonard Göhrs		regulator-name = "12V";
90*518272afSLeonard Göhrs		regulator-min-microvolt = <12000000>;
91*518272afSLeonard Göhrs		regulator-max-microvolt = <12000000>;
92*518272afSLeonard Göhrs		regulator-always-on;
93*518272afSLeonard Göhrs	};
94*518272afSLeonard Göhrs
95*518272afSLeonard Göhrs	reg_5v: regulator-5v {
96*518272afSLeonard Göhrs		compatible = "regulator-fixed";
97*518272afSLeonard Göhrs		regulator-name = "5V";
98*518272afSLeonard Göhrs		regulator-min-microvolt = <5000000>;
99*518272afSLeonard Göhrs		regulator-max-microvolt = <5000000>;
100*518272afSLeonard Göhrs		regulator-always-on;
101*518272afSLeonard Göhrs		vin-supply = <&reg_12v>;
102*518272afSLeonard Göhrs	};
103*518272afSLeonard Göhrs
104*518272afSLeonard Göhrs	reg_1v2: regulator-1v2 {
105*518272afSLeonard Göhrs		compatible = "regulator-fixed";
106*518272afSLeonard Göhrs		regulator-name = "1V2";
107*518272afSLeonard Göhrs		regulator-min-microvolt = <1200000>;
108*518272afSLeonard Göhrs		regulator-max-microvolt = <1200000>;
109*518272afSLeonard Göhrs		regulator-always-on;
110*518272afSLeonard Göhrs		vin-supply = <&reg_5v>;
111*518272afSLeonard Göhrs	};
112*518272afSLeonard Göhrs
113*518272afSLeonard Göhrs	reg_pb_5v: regulator-pb-5v {
114*518272afSLeonard Göhrs		compatible = "regulator-fixed";
115*518272afSLeonard Göhrs		regulator-name = "5V_POWERBOARD";
116*518272afSLeonard Göhrs		regulator-min-microvolt = <5000000>;
117*518272afSLeonard Göhrs		regulator-max-microvolt = <5000000>;
118*518272afSLeonard Göhrs		regulator-always-on;
119*518272afSLeonard Göhrs		vin-supply = <&reg_5v>;
120*518272afSLeonard Göhrs	};
121*518272afSLeonard Göhrs
122*518272afSLeonard Göhrs	reg_pb_3v3: regulator-pb-3v3 {
123*518272afSLeonard Göhrs		compatible = "regulator-fixed";
124*518272afSLeonard Göhrs		regulator-name = "3V3_POWERBOARD";
125*518272afSLeonard Göhrs		regulator-min-microvolt = <3300000>;
126*518272afSLeonard Göhrs		regulator-max-microvolt = <3300000>;
127*518272afSLeonard Göhrs		regulator-always-on;
128*518272afSLeonard Göhrs		vin-supply = <&reg_pb_5v>;
129*518272afSLeonard Göhrs	};
130*518272afSLeonard Göhrs
131*518272afSLeonard Göhrs	output-iobus-12v {
132*518272afSLeonard Göhrs		compatible = "regulator-output";
133*518272afSLeonard Göhrs		vout-supply = <&reg_iobus_12v>;
134*518272afSLeonard Göhrs	};
135*518272afSLeonard Göhrs
136*518272afSLeonard Göhrs	output-vuart {
137*518272afSLeonard Göhrs		compatible = "regulator-output";
138*518272afSLeonard Göhrs		vout-supply = <&v3v3_hdmi>;
139*518272afSLeonard Göhrs	};
140*518272afSLeonard Göhrs};
141*518272afSLeonard Göhrs
142*518272afSLeonard Göhrsbaseboard_eeprom: &sip_eeprom {
143*518272afSLeonard Göhrs};
144*518272afSLeonard Göhrs
145*518272afSLeonard Göhrs&adc {
146*518272afSLeonard Göhrs	pinctrl-names = "default";
147*518272afSLeonard Göhrs	pinctrl-0 = <&adc1_ain_pins_a>;
148*518272afSLeonard Göhrs	vdd-supply = <&vdd>;
149*518272afSLeonard Göhrs	vdda-supply = <&vdda>;
150*518272afSLeonard Göhrs	vref-supply = <&vrefbuf>;
151*518272afSLeonard Göhrs	status = "okay";
152*518272afSLeonard Göhrs
153*518272afSLeonard Göhrs	adc1: adc@0 {
154*518272afSLeonard Göhrs		st,adc-channels = <0 1 2 5 9 10 13 15>;
155*518272afSLeonard Göhrs		st,min-sample-time-nsecs = <5000>;
156*518272afSLeonard Göhrs		#address-cells = <1>;
157*518272afSLeonard Göhrs		#size-cells = <0>;
158*518272afSLeonard Göhrs		status = "okay";
159*518272afSLeonard Göhrs
160*518272afSLeonard Göhrs		channel@0 {
161*518272afSLeonard Göhrs			reg = <0>;
162*518272afSLeonard Göhrs			label = "HOST_2_CURR_FB";
163*518272afSLeonard Göhrs		};
164*518272afSLeonard Göhrs
165*518272afSLeonard Göhrs		channel@1 {
166*518272afSLeonard Göhrs			reg = <1>;
167*518272afSLeonard Göhrs			label = "HOST_3_CURR_FB";
168*518272afSLeonard Göhrs		};
169*518272afSLeonard Göhrs
170*518272afSLeonard Göhrs		channel@2 {
171*518272afSLeonard Göhrs			reg = <2>;
172*518272afSLeonard Göhrs			label = "OUT_0_FB";
173*518272afSLeonard Göhrs		};
174*518272afSLeonard Göhrs
175*518272afSLeonard Göhrs		channel@5 {
176*518272afSLeonard Göhrs			reg = <5>;
177*518272afSLeonard Göhrs			label = "IOBUS_CURR_FB";
178*518272afSLeonard Göhrs		};
179*518272afSLeonard Göhrs
180*518272afSLeonard Göhrs		channel@9 {
181*518272afSLeonard Göhrs			reg = <9>;
182*518272afSLeonard Göhrs			label = "IOBUS_VOLT_FB";
183*518272afSLeonard Göhrs		};
184*518272afSLeonard Göhrs
185*518272afSLeonard Göhrs		channel@10 {
186*518272afSLeonard Göhrs			reg = <10>;
187*518272afSLeonard Göhrs			label = "OUT_1_FB";
188*518272afSLeonard Göhrs		};
189*518272afSLeonard Göhrs
190*518272afSLeonard Göhrs		channel@13 {
191*518272afSLeonard Göhrs			reg = <13>;
192*518272afSLeonard Göhrs			label = "HOST_CURR_FB";
193*518272afSLeonard Göhrs		};
194*518272afSLeonard Göhrs
195*518272afSLeonard Göhrs		channel@15 {
196*518272afSLeonard Göhrs			reg = <15>;
197*518272afSLeonard Göhrs			label = "HOST_1_CURR_FB";
198*518272afSLeonard Göhrs		};
199*518272afSLeonard Göhrs	};
200*518272afSLeonard Göhrs
201*518272afSLeonard Göhrs	adc2: adc@100 {
202*518272afSLeonard Göhrs		st,adc-channels = <12>;
203*518272afSLeonard Göhrs		st,min-sample-time-nsecs = <500000>;
204*518272afSLeonard Göhrs		#address-cells = <1>;
205*518272afSLeonard Göhrs		#size-cells = <0>;
206*518272afSLeonard Göhrs		status = "okay";
207*518272afSLeonard Göhrs
208*518272afSLeonard Göhrs		channel@12 {
209*518272afSLeonard Göhrs			reg = <12>;
210*518272afSLeonard Göhrs			label = "TEMP_INTERNAL";
211*518272afSLeonard Göhrs		};
212*518272afSLeonard Göhrs	};
213*518272afSLeonard Göhrs};
214*518272afSLeonard Göhrs
215*518272afSLeonard Göhrs&crc1 {
216*518272afSLeonard Göhrs	status = "okay";
217*518272afSLeonard Göhrs};
218*518272afSLeonard Göhrs
219*518272afSLeonard Göhrs&cryp1 {
220*518272afSLeonard Göhrs	status = "okay";
221*518272afSLeonard Göhrs};
222*518272afSLeonard Göhrs
223*518272afSLeonard Göhrs&dts {
224*518272afSLeonard Göhrs	status = "okay";
225*518272afSLeonard Göhrs};
226*518272afSLeonard Göhrs
227*518272afSLeonard Göhrs&ethernet0 {
228*518272afSLeonard Göhrs	assigned-clocks = <&rcc ETHCK_K>, <&rcc PLL4_P>;
229*518272afSLeonard Göhrs	assigned-clock-parents = <&rcc PLL4_P>;
230*518272afSLeonard Göhrs	assigned-clock-rates = <125000000>; /* Clock PLL4 to 750Mhz in ATF */
231*518272afSLeonard Göhrs
232*518272afSLeonard Göhrs	pinctrl-names = "default", "sleep";
233*518272afSLeonard Göhrs	pinctrl-0 = <&ethernet0_rgmii_pins_e>;
234*518272afSLeonard Göhrs	pinctrl-1 = <&ethernet0_rgmii_sleep_pins_e>;
235*518272afSLeonard Göhrs
236*518272afSLeonard Göhrs	st,eth-clk-sel;
237*518272afSLeonard Göhrs	phy-mode = "rgmii-id";
238*518272afSLeonard Göhrs
239*518272afSLeonard Göhrs	status = "okay";
240*518272afSLeonard Göhrs
241*518272afSLeonard Göhrs	fixed-link {
242*518272afSLeonard Göhrs		speed = <1000>;
243*518272afSLeonard Göhrs		full-duplex;
244*518272afSLeonard Göhrs	};
245*518272afSLeonard Göhrs};
246*518272afSLeonard Göhrs
247*518272afSLeonard Göhrs&ethernet0_rgmii_pins_e {
248*518272afSLeonard Göhrs	pins1 {
249*518272afSLeonard Göhrs		/* Reduce EMI emission by reducing RGMII drive strength */
250*518272afSLeonard Göhrs		slew-rate = <1>;
251*518272afSLeonard Göhrs	};
252*518272afSLeonard Göhrs};
253*518272afSLeonard Göhrs
254*518272afSLeonard Göhrs&gpiob {
255*518272afSLeonard Göhrs	gpio-line-names = "", "", "", "", "", /*  0 */
256*518272afSLeonard Göhrs	"", "USB_RESET", "", "", "",          /*  5 */
257*518272afSLeonard Göhrs	"", "", "", "", "",                   /* 10 */
258*518272afSLeonard Göhrs	"";                                   /* 15 */
259*518272afSLeonard Göhrs};
260*518272afSLeonard Göhrs
261*518272afSLeonard Göhrs&gpiod {
262*518272afSLeonard Göhrs	gpio-line-names = "", "", "", "", "TP38", /*  0 */
263*518272afSLeonard Göhrs	"TP39", "", "", "TP41", "TP42",           /*  5 */
264*518272afSLeonard Göhrs	"OLED_DC", "", "", "ETH_CS", "",          /* 10 */
265*518272afSLeonard Göhrs	"ETH_LAB_LEDRN";                          /* 15 */
266*518272afSLeonard Göhrs};
267*518272afSLeonard Göhrs
268*518272afSLeonard Göhrs&gpioe {
269*518272afSLeonard Göhrs	gpio-line-names = "TP35", "", "", "", "CAN_1_120R", /*  0 */
270*518272afSLeonard Göhrs	"", "", "USER_BTN2", "TP48", "UART_TX_EN",          /*  5 */
271*518272afSLeonard Göhrs	"UART_RX_EN", "TP24", "", "TP25", "TP26",           /* 10 */
272*518272afSLeonard Göhrs	"TP27";                                             /* 15 */
273*518272afSLeonard Göhrs};
274*518272afSLeonard Göhrs
275*518272afSLeonard Göhrs&gpiof {
276*518272afSLeonard Göhrs	gpio-line-names = "TP36", "TP37", "", "", "OLED_CS", /*  0 */
277*518272afSLeonard Göhrs	"", "", "", "", "",                                  /*  5 */
278*518272afSLeonard Göhrs	"USER_LED1", "", "STACK_CS0", "", "",                /* 10 */
279*518272afSLeonard Göhrs	"";                                                  /* 15 */
280*518272afSLeonard Göhrs};
281*518272afSLeonard Göhrs
282*518272afSLeonard Göhrs&gpiog {
283*518272afSLeonard Göhrs	gpio-line-names = "ETH_RESET", "", "", "", "",               /*  0 */
284*518272afSLeonard Göhrs	"IOBUS_FLT_FB", "", "USER_LED2", "ETH1_PPS_A", "CAN_0_120R", /*  5 */
285*518272afSLeonard Göhrs	"TP49", "", "", "", "",                                      /* 10 */
286*518272afSLeonard Göhrs	"";                                                          /* 15 */
287*518272afSLeonard Göhrs};
288*518272afSLeonard Göhrs
289*518272afSLeonard Göhrs&gpioh {
290*518272afSLeonard Göhrs	gpio-line-names = "", "", "OUT_1", "OUT_0", "OLED_RESET", /*  0 */
291*518272afSLeonard Göhrs	"", "", "", "", "",                                       /*  5 */
292*518272afSLeonard Göhrs	"ETH1_PPS_B", "ETH_GPIO2", "", "IOBUS_PWR_EN", "",        /* 10 */
293*518272afSLeonard Göhrs	"TP33";                                                   /* 15 */
294*518272afSLeonard Göhrs};
295*518272afSLeonard Göhrs
296*518272afSLeonard Göhrs&gpioi {
297*518272afSLeonard Göhrs	gpio-line-names = "TIM_RTS", "", "", "", "DEVICE_DATA_EN", /*  0 */
298*518272afSLeonard Göhrs	"", "", "", "ETH_WOL", "TP43",                             /*  5 */
299*518272afSLeonard Göhrs	"", "USER_BTN";                                            /* 10 */
300*518272afSLeonard Göhrs};
301*518272afSLeonard Göhrs
302*518272afSLeonard Göhrs&gpioz {
303*518272afSLeonard Göhrs	gpio-line-names = "HWID0", "HWID1", "HWID2", "HWID3", "", /*  0 */
304*518272afSLeonard Göhrs	"", "HWID4", "HWID5";                                     /*  5 */
305*518272afSLeonard Göhrs};
306*518272afSLeonard Göhrs
307*518272afSLeonard Göhrs&hash1 {
308*518272afSLeonard Göhrs	status = "okay";
309*518272afSLeonard Göhrs};
310*518272afSLeonard Göhrs
311*518272afSLeonard Göhrs&i2c1 {
312*518272afSLeonard Göhrs	pinctrl-names = "default", "sleep";
313*518272afSLeonard Göhrs	pinctrl-0 = <&i2c1_pins_b>;
314*518272afSLeonard Göhrs	pinctrl-1 = <&i2c1_sleep_pins_b>;
315*518272afSLeonard Göhrs	status = "okay";
316*518272afSLeonard Göhrs
317*518272afSLeonard Göhrs	powerboard_eeprom: eeprom@50 {
318*518272afSLeonard Göhrs		compatible = "atmel,24c02";
319*518272afSLeonard Göhrs		reg = <0x50>;
320*518272afSLeonard Göhrs		vcc-supply = <&v3v3>;
321*518272afSLeonard Göhrs	};
322*518272afSLeonard Göhrs
323*518272afSLeonard Göhrs	temperature-sensor@48 {
324*518272afSLeonard Göhrs		compatible = "national,lm75a";
325*518272afSLeonard Göhrs		reg = <0x48>;
326*518272afSLeonard Göhrs		status = "disabled";
327*518272afSLeonard Göhrs	};
328*518272afSLeonard Göhrs};
329*518272afSLeonard Göhrs
330*518272afSLeonard Göhrs&i2c5 {
331*518272afSLeonard Göhrs	/delete-property/dmas;
332*518272afSLeonard Göhrs	/delete-property/dma-names;
333*518272afSLeonard Göhrs
334*518272afSLeonard Göhrs	pinctrl-names = "default", "sleep";
335*518272afSLeonard Göhrs	pinctrl-0 = <&i2c5_pins_b>;
336*518272afSLeonard Göhrs	pinctrl-1 = <&i2c5_sleep_pins_b>;
337*518272afSLeonard Göhrs
338*518272afSLeonard Göhrs	status = "okay";
339*518272afSLeonard Göhrs
340*518272afSLeonard Göhrs	usbhub: usbhub@2c {
341*518272afSLeonard Göhrs		compatible ="microchip,usb2514b";
342*518272afSLeonard Göhrs		reg = <0x2c>;
343*518272afSLeonard Göhrs		vdd-supply = <&v3v3>;
344*518272afSLeonard Göhrs		reset-gpios = <&gpiob 6 GPIO_ACTIVE_LOW>;
345*518272afSLeonard Göhrs	};
346*518272afSLeonard Göhrs};
347*518272afSLeonard Göhrs
348*518272afSLeonard Göhrs&iwdg2 {
349*518272afSLeonard Göhrs	timeout-sec = <8>;
350*518272afSLeonard Göhrs	status = "okay";
351*518272afSLeonard Göhrs};
352*518272afSLeonard Göhrs
353*518272afSLeonard Göhrs&m_can1 {
354*518272afSLeonard Göhrs	pinctrl-names = "default", "sleep";
355*518272afSLeonard Göhrs	pinctrl-0 = <&m_can1_pins_b>;
356*518272afSLeonard Göhrs	pinctrl-1 = <&m_can1_sleep_pins_b>;
357*518272afSLeonard Göhrs	status = "okay";
358*518272afSLeonard Göhrs};
359*518272afSLeonard Göhrs
360*518272afSLeonard Göhrs&m_can2 {
361*518272afSLeonard Göhrs	pinctrl-names = "default", "sleep";
362*518272afSLeonard Göhrs	pinctrl-0 = <&m_can2_pins_a>;
363*518272afSLeonard Göhrs	pinctrl-1 = <&m_can2_sleep_pins_a>;
364*518272afSLeonard Göhrs	status = "okay";
365*518272afSLeonard Göhrs};
366*518272afSLeonard Göhrs
367*518272afSLeonard Göhrs&pmic {
368*518272afSLeonard Göhrs	regulators {
369*518272afSLeonard Göhrs		buck1-supply = <&reg_5v>;	/* VIN */
370*518272afSLeonard Göhrs		buck2-supply = <&reg_5v>;	/* VIN */
371*518272afSLeonard Göhrs		buck3-supply = <&reg_5v>;	/* VIN */
372*518272afSLeonard Göhrs		buck4-supply = <&reg_5v>;	/* VIN */
373*518272afSLeonard Göhrs		ldo2-supply = <&reg_5v>;	/* PMIC_LDO25IN */
374*518272afSLeonard Göhrs		ldo4-supply = <&reg_5v>;	/* VIN */
375*518272afSLeonard Göhrs		ldo5-supply = <&reg_5v>;	/* PMIC_LDO25IN */
376*518272afSLeonard Göhrs		vref_ddr-supply = <&reg_5v>;	/* VIN */
377*518272afSLeonard Göhrs		boost-supply = <&reg_5v>;	/* PMIC_BSTIN */
378*518272afSLeonard Göhrs		pwr_sw2-supply = <&bst_out>;	/* PMIC_SWIN */
379*518272afSLeonard Göhrs	};
380*518272afSLeonard Göhrs};
381*518272afSLeonard Göhrs
382*518272afSLeonard Göhrs&pwr_regulators {
383*518272afSLeonard Göhrs	vdd-supply = <&vdd>;
384*518272afSLeonard Göhrs	vdd_3v3_usbfs-supply = <&vdd_usb>;
385*518272afSLeonard Göhrs};
386*518272afSLeonard Göhrs
387*518272afSLeonard Göhrs&rtc {
388*518272afSLeonard Göhrs	status = "okay";
389*518272afSLeonard Göhrs};
390*518272afSLeonard Göhrs
391*518272afSLeonard Göhrs&sdmmc2 {
392*518272afSLeonard Göhrs	pinctrl-names = "default", "opendrain", "sleep";
393*518272afSLeonard Göhrs	pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>;
394*518272afSLeonard Göhrs	pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_b>;
395*518272afSLeonard Göhrs	pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_b>;
396*518272afSLeonard Göhrs	vmmc-supply = <&v3v3>;
397*518272afSLeonard Göhrs
398*518272afSLeonard Göhrs	bus-width = <8>;
399*518272afSLeonard Göhrs	mmc-ddr-3_3v;
400*518272afSLeonard Göhrs	no-1-8-v;
401*518272afSLeonard Göhrs	non-removable;
402*518272afSLeonard Göhrs	no-sd;
403*518272afSLeonard Göhrs	no-sdio;
404*518272afSLeonard Göhrs	st,neg-edge;
405*518272afSLeonard Göhrs
406*518272afSLeonard Göhrs	status = "okay";
407*518272afSLeonard Göhrs};
408*518272afSLeonard Göhrs
409*518272afSLeonard Göhrs&spi2 {
410*518272afSLeonard Göhrs	pinctrl-names = "default";
411*518272afSLeonard Göhrs	pinctrl-0 = <&spi2_pins_c>;
412*518272afSLeonard Göhrs	cs-gpios = <&gpiof 12 GPIO_ACTIVE_LOW>;
413*518272afSLeonard Göhrs	status = "okay";
414*518272afSLeonard Göhrs};
415*518272afSLeonard Göhrs
416*518272afSLeonard Göhrs&spi4 {
417*518272afSLeonard Göhrs	pinctrl-names = "default";
418*518272afSLeonard Göhrs	pinctrl-0 = <&spi4_pins_a>;
419*518272afSLeonard Göhrs	cs-gpios = <&gpiof 4 GPIO_ACTIVE_LOW>;
420*518272afSLeonard Göhrs	status = "okay";
421*518272afSLeonard Göhrs
422*518272afSLeonard Göhrs	lcd: display@0 {
423*518272afSLeonard Göhrs		compatible = "shineworld,lh133k", "panel-mipi-dbi-spi";
424*518272afSLeonard Göhrs		reg = <0>;
425*518272afSLeonard Göhrs		power-supply = <&v3v3>;
426*518272afSLeonard Göhrs		io-supply = <&v3v3>;
427*518272afSLeonard Göhrs		backlight = <&backlight>;
428*518272afSLeonard Göhrs		dc-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
429*518272afSLeonard Göhrs		reset-gpios = <&gpioh 4 GPIO_ACTIVE_HIGH>;
430*518272afSLeonard Göhrs		spi-3wire;
431*518272afSLeonard Göhrs		spi-max-frequency = <32000000>;
432*518272afSLeonard Göhrs
433*518272afSLeonard Göhrs		width-mm = <23>;
434*518272afSLeonard Göhrs		height-mm = <23>;
435*518272afSLeonard Göhrs		rotation = <180>;
436*518272afSLeonard Göhrs
437*518272afSLeonard Göhrs		panel-timing {
438*518272afSLeonard Göhrs			hactive = <240>;
439*518272afSLeonard Göhrs			vactive = <240>;
440*518272afSLeonard Göhrs			hback-porch = <0>;
441*518272afSLeonard Göhrs			vback-porch = <0>;
442*518272afSLeonard Göhrs
443*518272afSLeonard Göhrs			clock-frequency = <0>;
444*518272afSLeonard Göhrs			hfront-porch = <0>;
445*518272afSLeonard Göhrs			hsync-len = <0>;
446*518272afSLeonard Göhrs			vfront-porch = <0>;
447*518272afSLeonard Göhrs			vsync-len = <0>;
448*518272afSLeonard Göhrs		};
449*518272afSLeonard Göhrs	};
450*518272afSLeonard Göhrs};
451*518272afSLeonard Göhrs
452*518272afSLeonard Göhrs&spi5 {
453*518272afSLeonard Göhrs	pinctrl-names = "default";
454*518272afSLeonard Göhrs	pinctrl-0 = <&spi5_pins_a>;
455*518272afSLeonard Göhrs
456*518272afSLeonard Göhrs	/* spare dmas for other usage */
457*518272afSLeonard Göhrs	/delete-property/dmas;
458*518272afSLeonard Göhrs	/delete-property/dma-names;
459*518272afSLeonard Göhrs
460*518272afSLeonard Göhrs	cs-gpios = <&gpiod 13 GPIO_ACTIVE_LOW>;
461*518272afSLeonard Göhrs
462*518272afSLeonard Göhrs	status = "okay";
463*518272afSLeonard Göhrs
464*518272afSLeonard Göhrs	switch: switch@0 {
465*518272afSLeonard Göhrs		compatible = "microchip,ksz9563";
466*518272afSLeonard Göhrs		reg = <0>;
467*518272afSLeonard Göhrs
468*518272afSLeonard Göhrs		reset-gpios = <&gpiog 0 GPIO_ACTIVE_LOW>;
469*518272afSLeonard Göhrs		spi-max-frequency = <44000000>;
470*518272afSLeonard Göhrs
471*518272afSLeonard Göhrs		interrupt-parent = <&gpioa>;
472*518272afSLeonard Göhrs		interrupts = <6 IRQ_TYPE_EDGE_RISING>;
473*518272afSLeonard Göhrs
474*518272afSLeonard Göhrs		ports {
475*518272afSLeonard Göhrs			#address-cells = <1>;
476*518272afSLeonard Göhrs			#size-cells = <0>;
477*518272afSLeonard Göhrs			port_dut: port@0 {
478*518272afSLeonard Göhrs				reg = <0>;
479*518272afSLeonard Göhrs				label = "dut";
480*518272afSLeonard Göhrs			};
481*518272afSLeonard Göhrs
482*518272afSLeonard Göhrs			port_uplink: port@1 {
483*518272afSLeonard Göhrs				reg = <1>;
484*518272afSLeonard Göhrs				label = "uplink";
485*518272afSLeonard Göhrs			};
486*518272afSLeonard Göhrs
487*518272afSLeonard Göhrs			port_cpu: port@2 {
488*518272afSLeonard Göhrs				reg = <2>;
489*518272afSLeonard Göhrs				label = "cpu";
490*518272afSLeonard Göhrs
491*518272afSLeonard Göhrs				ethernet = <&ethernet0>;
492*518272afSLeonard Göhrs
493*518272afSLeonard Göhrs				phy-mode = "rgmii-id";
494*518272afSLeonard Göhrs				rx-internal-delay-ps = <2000>;
495*518272afSLeonard Göhrs				tx-internal-delay-ps = <2000>;
496*518272afSLeonard Göhrs
497*518272afSLeonard Göhrs				fixed-link {
498*518272afSLeonard Göhrs					speed = <1000>;
499*518272afSLeonard Göhrs					full-duplex;
500*518272afSLeonard Göhrs				};
501*518272afSLeonard Göhrs			};
502*518272afSLeonard Göhrs		};
503*518272afSLeonard Göhrs	};
504*518272afSLeonard Göhrs};
505*518272afSLeonard Göhrs
506*518272afSLeonard Göhrs&timers2 {
507*518272afSLeonard Göhrs	/* spare dmas for other usage */
508*518272afSLeonard Göhrs	/delete-property/dmas;
509*518272afSLeonard Göhrs	/delete-property/dma-names;
510*518272afSLeonard Göhrs
511*518272afSLeonard Göhrs	status = "okay";
512*518272afSLeonard Göhrs
513*518272afSLeonard Göhrs	timer@1 {
514*518272afSLeonard Göhrs		status = "okay";
515*518272afSLeonard Göhrs	};
516*518272afSLeonard Göhrs};
517*518272afSLeonard Göhrs
518*518272afSLeonard Göhrs&timers3 {
519*518272afSLeonard Göhrs	/* spare dmas for other usage */
520*518272afSLeonard Göhrs	/delete-property/dmas;
521*518272afSLeonard Göhrs	/delete-property/dma-names;
522*518272afSLeonard Göhrs
523*518272afSLeonard Göhrs	status = "okay";
524*518272afSLeonard Göhrs
525*518272afSLeonard Göhrs	timer@2 {
526*518272afSLeonard Göhrs		status = "okay";
527*518272afSLeonard Göhrs	};
528*518272afSLeonard Göhrs};
529*518272afSLeonard Göhrs
530*518272afSLeonard Göhrs&timers4 {
531*518272afSLeonard Göhrs	/* spare dmas for other usage */
532*518272afSLeonard Göhrs	/delete-property/dmas;
533*518272afSLeonard Göhrs	/delete-property/dma-names;
534*518272afSLeonard Göhrs
535*518272afSLeonard Göhrs	status = "okay";
536*518272afSLeonard Göhrs
537*518272afSLeonard Göhrs	timer@3 {
538*518272afSLeonard Göhrs		status = "okay";
539*518272afSLeonard Göhrs	};
540*518272afSLeonard Göhrs};
541*518272afSLeonard Göhrs
542*518272afSLeonard Göhrs&uart4 {
543*518272afSLeonard Göhrs	label = "debug";
544*518272afSLeonard Göhrs
545*518272afSLeonard Göhrs	pinctrl-names = "default";
546*518272afSLeonard Göhrs	pinctrl-0 = <&uart4_pins_a>;
547*518272afSLeonard Göhrs
548*518272afSLeonard Göhrs	/* spare dmas for other usage */
549*518272afSLeonard Göhrs	/delete-property/dmas;
550*518272afSLeonard Göhrs	/delete-property/dma-names;
551*518272afSLeonard Göhrs
552*518272afSLeonard Göhrs	status = "okay";
553*518272afSLeonard Göhrs};
554*518272afSLeonard Göhrs
555*518272afSLeonard Göhrs&usart3 {
556*518272afSLeonard Göhrs	label = "dut";
557*518272afSLeonard Göhrs	uart-has-rtscts;
558*518272afSLeonard Göhrs
559*518272afSLeonard Göhrs	pinctrl-names = "default";
560*518272afSLeonard Göhrs	pinctrl-0 = <&usart3_pins_f>;
561*518272afSLeonard Göhrs
562*518272afSLeonard Göhrs	/* spare dmas for other usage */
563*518272afSLeonard Göhrs	/delete-property/dmas;
564*518272afSLeonard Göhrs	/delete-property/dma-names;
565*518272afSLeonard Göhrs
566*518272afSLeonard Göhrs	status = "okay";
567*518272afSLeonard Göhrs};
568*518272afSLeonard Göhrs
569*518272afSLeonard Göhrs&usbh_ehci {
570*518272afSLeonard Göhrs	phys = <&usbphyc_port0>;
571*518272afSLeonard Göhrs	phy-names = "usb";
572*518272afSLeonard Göhrs
573*518272afSLeonard Göhrs	status = "okay";
574*518272afSLeonard Göhrs};
575*518272afSLeonard Göhrs
576*518272afSLeonard Göhrs&usbotg_hs {
577*518272afSLeonard Göhrs	phys = <&usbphyc_port1 0>;
578*518272afSLeonard Göhrs	phy-names = "usb2-phy";
579*518272afSLeonard Göhrs
580*518272afSLeonard Göhrs	vusb_d-supply = <&vdd_usb>;
581*518272afSLeonard Göhrs	vusb_a-supply = <&reg18>;
582*518272afSLeonard Göhrs
583*518272afSLeonard Göhrs	dr_mode = "peripheral";
584*518272afSLeonard Göhrs
585*518272afSLeonard Göhrs	status = "okay";
586*518272afSLeonard Göhrs};
587*518272afSLeonard Göhrs
588*518272afSLeonard Göhrs&usbphyc {
589*518272afSLeonard Göhrs	status = "okay";
590*518272afSLeonard Göhrs};
591*518272afSLeonard Göhrs
592*518272afSLeonard Göhrs&usbphyc_port0 {
593*518272afSLeonard Göhrs	phy-supply = <&vdd_usb>;
594*518272afSLeonard Göhrs};
595*518272afSLeonard Göhrs
596*518272afSLeonard Göhrs&usbphyc_port1 {
597*518272afSLeonard Göhrs	phy-supply = <&vdd_usb>;
598*518272afSLeonard Göhrs};
599*518272afSLeonard Göhrs
600*518272afSLeonard Göhrs&v3v3_hdmi {
601*518272afSLeonard Göhrs	/delete-property/regulator-always-on;
602*518272afSLeonard Göhrs};
603*518272afSLeonard Göhrs
604*518272afSLeonard Göhrs&vrefbuf {
605*518272afSLeonard Göhrs	regulator-min-microvolt = <2500000>;
606*518272afSLeonard Göhrs	regulator-max-microvolt = <2500000>;
607*518272afSLeonard Göhrs	vdda-supply = <&vdda>;
608*518272afSLeonard Göhrs
609*518272afSLeonard Göhrs	status = "okay";
610*518272afSLeonard Göhrs};
611