1// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
2/*
3 * Copyright (C) 2022 Marek Vasut <marex@denx.de>
4 */
5
6/ {
7	aliases {
8		ethernet0 = &ethernet0;
9		ethernet1 = &ksz8851;
10		mmc0 = &sdmmc1;
11		rtc0 = &hwrtc;
12		rtc1 = &rtc;
13		serial0 = &uart4;
14		serial1 = &uart8;
15		serial2 = &usart3;
16		serial3 = &uart5;
17		spi0 = &qspi;
18	};
19
20	chosen {
21		stdout-path = "serial0:115200n8";
22	};
23
24	led {
25		compatible = "gpio-leds";
26		led1 {
27			label = "yellow:user0";
28			gpios = <&gpioz 6 GPIO_ACTIVE_LOW>;
29			default-state = "off";
30		};
31
32		led2 {
33			label = "red:user1";
34			gpios = <&gpioz 3 GPIO_ACTIVE_LOW>;
35			default-state = "off";
36		};
37	};
38
39	ethernet_vio: vioregulator {
40		compatible = "regulator-fixed";
41		regulator-name = "vio";
42		regulator-min-microvolt = <3300000>;
43		regulator-max-microvolt = <3300000>;
44		gpio = <&gpioh 2 GPIO_ACTIVE_LOW>;
45		regulator-always-on;
46		regulator-boot-on;
47		vin-supply = <&vdd>;
48	};
49};
50
51&adc {	/* X11 ADC inputs */
52	pinctrl-names = "default";
53	pinctrl-0 = <&adc12_ain_pins_b>;
54	vdd-supply = <&vdd>;
55	vdda-supply = <&vdda>;
56	vref-supply = <&vdda>;
57	status = "okay";
58
59	adc1: adc@0 {
60		st,adc-channels = <0 1 6>;
61		st,min-sample-time-nsecs = <5000>;
62		status = "okay";
63	};
64
65	adc2: adc@100 {
66		st,adc-channels = <0 1 2>;
67		st,min-sample-time-nsecs = <5000>;
68		status = "okay";
69	};
70};
71
72&ethernet0 {
73	status = "okay";
74	pinctrl-0 = <&ethernet0_rgmii_pins_c>;
75	pinctrl-1 = <&ethernet0_rgmii_sleep_pins_c>;
76	pinctrl-names = "default", "sleep";
77	phy-mode = "rgmii";
78	max-speed = <1000>;
79	phy-handle = <&phy0>;
80
81	mdio0 {
82		#address-cells = <1>;
83		#size-cells = <0>;
84		compatible = "snps,dwmac-mdio";
85		reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>;
86		reset-delay-us = <1000>;
87		reset-post-delay-us = <1000>;
88
89		phy0: ethernet-phy@7 {
90			reg = <7>;
91
92			rxc-skew-ps = <1500>;
93			rxdv-skew-ps = <540>;
94			rxd0-skew-ps = <420>;
95			rxd1-skew-ps = <420>;
96			rxd2-skew-ps = <420>;
97			rxd3-skew-ps = <420>;
98
99			txc-skew-ps = <1440>;
100			txen-skew-ps = <540>;
101			txd0-skew-ps = <420>;
102			txd1-skew-ps = <420>;
103			txd2-skew-ps = <420>;
104			txd3-skew-ps = <420>;
105		};
106	};
107};
108
109&fmc {
110	pinctrl-names = "default", "sleep";
111	pinctrl-0 = <&fmc_pins_b>;
112	pinctrl-1 = <&fmc_sleep_pins_b>;
113	status = "okay";
114
115	ksz8851: ethernet@1,0 {
116		compatible = "micrel,ks8851-mll";
117		reg = <1 0x0 0x2>, <1 0x2 0x20000>;
118		interrupt-parent = <&gpioc>;
119		interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
120		bank-width = <2>;
121
122		/* Timing values are in nS */
123		st,fmc2-ebi-cs-mux-enable;
124		st,fmc2-ebi-cs-transaction-type = <4>;
125		st,fmc2-ebi-cs-buswidth = <16>;
126		st,fmc2-ebi-cs-address-setup-ns = <5>;
127		st,fmc2-ebi-cs-address-hold-ns = <5>;
128		st,fmc2-ebi-cs-bus-turnaround-ns = <5>;
129		st,fmc2-ebi-cs-data-setup-ns = <45>;
130		st,fmc2-ebi-cs-data-hold-ns = <1>;
131		st,fmc2-ebi-cs-write-address-setup-ns = <5>;
132		st,fmc2-ebi-cs-write-address-hold-ns = <5>;
133		st,fmc2-ebi-cs-write-bus-turnaround-ns = <5>;
134		st,fmc2-ebi-cs-write-data-setup-ns = <45>;
135		st,fmc2-ebi-cs-write-data-hold-ns = <1>;
136	};
137};
138
139&gpioa {
140	gpio-line-names = "", "", "", "",
141			  "DRCC-VAR2", "", "", "",
142			  "", "", "", "",
143			  "", "", "", "";
144};
145
146&gpioe {
147	gpio-line-names = "", "", "", "",
148			  "", "DRCC-GPIO0", "", "",
149			  "", "", "", "",
150			  "", "", "", "";
151};
152
153&gpiog {
154	gpio-line-names = "", "", "", "",
155			  "", "", "", "",
156			  "", "", "", "",
157			  "DRCC-GPIO5", "", "", "";
158};
159
160&gpioh {
161	gpio-line-names = "", "", "", "DRCC-HW2",
162			  "DRCC-GPIO4", "", "", "",
163			  "DRCC-HW1", "DRCC-HW0", "", "DRCC-VAR1",
164			  "DRCC-VAR0", "", "", "DRCC-GPIO6";
165};
166
167&gpioi {
168	gpio-line-names = "", "", "", "",
169			  "", "", "", "DRCC-GPIO2",
170			  "", "DRCC-GPIO1", "", "",
171			  "", "", "", "";
172};
173
174&i2c1 {	/* X11 I2C1 */
175	pinctrl-names = "default";
176	pinctrl-0 = <&i2c1_pins_b>;
177	i2c-scl-rising-time-ns = <185>;
178	i2c-scl-falling-time-ns = <20>;
179	status = "okay";
180	/delete-property/dmas;
181	/delete-property/dma-names;
182};
183
184&i2c4 {
185	hwrtc: rtc@32 {
186		compatible = "microcrystal,rv8803";
187		reg = <0x32>;
188	};
189
190	eeprom@50 {
191		compatible = "atmel,24c04";
192		reg = <0x50>;
193		pagesize = <16>;
194	};
195};
196
197&sdmmc1 {	/* MicroSD */
198	pinctrl-names = "default", "opendrain", "sleep";
199	pinctrl-0 = <&sdmmc1_b4_pins_a>;
200	pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
201	pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
202	cd-gpios = <&gpioi 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
203	disable-wp;
204	st,neg-edge;
205	bus-width = <4>;
206	vmmc-supply = <&vdd>;
207	vqmmc-supply = <&vdd>;
208	status = "okay";
209};
210
211&sdmmc2 {	/* eMMC */
212	pinctrl-names = "default", "opendrain", "sleep";
213	pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_c>;
214	pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_c>;
215	pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_c>;
216	bus-width = <8>;
217	no-sd;
218	no-sdio;
219	non-removable;
220	st,neg-edge;
221	vmmc-supply = <&v3v3>;
222	vqmmc-supply = <&vdd>;
223	status = "okay";
224};
225
226&sdmmc3 {	/* SDIO Wi-Fi */
227	pinctrl-names = "default", "opendrain", "sleep";
228	pinctrl-0 = <&sdmmc3_b4_pins_a>;
229	pinctrl-1 = <&sdmmc3_b4_od_pins_a>;
230	pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>;
231	broken-cd;
232	bus-width = <4>;
233	mmc-ddr-3_3v;
234	st,neg-edge;
235	vmmc-supply = <&v3v3>;
236	vqmmc-supply = <&v3v3>;
237	status = "okay";
238};
239
240&spi2 {	/* X11 SPI */
241	pinctrl-names = "default";
242	pinctrl-0 = <&spi2_pins_b>;
243	cs-gpios = <&gpioi 0 0>;
244	status = "disabled";
245	/delete-property/dmas;
246	/delete-property/dma-names;
247};
248
249&uart4 {
250	label = "UART0";
251	pinctrl-names = "default";
252	pinctrl-0 = <&uart4_pins_d>;
253	/delete-property/dmas;
254	/delete-property/dma-names;
255	status = "okay";
256};
257
258&uart5 {	/* X11 UART */
259	label = "X11-UART5";
260	pinctrl-names = "default";
261	pinctrl-0 = <&uart5_pins_a>;
262	/delete-property/dmas;
263	/delete-property/dma-names;
264	status = "okay";
265};
266
267&uart8 {
268	label = "RS485-1";
269	pinctrl-names = "default";
270	pinctrl-0 = <&uart8_pins_a &uart8_rtscts_pins_a>;
271	uart-has-rtscts;
272	/delete-property/dmas;
273	/delete-property/dma-names;
274	status = "okay";
275};
276
277&usart3 {	/* RS485 or RS232 */
278	label = "RS485-2";
279	pinctrl-names = "default", "sleep";
280	pinctrl-0 = <&usart3_pins_e>;
281	pinctrl-1 = <&usart3_sleep_pins_e>;
282	uart-has-rtscts;
283	/delete-property/dmas;
284	/delete-property/dma-names;
285	status = "okay";
286};
287
288&usbh_ehci {
289	phys = <&usbphyc_port0>;
290	status = "okay";
291};
292
293&usbh_ohci {
294	phys = <&usbphyc_port0>;
295	status = "okay";
296};
297
298&usbotg_hs {
299	dr_mode = "otg";
300	pinctrl-0 = <&usbotg_hs_pins_a>;
301	pinctrl-names = "default";
302	phy-names = "usb2-phy";
303	phys = <&usbphyc_port1 0>;
304	vbus-supply = <&vbus_otg>;
305	status = "okay";
306};
307
308&usbphyc {
309	status = "okay";
310};
311
312&usbphyc_port0 {
313	phy-supply = <&vdd_usb>;
314	connector {
315		compatible = "usb-a-connector";
316		vbus-supply = <&vbus_sw>;
317	};
318};
319
320&usbphyc_port1 {
321	phy-supply = <&vdd_usb>;
322};
323