xref: /freebsd/sys/contrib/device-tree/src/arm64/rockchip/rk3588-armsom-w3.dts (revision ae5de77ed78ae54d86cead5604869212e8008e6b)
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2
3/dts-v1/;
4
5#include <dt-bindings/gpio/gpio.h>
6#include <dt-bindings/leds/common.h>
7#include <dt-bindings/soc/rockchip,vop2.h>
8#include "rk3588-armsom-lm7.dtsi"
9
10/ {
11	model = "ArmSoM W3";
12	compatible = "armsom,w3", "armsom,lm7", "rockchip,rk3588";
13
14	aliases {
15		mmc1 = &sdmmc;
16		mmc2 = &sdio;
17	};
18
19	analog-sound {
20		compatible = "audio-graph-card";
21		label = "rk3588-es8316";
22
23		widgets = "Microphone", "Mic Jack",
24			  "Headphone", "Headphones";
25
26		routing = "MIC2", "Mic Jack",
27			  "Headphones", "HPOL",
28			  "Headphones", "HPOR";
29
30		dais = <&i2s0_8ch_p0>;
31		hp-det-gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
32		pinctrl-names = "default";
33		pinctrl-0 = <&hp_detect>;
34	};
35
36	hdmi0-con {
37		compatible = "hdmi-connector";
38		type = "a";
39
40		port {
41			hdmi0_con_in: endpoint {
42				remote-endpoint = <&hdmi0_out_con>;
43			};
44		};
45	};
46
47	hdmi1-con {
48		compatible = "hdmi-connector";
49		type = "a";
50
51		port {
52			hdmi1_con_in: endpoint {
53				remote-endpoint = <&hdmi1_out_con>;
54			};
55		};
56	};
57
58	leds {
59		compatible = "gpio-leds";
60		pinctrl-names = "default";
61		pinctrl-0 = <&led_rgb_b>;
62
63		led-rgb-b {
64			function = LED_FUNCTION_STATUS;
65			color = <LED_COLOR_ID_BLUE>;
66			gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
67			linux,default-trigger = "heartbeat";
68		};
69
70		led-rgb-r {
71			function = LED_FUNCTION_STATUS;
72			color = <LED_COLOR_ID_RED>;
73			gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>;
74			linux,default-trigger = "none";
75		};
76	};
77
78	fan: pwm-fan {
79		compatible = "pwm-fan";
80		cooling-levels = <0 120 150 180 210 240 255>;
81		fan-supply = <&vcc5v0_sys>;
82		pwms = <&pwm1 0 50000 0>;
83		#cooling-cells = <2>;
84	};
85
86	rfkill {
87		compatible = "rfkill-gpio";
88		label = "rfkill-pcie-wlan";
89		radio-type = "wlan";
90		shutdown-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
91	};
92
93	rfkill-bt {
94		compatible = "rfkill-gpio";
95		label = "rfkill-m2-bt";
96		radio-type = "bluetooth";
97		shutdown-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
98	};
99
100	vcc3v3_pcie2x1l0: regulator-vcc3v3-pcie2x1l0 {
101		compatible = "regulator-fixed";
102		enable-active-high;
103		gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
104		pinctrl-names = "default";
105		pinctrl-0 = <&pcie2_0_vcc3v3_en>;
106		regulator-name = "vcc3v3_pcie2x1l0";
107		regulator-always-on;
108		regulator-boot-on;
109		regulator-min-microvolt = <3300000>;
110		regulator-max-microvolt = <3300000>;
111		startup-delay-us = <50000>;
112		vin-supply = <&vcc5v0_sys>;
113	};
114
115	vcc3v3_pcie2x1l2: regulator-vcc3v3-pcie2x1l2 {
116		compatible = "regulator-fixed";
117		regulator-name = "vcc3v3_pcie2x1l2";
118		regulator-min-microvolt = <3300000>;
119		regulator-max-microvolt = <3300000>;
120		startup-delay-us = <5000>;
121		vin-supply = <&vcc_3v3_s3>;
122	};
123
124	vcc3v3_pcie30: regulator-vcc3v3-pcie30 {
125		compatible = "regulator-fixed";
126		enable-active-high;
127		gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
128		pinctrl-names = "default";
129		pinctrl-0 = <&pcie3_vcc3v3_en>;
130		regulator-name = "vcc3v3_pcie30";
131		regulator-min-microvolt = <3300000>;
132		regulator-max-microvolt = <3300000>;
133		startup-delay-us = <5000>;
134		vin-supply = <&vcc5v0_sys>;
135	};
136
137	vcc5v0_host: regulator-vcc5v0-host {
138		compatible = "regulator-fixed";
139		regulator-name = "vcc5v0_host";
140		regulator-boot-on;
141		regulator-always-on;
142		regulator-min-microvolt = <5000000>;
143		regulator-max-microvolt = <5000000>;
144		enable-active-high;
145		gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
146		pinctrl-names = "default";
147		pinctrl-0 = <&vcc5v0_host_en>;
148		vin-supply = <&vcc5v0_sys>;
149	};
150};
151
152&combphy0_ps {
153	status = "okay";
154};
155
156&combphy1_ps {
157	status = "okay";
158};
159
160&combphy2_psu {
161	status = "okay";
162};
163
164&hdmi0 {
165	status = "okay";
166};
167
168&hdmi0_in {
169	hdmi0_in_vp0: endpoint {
170		remote-endpoint = <&vp0_out_hdmi0>;
171	};
172};
173
174&hdmi0_out {
175	hdmi0_out_con: endpoint {
176		remote-endpoint = <&hdmi0_con_in>;
177	};
178};
179
180&hdmi0_sound {
181	status = "okay";
182};
183
184&hdmi1 {
185	status = "okay";
186};
187
188&hdmi1_in {
189	hdmi1_in_vp1: endpoint {
190		remote-endpoint = <&vp1_out_hdmi1>;
191	};
192};
193
194&hdmi1_out {
195	hdmi1_out_con: endpoint {
196		remote-endpoint = <&hdmi1_con_in>;
197	};
198};
199
200&hdmi1_sound {
201	status = "okay";
202};
203
204&hdptxphy0 {
205	status = "okay";
206};
207
208&hdptxphy1 {
209	status = "okay";
210};
211
212&i2c6 {
213	status = "okay";
214
215	hym8563: rtc@51 {
216		compatible = "haoyu,hym8563";
217		reg = <0x51>;
218		#clock-cells = <0>;
219		clock-output-names = "hym8563";
220		pinctrl-names = "default";
221		pinctrl-0 = <&hym8563_int>;
222		interrupt-parent = <&gpio0>;
223		interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
224		wakeup-source;
225	};
226};
227
228&i2c7 {
229	status = "okay";
230
231	es8316: audio-codec@11 {
232		compatible = "everest,es8316";
233		reg = <0x11>;
234		clocks = <&cru I2S0_8CH_MCLKOUT>;
235		clock-names = "mclk";
236		assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
237		assigned-clock-rates = <12288000>;
238		#sound-dai-cells = <0>;
239
240		port {
241			es8316_p0_0: endpoint {
242				remote-endpoint = <&i2s0_8ch_p0_0>;
243			};
244		};
245	};
246};
247
248&i2s0_8ch {
249	pinctrl-names = "default";
250	pinctrl-0 = <&i2s0_lrck
251		     &i2s0_mclk
252		     &i2s0_sclk
253		     &i2s0_sdi0
254		     &i2s0_sdo0>;
255	status = "okay";
256
257	i2s0_8ch_p0: port {
258		i2s0_8ch_p0_0: endpoint {
259			dai-format = "i2s";
260			mclk-fs = <256>;
261			remote-endpoint = <&es8316_p0_0>;
262		};
263	};
264};
265
266&i2s5_8ch {
267	status = "okay";
268};
269
270&i2s6_8ch {
271	status = "okay";
272};
273
274&package_thermal {
275	polling-delay = <1000>;
276
277	trips {
278		package_fan0: package-fan0 {
279			temperature = <55000>;
280			hysteresis = <2000>;
281			type = "active";
282		};
283
284		package_fan1: package-fan1 {
285			temperature = <65000>;
286			hysteresis = <2000>;
287			type = "active";
288		};
289	};
290
291	cooling-maps {
292		map0 {
293			trip = <&package_fan0>;
294			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
295		};
296
297		map1 {
298			trip = <&package_fan1>;
299			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
300		};
301	};
302};
303
304&pcie2x1l0 {
305	pinctrl-names = "default";
306	pinctrl-0 = <&pcie2_0_rst>;
307	reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
308	vpcie3v3-supply = <&vcc3v3_pcie2x1l0>;
309	status = "okay";
310};
311
312&pcie2x1l2 {
313	pinctrl-names = "default";
314	pinctrl-0 = <&pcie2_2_rst>;
315	reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
316	vpcie3v3-supply = <&vcc3v3_pcie2x1l2>;
317	status = "okay";
318};
319
320&pcie30phy {
321	status = "okay";
322};
323
324&pcie3x4 {
325	pinctrl-names = "default";
326	pinctrl-0 = <&pcie3_rst>;
327	reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
328	vpcie3v3-supply = <&vcc3v3_pcie30>;
329	status = "okay";
330};
331
332&pinctrl {
333	hym8563 {
334		hym8563_int: hym8563-int {
335			rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
336		};
337	};
338
339	leds {
340		led_rgb_b: led-rgb-b {
341			rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
342		};
343	};
344
345	sound {
346		hp_detect: hp-detect {
347			rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
348		};
349	};
350
351	pcie2 {
352		pcie2_0_rst: pcie2-0-rst {
353			rockchip,pins = <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
354		};
355
356		pcie2_0_vcc3v3_en: pcie2-0-vcc-en {
357			rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
358		};
359
360		pcie2_2_rst: pcie2-2-rst {
361			rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
362		};
363	};
364
365	pcie3 {
366		pcie3_rst: pcie3-rst {
367			rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
368		};
369
370		pcie3_vcc3v3_en: pcie3-vcc3v3-en {
371			rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
372		};
373	};
374
375	usb {
376		vcc5v0_host_en: vcc5v0-host-en {
377			rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
378		};
379	};
380};
381
382&pwm1 {
383	status = "okay";
384};
385
386&sdmmc {
387	bus-width = <4>;
388	cap-mmc-highspeed;
389	cap-sd-highspeed;
390	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
391	disable-wp;
392	max-frequency = <200000000>;
393	no-sdio;
394	no-mmc;
395	sd-uhs-sdr104;
396	vmmc-supply = <&vcc_3v3_s3>;
397	vqmmc-supply = <&vccio_sd_s0>;
398	status = "okay";
399};
400
401&sdio {
402	bus-width = <4>;
403	cap-sdio-irq;
404	disable-wp;
405	keep-power-in-suspend;
406	max-frequency = <200000000>;
407	no-sd;
408	no-mmc;
409	non-removable;
410	pinctrl-names = "default";
411	pinctrl-0 = <&sdiom0_pins>;
412	sd-uhs-sdr12;
413	sd-uhs-sdr25;
414	sd-uhs-sdr50;
415	sd-uhs-sdr104;
416	vmmc-supply = <&vcc3v3_pcie2x1l0>;
417	vqmmc-supply = <&vcc_1v8_s3>;
418	wakeup-source;
419	status = "okay";
420};
421
422&uart2 {
423	pinctrl-0 = <&uart2m0_xfer>;
424	status = "okay";
425};
426
427&uart6 {
428	pinctrl-names = "default";
429	pinctrl-0 = <&uart6m1_xfer &uart6m1_ctsn &uart6m1_rtsn>;
430	status = "okay";
431};
432
433&u2phy1 {
434	status = "okay";
435};
436
437&u2phy1_otg {
438	status = "okay";
439};
440
441&u2phy2 {
442	status = "okay";
443};
444
445&u2phy2_host {
446	/* connected to USB hub, which is powered by vcc5v0_sys */
447	phy-supply = <&vcc5v0_sys>;
448	status = "okay";
449};
450
451&u2phy3 {
452	status = "okay";
453};
454
455&u2phy3_host {
456	phy-supply = <&vcc5v0_host>;
457	status = "okay";
458};
459
460&usbdp_phy1 {
461	status = "okay";
462};
463
464&usb_host0_ehci {
465	status = "okay";
466};
467
468&usb_host0_ohci {
469	status = "okay";
470};
471
472&usb_host1_ehci {
473	status = "okay";
474};
475
476&usb_host1_ohci {
477	status = "okay";
478};
479
480&usb_host1_xhci {
481	dr_mode = "host";
482	status = "okay";
483};
484
485&usb_host2_xhci {
486	status = "okay";
487};
488
489&vop {
490	status = "okay";
491};
492
493&vop_mmu {
494	status = "okay";
495};
496
497&vp0 {
498	vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
499		reg = <ROCKCHIP_VOP2_EP_HDMI0>;
500		remote-endpoint = <&hdmi0_in_vp0>;
501	};
502};
503
504&vp1 {
505	vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
506		reg = <ROCKCHIP_VOP2_EP_HDMI1>;
507		remote-endpoint = <&hdmi1_in_vp1>;
508	};
509};
510