xref: /freebsd/sys/contrib/device-tree/src/arm64/rockchip/rk3588-coolpi-cm5-genbook.dts (revision 9978553d0199e7ec0bdd1c44fc7f6c7b0c11e43b)
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
4 *
5 */
6
7/dts-v1/;
8
9#include <dt-bindings/leds/common.h>
10#include <dt-bindings/soc/rockchip,vop2.h>
11#include "rk3588-coolpi-cm5.dtsi"
12
13/ {
14	model = "CoolPi CM5 GenBook";
15	compatible = "coolpi,pi-cm5-genbook", "coolpi,pi-cm5", "rockchip,rk3588";
16
17	backlight: backlight {
18		compatible = "pwm-backlight";
19		enable-gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
20		pinctrl-names = "default";
21		pinctrl-0 = <&bl_en>;
22		power-supply = <&vcc12v_dcin>;
23		pwms = <&pwm6 0 25000 0>;
24	};
25
26	battery: battery {
27		compatible = "simple-battery";
28		charge-full-design-microamp-hours = <9800000>;
29		voltage-max-design-microvolt = <4350000>;
30		voltage-min-design-microvolt = <3000000>;
31	};
32
33	charger: dc-charger {
34		compatible = "gpio-charger";
35		charger-type = "mains";
36		gpios = <&gpio1 RK_PC0 GPIO_ACTIVE_LOW>;
37	};
38
39	hdmi-con {
40		compatible = "hdmi-connector";
41		type = "a";
42
43		port {
44			hdmi_con_in: endpoint {
45				remote-endpoint = <&hdmi0_out_con>;
46			};
47		};
48	};
49
50	leds: leds {
51		compatible = "gpio-leds";
52
53		heartbeat_led: led-0 {
54			color = <LED_COLOR_ID_GREEN>;
55			function = LED_FUNCTION_STATUS;
56			gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>;
57			linux,default-trigger = "heartbeat";
58		};
59
60		wlan_led: led-1 {
61			color = <LED_COLOR_ID_GREEN>;
62			function = LED_FUNCTION_WLAN;
63			gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
64		};
65
66		charging_red: led-2 {
67			function = LED_FUNCTION_CHARGING;
68			color = <LED_COLOR_ID_RED>;
69			gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_HIGH>;
70		};
71	};
72
73	vcc12v_dcin: regulator-vcc12v-dcin {
74		compatible = "regulator-fixed";
75		regulator-name = "vcc12v_dcin";
76		regulator-always-on;
77		regulator-boot-on;
78		regulator-min-microvolt = <12000000>;
79		regulator-max-microvolt = <12000000>;
80	};
81
82	vcc_sys: regulator-vcc-sys {
83		compatible = "regulator-fixed";
84		regulator-name = "vcc_sys";
85		regulator-always-on;
86		regulator-boot-on;
87		regulator-min-microvolt = <7000000>;
88		regulator-max-microvolt = <7000000>;
89		vin-supply = <&vcc12v_dcin>;
90	};
91
92	vcc5v0_sys: regulator-vcc5v0-sys {
93		compatible = "regulator-fixed";
94		regulator-name = "vcc5v0_sys";
95		regulator-always-on;
96		regulator-boot-on;
97		regulator-min-microvolt = <7000000>;
98		regulator-max-microvolt = <7000000>;
99		vin-supply = <&vcc_sys>;
100	};
101
102	vcc3v3_sys: regulator-vcc3v3-sys {
103		compatible = "regulator-fixed";
104		regulator-name = "vcc3v3_sys";
105		regulator-always-on;
106		regulator-boot-on;
107		regulator-min-microvolt = <3300000>;
108		regulator-max-microvolt = <3300000>;
109		vin-supply = <&vcc5v0_sys>;
110	};
111
112	vcc3v3_lcd: regulator-vcc3v3-lcd {
113		compatible = "regulator-fixed";
114		regulator-name = "vcc3v3_lcd";
115		enable-active-high;
116		gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>;
117		pinctrl-names = "default";
118		pinctrl-0 = <&lcdpwr_en>;
119		vin-supply = <&vcc3v3_sys>;
120	};
121
122	vcc5v0_usb: regulator-vcc5v0-usb {
123		compatible = "regulator-fixed";
124		regulator-name = "vcc5v0_usb";
125		regulator-boot-on;
126		regulator-always-on;
127		enable-active-high;
128		regulator-min-microvolt = <5000000>;
129		regulator-max-microvolt = <5000000>;
130		gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
131		pinctrl-names = "default";
132		pinctrl-0 = <&usb_pwren>;
133		vin-supply = <&vcc_sys>;
134	};
135
136	vcc5v0_usb_host0: vcc5v0_usb30_host: regulator-vcc5v0-usb-host {
137		compatible = "regulator-fixed";
138		regulator-name = "vcc5v0_host";
139		regulator-boot-on;
140		regulator-always-on;
141		enable-active-high;
142		regulator-min-microvolt = <5000000>;
143		regulator-max-microvolt = <5000000>;
144		gpio = <&gpio1 RK_PA7 GPIO_ACTIVE_HIGH>;
145		pinctrl-names = "default";
146		pinctrl-0 = <&usb_host_pwren>;
147		vin-supply = <&vcc5v0_usb>;
148	};
149};
150
151&edp1 {
152	force-hpd;
153	status = "okay";
154
155	aux-bus {
156		panel {
157			compatible = "edp-panel";
158			hpd-absent-delay-ms = <200>;
159			no-hpd;
160			backlight = <&backlight>;
161			power-supply = <&vcc3v3_lcd>;
162
163			port {
164				panel_in_edp: endpoint {
165					remote-endpoint = <&edp_out_panel>;
166				};
167			};
168		};
169	};
170};
171
172&edp1_in {
173	edp1_in_vp2: endpoint {
174		remote-endpoint = <&vp2_out_edp1>;
175	};
176};
177
178&edp1_out {
179	edp_out_panel: endpoint {
180		remote-endpoint = <&panel_in_edp>;
181	};
182};
183
184
185/* HDMI CEC is not used */
186&hdmi0 {
187	pinctrl-0 = <&hdmim0_tx0_hpd &hdmim0_tx0_scl &hdmim0_tx0_sda>;
188	status = "okay";
189};
190
191&hdmi0_in {
192	hdmi0_in_vp0: endpoint {
193		remote-endpoint = <&vp0_out_hdmi0>;
194	};
195};
196
197&hdmi0_out {
198	hdmi0_out_con: endpoint {
199		remote-endpoint = <&hdmi_con_in>;
200	};
201};
202
203&hdptxphy0 {
204	status = "okay";
205};
206
207&hdptxphy1 {
208	status = "okay";
209};
210
211&i2c4 {
212	status = "okay";
213	pinctrl-names = "default";
214	pinctrl-0 = <&i2c4m3_xfer>;
215
216	cw2015@62 {
217		compatible = "cellwise,cw2015";
218		reg = <0x62>;
219
220		cellwise,battery-profile = /bits/ 8 <
221			0x17 0x67 0x69 0x63 0x63 0x62 0x62 0x5F
222			0x52 0x73 0x4C 0x5A 0x5B 0x4B 0x42 0x3A
223			0x33 0x2D 0x29 0x28 0x2E 0x31 0x3C 0x49
224			0x2C 0x2C 0x0C 0xCD 0x30 0x51 0x50 0x66
225			0x74 0x74 0x75 0x78 0x41 0x1B 0x84 0x5F
226			0x0B 0x34 0x1C 0x45 0x89 0x92 0xA0 0x13
227			0x2C 0x55 0xAB 0xCB 0x80 0x5E 0x7B 0xCB
228			0x2F 0x00 0x64 0xA5 0xB5 0x10 0x18 0x21
229			>;
230
231		cellwise,monitor-interval-ms = <3000>;
232		monitored-battery = <&battery>;
233		power-supplies = <&charger>;
234	};
235};
236
237&i2c5 {
238	status = "okay";
239	pinctrl-names = "default";
240	pinctrl-0 = <&i2c5m3_xfer>;
241
242	touchpad: touchpad@2c {
243		compatible = "hid-over-i2c";
244		reg = <0x2c>;
245		interrupt-parent = <&gpio1>;
246		interrupts = <RK_PD6 IRQ_TYPE_LEVEL_LOW>;
247		hid-descr-addr = <0x0020>;
248	};
249};
250
251&gmac0 {
252	status = "disabled";
253};
254
255/* M.2 E-Key */
256&pcie2x1l0 {
257	reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
258	vpcie3v3-supply = <&vcc3v3_sys>;
259	pinctrl-names = "default";
260	pinctrl-0 = <&pcie_clkreq &pcie_wake &pcie_rst &wifi_pwron &bt_pwron>;
261	status = "okay";
262};
263
264&pcie2x1l2 {
265	status = "disabled";
266};
267
268&pcie30phy {
269	status = "okay";
270};
271
272/* M.2 M-Key ssd */
273&pcie3x4 {
274	reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
275	vpcie3v3-supply = <&vcc3v3_sys>;
276	status = "okay";
277};
278
279&pinctrl {
280	lcd {
281		lcdpwr_en: lcdpwr-en {
282			rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_down>;
283		};
284
285		bl_en: bl-en {
286			rockchip,pins = <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
287		};
288	};
289
290	usb {
291		usb_pwren: usb-pwren {
292			rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
293		};
294
295		usb_otg_pwren: usb-otg-pwren {
296			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
297		};
298
299		usb_host_pwren: usb-host-pwren {
300			rockchip,pins = <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
301		};
302	};
303
304	wifi {
305		bt_pwron: bt-pwron {
306			rockchip,pins = <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
307		};
308
309		pcie_clkreq: pcie-clkreq {
310			rockchip,pins = <4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
311		};
312
313		pcie_rst: pcie-rst {
314			rockchip,pins = <4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
315		};
316
317		wifi_pwron: wifi-pwron {
318			rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
319		};
320
321		pcie_wake: pcie-wake {
322			rockchip,pins = <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
323		};
324	};
325};
326
327&pwm6 {
328	pinctrl-0 = <&pwm6m1_pins>;
329	status = "okay";
330};
331
332&sdmmc {
333	status = "disabled";
334};
335
336&sfc {
337	pinctrl-names = "default";
338	pinctrl-0 = <&fspim2_pins>;
339	status = "okay";
340
341	flash@0 {
342		compatible = "jedec,spi-nor";
343		reg = <0x0>;
344		spi-max-frequency = <100000000>;
345		spi-rx-bus-width = <4>;
346		spi-tx-bus-width = <1>;
347	};
348};
349
350&u2phy0 {
351	status = "okay";
352};
353
354&u2phy0_otg {
355	status = "okay";
356};
357
358&usbdp_phy0 {
359	status = "okay";
360};
361
362&u2phy1 {
363	status = "okay";
364};
365
366&u2phy1_otg {
367	status = "okay";
368};
369
370&u2phy2 {
371	status = "okay";
372};
373
374&u2phy3 {
375	status = "okay";
376};
377
378&u2phy2_host {
379	phy-supply = <&vcc5v0_usb_host0>;
380	status = "okay";
381};
382
383&u2phy3_host {
384	phy-supply = <&vcc5v0_usb>;
385	status = "okay";
386};
387
388&usbdp_phy1 {
389	status = "okay";
390};
391
392/* For Keypad */
393&usb_host0_ehci {
394	status = "okay";
395};
396
397&usb_host0_ohci {
398	status = "okay";
399};
400
401/* Type C port */
402&usb_host0_xhci {
403	dr_mode = "peripheral";
404	maximum-speed = "high-speed";
405	status = "okay";
406};
407
408/* connected to a HUB for camera and BT */
409&usb_host1_ehci {
410	status = "okay";
411};
412
413&usb_host1_ohci {
414	status = "okay";
415};
416
417/* USB A out */
418&usb_host1_xhci {
419	dr_mode = "host";
420	status = "okay";
421};
422
423&vop {
424	assigned-clocks = <&cru DCLK_VOP2_SRC>;
425	assigned-clock-parents = <&cru PLL_V0PLL>;
426	status = "okay";
427};
428
429&vop_mmu {
430	status = "okay";
431};
432
433&vp0 {
434	vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
435		reg = <ROCKCHIP_VOP2_EP_HDMI0>;
436		remote-endpoint = <&hdmi0_in_vp0>;
437	};
438};
439
440&vp2 {
441	vp2_out_edp1: endpoint@ROCKCHIP_VOP2_EP_EDP1 {
442		reg = <ROCKCHIP_VOP2_EP_EDP1>;
443		remote-endpoint = <&edp1_in_vp2>;
444	};
445};
446