xref: /OK3568_Linux_fs/kernel/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd.
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun#include "dt-bindings/usb/pd.h"
7*4882a593Smuzhiyun#include "dt-bindings/pwm/pwm.h"
8*4882a593Smuzhiyun#include "dt-bindings/input/input.h"
9*4882a593Smuzhiyun#include "rk3399.dtsi"
10*4882a593Smuzhiyun#include "rk3399-opp.dtsi"
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun/ {
13*4882a593Smuzhiyun	compatible = "rockchip,rk3399-sapphire", "rockchip,rk3399";
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun	chosen {
16*4882a593Smuzhiyun		stdout-path = "serial2:1500000n8";
17*4882a593Smuzhiyun	};
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	adc_keys: adc-keys {
20*4882a593Smuzhiyun		compatible = "adc-keys";
21*4882a593Smuzhiyun		io-channels = <&saradc 1>;
22*4882a593Smuzhiyun		io-channel-names = "buttons";
23*4882a593Smuzhiyun		keyup-threshold-microvolt = <1800000>;
24*4882a593Smuzhiyun		poll-interval = <100>;
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun		vol-up-key {
27*4882a593Smuzhiyun			label = "volume up";
28*4882a593Smuzhiyun			linux,code = <KEY_VOLUMEUP>;
29*4882a593Smuzhiyun			press-threshold-microvolt = <1750>;
30*4882a593Smuzhiyun		};
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun		vol-down-key {
33*4882a593Smuzhiyun			label = "volume down";
34*4882a593Smuzhiyun			linux,code = <KEY_VOLUMEDOWN>;
35*4882a593Smuzhiyun			press-threshold-microvolt = <297500>;
36*4882a593Smuzhiyun		};
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun		menu-key {
39*4882a593Smuzhiyun			label = "menu";
40*4882a593Smuzhiyun			linux,code = <KEY_MENU>;
41*4882a593Smuzhiyun			press-threshold-microvolt = <1305500>;
42*4882a593Smuzhiyun		};
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun		home-key {
45*4882a593Smuzhiyun			label = "home";
46*4882a593Smuzhiyun			linux,code = <KEY_HOME>;
47*4882a593Smuzhiyun			press-threshold-microvolt = <621250>;
48*4882a593Smuzhiyun		};
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun		back-key {
51*4882a593Smuzhiyun			label = "back";
52*4882a593Smuzhiyun			linux,code = <KEY_BACK>;
53*4882a593Smuzhiyun			press-threshold-microvolt = <980000>;
54*4882a593Smuzhiyun		};
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun		camera-key {
57*4882a593Smuzhiyun			label = "camera";
58*4882a593Smuzhiyun			linux,code = <KEY_CAMERA>;
59*4882a593Smuzhiyun			press-threshold-microvolt = <787500>;
60*4882a593Smuzhiyun		};
61*4882a593Smuzhiyun	};
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun	clkin_gmac: external-gmac-clock {
64*4882a593Smuzhiyun		compatible = "fixed-clock";
65*4882a593Smuzhiyun		clock-frequency = <125000000>;
66*4882a593Smuzhiyun		clock-output-names = "clkin_gmac";
67*4882a593Smuzhiyun		#clock-cells = <0>;
68*4882a593Smuzhiyun	};
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun	dc_12v: dc-12v {
71*4882a593Smuzhiyun		compatible = "regulator-fixed";
72*4882a593Smuzhiyun		regulator-name = "dc_12v";
73*4882a593Smuzhiyun		regulator-always-on;
74*4882a593Smuzhiyun		regulator-boot-on;
75*4882a593Smuzhiyun		regulator-min-microvolt = <12000000>;
76*4882a593Smuzhiyun		regulator-max-microvolt = <12000000>;
77*4882a593Smuzhiyun	};
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun	/*
80*4882a593Smuzhiyun	 * The fan power supply comes from the baseboard.
81*4882a593Smuzhiyun	 * For the standalone Sapphire one option is to connect a wire
82*4882a593Smuzhiyun	 * from  R90030 DNP R0805 pin2  to  C90002 10uF C0805 pin1 (vcc_sys).
83*4882a593Smuzhiyun	 */
84*4882a593Smuzhiyun	fan0: gpio-fan {
85*4882a593Smuzhiyun		#cooling-cells = <2>;
86*4882a593Smuzhiyun		compatible = "gpio-fan";
87*4882a593Smuzhiyun		gpio-fan,speed-map = <0 0 3000 1>;
88*4882a593Smuzhiyun		gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_HIGH>;
89*4882a593Smuzhiyun		status = "okay";
90*4882a593Smuzhiyun	};
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun	keys: gpio-keys {
93*4882a593Smuzhiyun		compatible = "gpio-keys";
94*4882a593Smuzhiyun		autorepeat;
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun		power {
97*4882a593Smuzhiyun			debounce-interval = <100>;
98*4882a593Smuzhiyun			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
99*4882a593Smuzhiyun			label = "GPIO Power";
100*4882a593Smuzhiyun			linux,code = <KEY_POWER>;
101*4882a593Smuzhiyun			linux,input-type = <1>;
102*4882a593Smuzhiyun			pinctrl-names = "default";
103*4882a593Smuzhiyun			pinctrl-0 = <&pwr_btn>;
104*4882a593Smuzhiyun			wakeup-source;
105*4882a593Smuzhiyun		};
106*4882a593Smuzhiyun	};
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun	/* switched by pmic_sleep */
109*4882a593Smuzhiyun	vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
110*4882a593Smuzhiyun		compatible = "regulator-fixed";
111*4882a593Smuzhiyun		regulator-name = "vcc1v8_s3";
112*4882a593Smuzhiyun		regulator-always-on;
113*4882a593Smuzhiyun		regulator-boot-on;
114*4882a593Smuzhiyun		regulator-min-microvolt = <1800000>;
115*4882a593Smuzhiyun		regulator-max-microvolt = <1800000>;
116*4882a593Smuzhiyun		vin-supply = <&vcc_1v8>;
117*4882a593Smuzhiyun	};
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun	vcc3v0_sd: vcc3v0-sd {
120*4882a593Smuzhiyun		compatible = "regulator-fixed";
121*4882a593Smuzhiyun		enable-active-high;
122*4882a593Smuzhiyun		gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
123*4882a593Smuzhiyun		pinctrl-names = "default";
124*4882a593Smuzhiyun		pinctrl-0 = <&sdmmc0_pwr_h>;
125*4882a593Smuzhiyun		regulator-always-on;
126*4882a593Smuzhiyun		regulator-max-microvolt = <3000000>;
127*4882a593Smuzhiyun		regulator-min-microvolt = <3000000>;
128*4882a593Smuzhiyun		regulator-name = "vcc3v0_sd";
129*4882a593Smuzhiyun		vin-supply = <&vcc3v3_sys>;
130*4882a593Smuzhiyun	};
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun	vcc3v3_sys: vcc3v3-sys {
133*4882a593Smuzhiyun		compatible = "regulator-fixed";
134*4882a593Smuzhiyun		regulator-name = "vcc3v3_sys";
135*4882a593Smuzhiyun		regulator-always-on;
136*4882a593Smuzhiyun		regulator-boot-on;
137*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
138*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
139*4882a593Smuzhiyun		vin-supply = <&vcc_sys>;
140*4882a593Smuzhiyun	};
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun	vcc5v0_host: vcc5v0-host-regulator {
143*4882a593Smuzhiyun		compatible = "regulator-fixed";
144*4882a593Smuzhiyun		enable-active-high;
145*4882a593Smuzhiyun		gpio = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
146*4882a593Smuzhiyun		pinctrl-names = "default";
147*4882a593Smuzhiyun		pinctrl-0 = <&vcc5v0_host_en>;
148*4882a593Smuzhiyun		regulator-name = "vcc5v0_host";
149*4882a593Smuzhiyun		regulator-always-on;
150*4882a593Smuzhiyun		vin-supply = <&vcc_sys>;
151*4882a593Smuzhiyun	};
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun	vcc5v0_typec0: vcc5v0-typec0-regulator {
154*4882a593Smuzhiyun		compatible = "regulator-fixed";
155*4882a593Smuzhiyun		enable-active-high;
156*4882a593Smuzhiyun		gpio = <&gpio2 RK_PA0 GPIO_ACTIVE_HIGH>;
157*4882a593Smuzhiyun		pinctrl-names = "default";
158*4882a593Smuzhiyun		pinctrl-0 = <&vcc5v0_typec0_en>;
159*4882a593Smuzhiyun		regulator-name = "vcc5v0_typec0";
160*4882a593Smuzhiyun		vin-supply = <&vcc_sys>;
161*4882a593Smuzhiyun	};
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun	vcc_sys: vcc-sys {
164*4882a593Smuzhiyun		compatible = "regulator-fixed";
165*4882a593Smuzhiyun		regulator-name = "vcc_sys";
166*4882a593Smuzhiyun		regulator-always-on;
167*4882a593Smuzhiyun		regulator-boot-on;
168*4882a593Smuzhiyun		regulator-min-microvolt = <5000000>;
169*4882a593Smuzhiyun		regulator-max-microvolt = <5000000>;
170*4882a593Smuzhiyun		vin-supply = <&dc_12v>;
171*4882a593Smuzhiyun	};
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun	vdd_log: vdd-log {
174*4882a593Smuzhiyun		compatible = "pwm-regulator";
175*4882a593Smuzhiyun		pwms = <&pwm2 0 25000 1>;
176*4882a593Smuzhiyun		regulator-name = "vdd_log";
177*4882a593Smuzhiyun		regulator-always-on;
178*4882a593Smuzhiyun		regulator-boot-on;
179*4882a593Smuzhiyun		regulator-min-microvolt = <800000>;
180*4882a593Smuzhiyun		regulator-max-microvolt = <1400000>;
181*4882a593Smuzhiyun		vin-supply = <&vcc_sys>;
182*4882a593Smuzhiyun	};
183*4882a593Smuzhiyun};
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun&cdn_dp {
186*4882a593Smuzhiyun	status = "okay";
187*4882a593Smuzhiyun	phys = <&tcphy0_dp>;
188*4882a593Smuzhiyun};
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun&cpu_l0 {
191*4882a593Smuzhiyun	cpu-supply = <&vdd_cpu_l>;
192*4882a593Smuzhiyun};
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun&cpu_l1 {
195*4882a593Smuzhiyun	cpu-supply = <&vdd_cpu_l>;
196*4882a593Smuzhiyun};
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun&cpu_l2 {
199*4882a593Smuzhiyun	cpu-supply = <&vdd_cpu_l>;
200*4882a593Smuzhiyun};
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun&cpu_l3 {
203*4882a593Smuzhiyun	cpu-supply = <&vdd_cpu_l>;
204*4882a593Smuzhiyun};
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun&cpu_b0 {
207*4882a593Smuzhiyun	cpu-supply = <&vdd_cpu_b>;
208*4882a593Smuzhiyun};
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun&cpu_b1 {
211*4882a593Smuzhiyun	cpu-supply = <&vdd_cpu_b>;
212*4882a593Smuzhiyun};
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun&cpu_thermal {
215*4882a593Smuzhiyun	trips {
216*4882a593Smuzhiyun		cpu_hot: cpu_hot {
217*4882a593Smuzhiyun			hysteresis = <10000>;
218*4882a593Smuzhiyun			temperature = <55000>;
219*4882a593Smuzhiyun			type = "active";
220*4882a593Smuzhiyun		};
221*4882a593Smuzhiyun	};
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun	cooling-maps {
224*4882a593Smuzhiyun		map2 {
225*4882a593Smuzhiyun			cooling-device =
226*4882a593Smuzhiyun				<&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
227*4882a593Smuzhiyun			trip = <&cpu_hot>;
228*4882a593Smuzhiyun		};
229*4882a593Smuzhiyun	};
230*4882a593Smuzhiyun};
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun&emmc_phy {
233*4882a593Smuzhiyun	status = "okay";
234*4882a593Smuzhiyun};
235*4882a593Smuzhiyun
236*4882a593Smuzhiyun&gmac {
237*4882a593Smuzhiyun	assigned-clocks = <&cru SCLK_RMII_SRC>;
238*4882a593Smuzhiyun	assigned-clock-parents = <&clkin_gmac>;
239*4882a593Smuzhiyun	clock_in_out = "input";
240*4882a593Smuzhiyun	phy-supply = <&vcc_lan>;
241*4882a593Smuzhiyun	phy-mode = "rgmii";
242*4882a593Smuzhiyun	pinctrl-names = "default";
243*4882a593Smuzhiyun	pinctrl-0 = <&rgmii_pins>;
244*4882a593Smuzhiyun	snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
245*4882a593Smuzhiyun	snps,reset-active-low;
246*4882a593Smuzhiyun	snps,reset-delays-us = <0 10000 50000>;
247*4882a593Smuzhiyun	tx_delay = <0x28>;
248*4882a593Smuzhiyun	rx_delay = <0x11>;
249*4882a593Smuzhiyun	status = "okay";
250*4882a593Smuzhiyun};
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun&gpu {
253*4882a593Smuzhiyun	mali-supply = <&vdd_gpu>;
254*4882a593Smuzhiyun	status = "okay";
255*4882a593Smuzhiyun};
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun&hdmi {
258*4882a593Smuzhiyun	status = "okay";
259*4882a593Smuzhiyun};
260*4882a593Smuzhiyun
261*4882a593Smuzhiyun&hdmi_sound {
262*4882a593Smuzhiyun	status = "okay";
263*4882a593Smuzhiyun};
264*4882a593Smuzhiyun
265*4882a593Smuzhiyun&i2c0 {
266*4882a593Smuzhiyun	clock-frequency = <400000>;
267*4882a593Smuzhiyun	i2c-scl-rising-time-ns = <168>;
268*4882a593Smuzhiyun	i2c-scl-falling-time-ns = <4>;
269*4882a593Smuzhiyun	status = "okay";
270*4882a593Smuzhiyun
271*4882a593Smuzhiyun	rk808: pmic@1b {
272*4882a593Smuzhiyun		compatible = "rockchip,rk808";
273*4882a593Smuzhiyun		reg = <0x1b>;
274*4882a593Smuzhiyun		interrupt-parent = <&gpio1>;
275*4882a593Smuzhiyun		interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
276*4882a593Smuzhiyun		#clock-cells = <1>;
277*4882a593Smuzhiyun		clock-output-names = "xin32k", "rk808-clkout2";
278*4882a593Smuzhiyun		pinctrl-names = "default";
279*4882a593Smuzhiyun		pinctrl-0 = <&pmic_int_l>;
280*4882a593Smuzhiyun		rockchip,system-power-controller;
281*4882a593Smuzhiyun		wakeup-source;
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun		vcc1-supply = <&vcc_sys>;
284*4882a593Smuzhiyun		vcc2-supply = <&vcc_sys>;
285*4882a593Smuzhiyun		vcc3-supply = <&vcc_sys>;
286*4882a593Smuzhiyun		vcc4-supply = <&vcc_sys>;
287*4882a593Smuzhiyun		vcc6-supply = <&vcc_sys>;
288*4882a593Smuzhiyun		vcc7-supply = <&vcc_sys>;
289*4882a593Smuzhiyun		vcc8-supply = <&vcc3v3_sys>;
290*4882a593Smuzhiyun		vcc9-supply = <&vcc_sys>;
291*4882a593Smuzhiyun		vcc10-supply = <&vcc_sys>;
292*4882a593Smuzhiyun		vcc11-supply = <&vcc_sys>;
293*4882a593Smuzhiyun		vcc12-supply = <&vcc3v3_sys>;
294*4882a593Smuzhiyun		vddio-supply = <&vcc1v8_pmu>;
295*4882a593Smuzhiyun
296*4882a593Smuzhiyun		regulators {
297*4882a593Smuzhiyun			vdd_center: DCDC_REG1 {
298*4882a593Smuzhiyun				regulator-name = "vdd_center";
299*4882a593Smuzhiyun				regulator-always-on;
300*4882a593Smuzhiyun				regulator-boot-on;
301*4882a593Smuzhiyun				regulator-min-microvolt = <750000>;
302*4882a593Smuzhiyun				regulator-max-microvolt = <1350000>;
303*4882a593Smuzhiyun				regulator-ramp-delay = <6001>;
304*4882a593Smuzhiyun				regulator-state-mem {
305*4882a593Smuzhiyun					regulator-off-in-suspend;
306*4882a593Smuzhiyun				};
307*4882a593Smuzhiyun			};
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun			vdd_cpu_l: DCDC_REG2 {
310*4882a593Smuzhiyun				regulator-name = "vdd_cpu_l";
311*4882a593Smuzhiyun				regulator-always-on;
312*4882a593Smuzhiyun				regulator-boot-on;
313*4882a593Smuzhiyun				regulator-min-microvolt = <750000>;
314*4882a593Smuzhiyun				regulator-max-microvolt = <1350000>;
315*4882a593Smuzhiyun				regulator-ramp-delay = <6001>;
316*4882a593Smuzhiyun				regulator-state-mem {
317*4882a593Smuzhiyun					regulator-off-in-suspend;
318*4882a593Smuzhiyun				};
319*4882a593Smuzhiyun			};
320*4882a593Smuzhiyun
321*4882a593Smuzhiyun			vcc_ddr: DCDC_REG3 {
322*4882a593Smuzhiyun				regulator-name = "vcc_ddr";
323*4882a593Smuzhiyun				regulator-always-on;
324*4882a593Smuzhiyun				regulator-boot-on;
325*4882a593Smuzhiyun				regulator-state-mem {
326*4882a593Smuzhiyun					regulator-on-in-suspend;
327*4882a593Smuzhiyun				};
328*4882a593Smuzhiyun			};
329*4882a593Smuzhiyun
330*4882a593Smuzhiyun			vcc_1v8: DCDC_REG4 {
331*4882a593Smuzhiyun				regulator-name = "vcc_1v8";
332*4882a593Smuzhiyun				regulator-always-on;
333*4882a593Smuzhiyun				regulator-boot-on;
334*4882a593Smuzhiyun				regulator-min-microvolt = <1800000>;
335*4882a593Smuzhiyun				regulator-max-microvolt = <1800000>;
336*4882a593Smuzhiyun				regulator-state-mem {
337*4882a593Smuzhiyun					regulator-on-in-suspend;
338*4882a593Smuzhiyun					regulator-suspend-microvolt = <1800000>;
339*4882a593Smuzhiyun				};
340*4882a593Smuzhiyun			};
341*4882a593Smuzhiyun
342*4882a593Smuzhiyun			vcc1v8_dvp: LDO_REG1 {
343*4882a593Smuzhiyun				regulator-name = "vcc1v8_dvp";
344*4882a593Smuzhiyun				regulator-always-on;
345*4882a593Smuzhiyun				regulator-boot-on;
346*4882a593Smuzhiyun				regulator-min-microvolt = <1800000>;
347*4882a593Smuzhiyun				regulator-max-microvolt = <1800000>;
348*4882a593Smuzhiyun				regulator-state-mem {
349*4882a593Smuzhiyun					regulator-off-in-suspend;
350*4882a593Smuzhiyun				};
351*4882a593Smuzhiyun			};
352*4882a593Smuzhiyun
353*4882a593Smuzhiyun			vcc3v0_tp: LDO_REG2 {
354*4882a593Smuzhiyun				regulator-name = "vcc3v0_tp";
355*4882a593Smuzhiyun				regulator-always-on;
356*4882a593Smuzhiyun				regulator-boot-on;
357*4882a593Smuzhiyun				regulator-min-microvolt = <3000000>;
358*4882a593Smuzhiyun				regulator-max-microvolt = <3000000>;
359*4882a593Smuzhiyun				regulator-state-mem {
360*4882a593Smuzhiyun					regulator-off-in-suspend;
361*4882a593Smuzhiyun				};
362*4882a593Smuzhiyun			};
363*4882a593Smuzhiyun
364*4882a593Smuzhiyun			vcc1v8_pmu: LDO_REG3 {
365*4882a593Smuzhiyun				regulator-name = "vcc1v8_pmu";
366*4882a593Smuzhiyun				regulator-always-on;
367*4882a593Smuzhiyun				regulator-boot-on;
368*4882a593Smuzhiyun				regulator-min-microvolt = <1800000>;
369*4882a593Smuzhiyun				regulator-max-microvolt = <1800000>;
370*4882a593Smuzhiyun				regulator-state-mem {
371*4882a593Smuzhiyun					regulator-on-in-suspend;
372*4882a593Smuzhiyun					regulator-suspend-microvolt = <1800000>;
373*4882a593Smuzhiyun				};
374*4882a593Smuzhiyun			};
375*4882a593Smuzhiyun
376*4882a593Smuzhiyun			vcc_sdio: LDO_REG4 {
377*4882a593Smuzhiyun				regulator-name = "vcc_sdio";
378*4882a593Smuzhiyun				regulator-always-on;
379*4882a593Smuzhiyun				regulator-boot-on;
380*4882a593Smuzhiyun				regulator-min-microvolt = <1800000>;
381*4882a593Smuzhiyun				regulator-max-microvolt = <3300000>;
382*4882a593Smuzhiyun				regulator-state-mem {
383*4882a593Smuzhiyun					regulator-on-in-suspend;
384*4882a593Smuzhiyun					regulator-suspend-microvolt = <3000000>;
385*4882a593Smuzhiyun				};
386*4882a593Smuzhiyun			};
387*4882a593Smuzhiyun
388*4882a593Smuzhiyun			vcca3v0_codec: LDO_REG5 {
389*4882a593Smuzhiyun				regulator-name = "vcca3v0_codec";
390*4882a593Smuzhiyun				regulator-always-on;
391*4882a593Smuzhiyun				regulator-boot-on;
392*4882a593Smuzhiyun				regulator-min-microvolt = <3000000>;
393*4882a593Smuzhiyun				regulator-max-microvolt = <3000000>;
394*4882a593Smuzhiyun				regulator-state-mem {
395*4882a593Smuzhiyun					regulator-off-in-suspend;
396*4882a593Smuzhiyun				};
397*4882a593Smuzhiyun			};
398*4882a593Smuzhiyun
399*4882a593Smuzhiyun			vcc_1v5: LDO_REG6 {
400*4882a593Smuzhiyun				regulator-name = "vcc_1v5";
401*4882a593Smuzhiyun				regulator-always-on;
402*4882a593Smuzhiyun				regulator-boot-on;
403*4882a593Smuzhiyun				regulator-min-microvolt = <1500000>;
404*4882a593Smuzhiyun				regulator-max-microvolt = <1500000>;
405*4882a593Smuzhiyun				regulator-state-mem {
406*4882a593Smuzhiyun					regulator-on-in-suspend;
407*4882a593Smuzhiyun					regulator-suspend-microvolt = <1500000>;
408*4882a593Smuzhiyun				};
409*4882a593Smuzhiyun			};
410*4882a593Smuzhiyun
411*4882a593Smuzhiyun			vcca1v8_codec: LDO_REG7 {
412*4882a593Smuzhiyun				regulator-name = "vcca1v8_codec";
413*4882a593Smuzhiyun				regulator-always-on;
414*4882a593Smuzhiyun				regulator-boot-on;
415*4882a593Smuzhiyun				regulator-min-microvolt = <1800000>;
416*4882a593Smuzhiyun				regulator-max-microvolt = <1800000>;
417*4882a593Smuzhiyun				regulator-state-mem {
418*4882a593Smuzhiyun					regulator-off-in-suspend;
419*4882a593Smuzhiyun				};
420*4882a593Smuzhiyun			};
421*4882a593Smuzhiyun
422*4882a593Smuzhiyun			vcc_3v0: LDO_REG8 {
423*4882a593Smuzhiyun				regulator-name = "vcc_3v0";
424*4882a593Smuzhiyun				regulator-always-on;
425*4882a593Smuzhiyun				regulator-boot-on;
426*4882a593Smuzhiyun				regulator-min-microvolt = <3000000>;
427*4882a593Smuzhiyun				regulator-max-microvolt = <3000000>;
428*4882a593Smuzhiyun				regulator-state-mem {
429*4882a593Smuzhiyun					regulator-on-in-suspend;
430*4882a593Smuzhiyun					regulator-suspend-microvolt = <3000000>;
431*4882a593Smuzhiyun				};
432*4882a593Smuzhiyun			};
433*4882a593Smuzhiyun
434*4882a593Smuzhiyun			vcc3v3_s3: vcc_lan: SWITCH_REG1 {
435*4882a593Smuzhiyun				regulator-name = "vcc3v3_s3";
436*4882a593Smuzhiyun				regulator-always-on;
437*4882a593Smuzhiyun				regulator-boot-on;
438*4882a593Smuzhiyun				regulator-state-mem {
439*4882a593Smuzhiyun					regulator-off-in-suspend;
440*4882a593Smuzhiyun				};
441*4882a593Smuzhiyun			};
442*4882a593Smuzhiyun
443*4882a593Smuzhiyun			vcc3v3_s0: SWITCH_REG2 {
444*4882a593Smuzhiyun				regulator-name = "vcc3v3_s0";
445*4882a593Smuzhiyun				regulator-always-on;
446*4882a593Smuzhiyun				regulator-boot-on;
447*4882a593Smuzhiyun				regulator-state-mem {
448*4882a593Smuzhiyun					regulator-off-in-suspend;
449*4882a593Smuzhiyun				};
450*4882a593Smuzhiyun			};
451*4882a593Smuzhiyun		};
452*4882a593Smuzhiyun	};
453*4882a593Smuzhiyun
454*4882a593Smuzhiyun	vdd_cpu_b: regulator@40 {
455*4882a593Smuzhiyun		compatible = "silergy,syr827";
456*4882a593Smuzhiyun		reg = <0x40>;
457*4882a593Smuzhiyun		fcs,suspend-voltage-selector = <1>;
458*4882a593Smuzhiyun		regulator-name = "vdd_cpu_b";
459*4882a593Smuzhiyun		regulator-min-microvolt = <712500>;
460*4882a593Smuzhiyun		regulator-max-microvolt = <1500000>;
461*4882a593Smuzhiyun		regulator-ramp-delay = <1000>;
462*4882a593Smuzhiyun		regulator-always-on;
463*4882a593Smuzhiyun		regulator-boot-on;
464*4882a593Smuzhiyun		vin-supply = <&vcc_sys>;
465*4882a593Smuzhiyun
466*4882a593Smuzhiyun		regulator-state-mem {
467*4882a593Smuzhiyun			regulator-off-in-suspend;
468*4882a593Smuzhiyun		};
469*4882a593Smuzhiyun	};
470*4882a593Smuzhiyun
471*4882a593Smuzhiyun	vdd_gpu: regulator@41 {
472*4882a593Smuzhiyun		compatible = "silergy,syr828";
473*4882a593Smuzhiyun		reg = <0x41>;
474*4882a593Smuzhiyun		fcs,suspend-voltage-selector = <1>;
475*4882a593Smuzhiyun		regulator-name = "vdd_gpu";
476*4882a593Smuzhiyun		regulator-min-microvolt = <712500>;
477*4882a593Smuzhiyun		regulator-max-microvolt = <1500000>;
478*4882a593Smuzhiyun		regulator-ramp-delay = <1000>;
479*4882a593Smuzhiyun		regulator-always-on;
480*4882a593Smuzhiyun		regulator-boot-on;
481*4882a593Smuzhiyun		vin-supply = <&vcc_sys>;
482*4882a593Smuzhiyun
483*4882a593Smuzhiyun		regulator-state-mem {
484*4882a593Smuzhiyun			regulator-off-in-suspend;
485*4882a593Smuzhiyun		};
486*4882a593Smuzhiyun	};
487*4882a593Smuzhiyun};
488*4882a593Smuzhiyun
489*4882a593Smuzhiyun&i2c4 {
490*4882a593Smuzhiyun	status = "okay";
491*4882a593Smuzhiyun	i2c-scl-rising-time-ns = <475>;
492*4882a593Smuzhiyun	i2c-scl-falling-time-ns = <26>;
493*4882a593Smuzhiyun
494*4882a593Smuzhiyun	usbc0: fusb302@22 {
495*4882a593Smuzhiyun		compatible = "fcs,fusb302";
496*4882a593Smuzhiyun		reg = <0x22>;
497*4882a593Smuzhiyun		interrupt-parent = <&gpio1>;
498*4882a593Smuzhiyun		interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
499*4882a593Smuzhiyun		pinctrl-names = "default";
500*4882a593Smuzhiyun		pinctrl-0 = <&usbc0_int>;
501*4882a593Smuzhiyun		vbus-supply = <&vcc5v0_typec0>;
502*4882a593Smuzhiyun		status = "okay";
503*4882a593Smuzhiyun
504*4882a593Smuzhiyun		ports {
505*4882a593Smuzhiyun			#address-cells = <1>;
506*4882a593Smuzhiyun			#size-cells = <0>;
507*4882a593Smuzhiyun
508*4882a593Smuzhiyun			port@0 {
509*4882a593Smuzhiyun				reg = <0>;
510*4882a593Smuzhiyun				usbc0_role_sw: endpoint@0 {
511*4882a593Smuzhiyun					remote-endpoint = <&dwc3_0_role_switch>;
512*4882a593Smuzhiyun				};
513*4882a593Smuzhiyun			};
514*4882a593Smuzhiyun		};
515*4882a593Smuzhiyun
516*4882a593Smuzhiyun		usb_con: connector {
517*4882a593Smuzhiyun			compatible = "usb-c-connector";
518*4882a593Smuzhiyun			label = "USB-C";
519*4882a593Smuzhiyun			data-role = "dual";
520*4882a593Smuzhiyun			power-role = "dual";
521*4882a593Smuzhiyun			try-power-role = "sink";
522*4882a593Smuzhiyun			op-sink-microwatt = <1000000>;
523*4882a593Smuzhiyun			sink-pdos =
524*4882a593Smuzhiyun				<PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
525*4882a593Smuzhiyun			source-pdos =
526*4882a593Smuzhiyun				<PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
527*4882a593Smuzhiyun
528*4882a593Smuzhiyun			displayport = <&cdn_dp>;
529*4882a593Smuzhiyun
530*4882a593Smuzhiyun			altmodes {
531*4882a593Smuzhiyun				#address-cells = <1>;
532*4882a593Smuzhiyun				#size-cells = <0>;
533*4882a593Smuzhiyun
534*4882a593Smuzhiyun				altmode@0 {
535*4882a593Smuzhiyun					reg = <0>;
536*4882a593Smuzhiyun					svid = <0xff01>;
537*4882a593Smuzhiyun					vdo = <0xffffffff>;
538*4882a593Smuzhiyun				};
539*4882a593Smuzhiyun			};
540*4882a593Smuzhiyun
541*4882a593Smuzhiyun			ports {
542*4882a593Smuzhiyun				#address-cells = <1>;
543*4882a593Smuzhiyun				#size-cells = <0>;
544*4882a593Smuzhiyun
545*4882a593Smuzhiyun				port@0 {
546*4882a593Smuzhiyun					reg = <0>;
547*4882a593Smuzhiyun					usbc0_orien_sw: endpoint {
548*4882a593Smuzhiyun						remote-endpoint = <&tcphy0_orientation_switch>;
549*4882a593Smuzhiyun					};
550*4882a593Smuzhiyun				};
551*4882a593Smuzhiyun				port@1 {
552*4882a593Smuzhiyun					reg = <1>;
553*4882a593Smuzhiyun					dp_mode_sw: endpoint {
554*4882a593Smuzhiyun						remote-endpoint = <&tcphy_dp_altmode_switch>;
555*4882a593Smuzhiyun					};
556*4882a593Smuzhiyun				};
557*4882a593Smuzhiyun			};
558*4882a593Smuzhiyun		};
559*4882a593Smuzhiyun	};
560*4882a593Smuzhiyun};
561*4882a593Smuzhiyun
562*4882a593Smuzhiyun&i2s2 {
563*4882a593Smuzhiyun	status = "okay";
564*4882a593Smuzhiyun};
565*4882a593Smuzhiyun
566*4882a593Smuzhiyun&io_domains {
567*4882a593Smuzhiyun	status = "okay";
568*4882a593Smuzhiyun
569*4882a593Smuzhiyun	bt656-supply = <&vcc_3v0>;
570*4882a593Smuzhiyun	audio-supply = <&vcca1v8_codec>;
571*4882a593Smuzhiyun	sdmmc-supply = <&vcc_sdio>;
572*4882a593Smuzhiyun	gpio1830-supply = <&vcc_3v0>;
573*4882a593Smuzhiyun};
574*4882a593Smuzhiyun
575*4882a593Smuzhiyun&pmu_io_domains {
576*4882a593Smuzhiyun	pmu1830-supply = <&vcc_3v0>;
577*4882a593Smuzhiyun	status = "okay";
578*4882a593Smuzhiyun};
579*4882a593Smuzhiyun
580*4882a593Smuzhiyun&pinctrl {
581*4882a593Smuzhiyun	buttons {
582*4882a593Smuzhiyun		pwr_btn: pwr-btn {
583*4882a593Smuzhiyun			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
584*4882a593Smuzhiyun		};
585*4882a593Smuzhiyun	};
586*4882a593Smuzhiyun
587*4882a593Smuzhiyun	fan {
588*4882a593Smuzhiyun		motor_pwr: motor-pwr {
589*4882a593Smuzhiyun			rockchip,pins =
590*4882a593Smuzhiyun				<1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
591*4882a593Smuzhiyun		};
592*4882a593Smuzhiyun	};
593*4882a593Smuzhiyun
594*4882a593Smuzhiyun	pmic {
595*4882a593Smuzhiyun		pmic_int_l: pmic-int-l {
596*4882a593Smuzhiyun			rockchip,pins =
597*4882a593Smuzhiyun				<1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
598*4882a593Smuzhiyun		};
599*4882a593Smuzhiyun
600*4882a593Smuzhiyun		vsel1_pin: vsel1-pin {
601*4882a593Smuzhiyun			rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
602*4882a593Smuzhiyun		};
603*4882a593Smuzhiyun
604*4882a593Smuzhiyun		vsel2_pin: vsel2-pin {
605*4882a593Smuzhiyun			rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
606*4882a593Smuzhiyun		};
607*4882a593Smuzhiyun	};
608*4882a593Smuzhiyun
609*4882a593Smuzhiyun	sd {
610*4882a593Smuzhiyun		sdmmc0_pwr_h: sdmmc0-pwr-h {
611*4882a593Smuzhiyun			rockchip,pins =
612*4882a593Smuzhiyun				<0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
613*4882a593Smuzhiyun		};
614*4882a593Smuzhiyun	};
615*4882a593Smuzhiyun
616*4882a593Smuzhiyun	usb2 {
617*4882a593Smuzhiyun		vcc5v0_host_en: vcc5v0-host-en {
618*4882a593Smuzhiyun			rockchip,pins =
619*4882a593Smuzhiyun				<4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
620*4882a593Smuzhiyun		};
621*4882a593Smuzhiyun	};
622*4882a593Smuzhiyun
623*4882a593Smuzhiyun	usb-typec {
624*4882a593Smuzhiyun		usbc0_int: usbc0-int {
625*4882a593Smuzhiyun			rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
626*4882a593Smuzhiyun		};
627*4882a593Smuzhiyun
628*4882a593Smuzhiyun		vcc5v0_typec0_en: vcc5v0-typec0-en {
629*4882a593Smuzhiyun			rockchip,pins =
630*4882a593Smuzhiyun				<2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
631*4882a593Smuzhiyun		};
632*4882a593Smuzhiyun	};
633*4882a593Smuzhiyun};
634*4882a593Smuzhiyun
635*4882a593Smuzhiyun&pwm0 {
636*4882a593Smuzhiyun	status = "okay";
637*4882a593Smuzhiyun};
638*4882a593Smuzhiyun
639*4882a593Smuzhiyun&pwm2 {
640*4882a593Smuzhiyun	status = "okay";
641*4882a593Smuzhiyun	pinctrl-names = "active";
642*4882a593Smuzhiyun	pinctrl-0 = <&pwm2_pin_pull_down>;
643*4882a593Smuzhiyun};
644*4882a593Smuzhiyun
645*4882a593Smuzhiyun&saradc {
646*4882a593Smuzhiyun	vref-supply = <&vcca1v8_s3>;
647*4882a593Smuzhiyun	status = "okay";
648*4882a593Smuzhiyun};
649*4882a593Smuzhiyun
650*4882a593Smuzhiyun&sdhci {
651*4882a593Smuzhiyun	bus-width = <8>;
652*4882a593Smuzhiyun	mmc-hs400-1_8v;
653*4882a593Smuzhiyun	mmc-hs400-enhanced-strobe;
654*4882a593Smuzhiyun	non-removable;
655*4882a593Smuzhiyun	status = "okay";
656*4882a593Smuzhiyun};
657*4882a593Smuzhiyun
658*4882a593Smuzhiyun&sdmmc {
659*4882a593Smuzhiyun	broken-cd;
660*4882a593Smuzhiyun	bus-width = <4>;
661*4882a593Smuzhiyun	cap-mmc-highspeed;
662*4882a593Smuzhiyun	cap-sd-highspeed;
663*4882a593Smuzhiyun	clock-frequency = <150000000>;
664*4882a593Smuzhiyun	disable-wp;
665*4882a593Smuzhiyun	max-frequency = <150000000>;
666*4882a593Smuzhiyun	pinctrl-names = "default";
667*4882a593Smuzhiyun	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
668*4882a593Smuzhiyun	vmmc-supply = <&vcc3v0_sd>;
669*4882a593Smuzhiyun	vqmmc-supply = <&vcc_sdio>;
670*4882a593Smuzhiyun	status = "okay";
671*4882a593Smuzhiyun};
672*4882a593Smuzhiyun
673*4882a593Smuzhiyun&tcphy0 {
674*4882a593Smuzhiyun	status = "okay";
675*4882a593Smuzhiyun	svid = <0xff01>;
676*4882a593Smuzhiyun	orientation-switch;
677*4882a593Smuzhiyun
678*4882a593Smuzhiyun	port {
679*4882a593Smuzhiyun		#address-cells = <1>;
680*4882a593Smuzhiyun		#size-cells = <0>;
681*4882a593Smuzhiyun		tcphy0_orientation_switch: endpoint@0 {
682*4882a593Smuzhiyun			reg = <0>;
683*4882a593Smuzhiyun			remote-endpoint = <&usbc0_orien_sw>;
684*4882a593Smuzhiyun		};
685*4882a593Smuzhiyun		tcphy_dp_altmode_switch: endpoint@1 {
686*4882a593Smuzhiyun			reg = <1>;
687*4882a593Smuzhiyun			remote-endpoint = <&dp_mode_sw>;
688*4882a593Smuzhiyun		};
689*4882a593Smuzhiyun	};
690*4882a593Smuzhiyun};
691*4882a593Smuzhiyun
692*4882a593Smuzhiyun&tcphy1 {
693*4882a593Smuzhiyun	status = "okay";
694*4882a593Smuzhiyun};
695*4882a593Smuzhiyun
696*4882a593Smuzhiyun&tsadc {
697*4882a593Smuzhiyun	/* tshut mode 0:CRU 1:GPIO */
698*4882a593Smuzhiyun	rockchip,hw-tshut-mode = <1>;
699*4882a593Smuzhiyun	/* tshut polarity 0:LOW 1:HIGH */
700*4882a593Smuzhiyun	rockchip,hw-tshut-polarity = <1>;
701*4882a593Smuzhiyun	status = "okay";
702*4882a593Smuzhiyun};
703*4882a593Smuzhiyun
704*4882a593Smuzhiyun&u2phy0 {
705*4882a593Smuzhiyun	status = "okay";
706*4882a593Smuzhiyun
707*4882a593Smuzhiyun	u2phy0_otg: otg-port {
708*4882a593Smuzhiyun		status = "okay";
709*4882a593Smuzhiyun	};
710*4882a593Smuzhiyun
711*4882a593Smuzhiyun	u2phy0_host: host-port {
712*4882a593Smuzhiyun		phy-supply = <&vcc5v0_host>;
713*4882a593Smuzhiyun		status = "okay";
714*4882a593Smuzhiyun	};
715*4882a593Smuzhiyun};
716*4882a593Smuzhiyun
717*4882a593Smuzhiyun&u2phy1 {
718*4882a593Smuzhiyun	status = "okay";
719*4882a593Smuzhiyun
720*4882a593Smuzhiyun	u2phy1_otg: otg-port {
721*4882a593Smuzhiyun		status = "okay";
722*4882a593Smuzhiyun	};
723*4882a593Smuzhiyun
724*4882a593Smuzhiyun	u2phy1_host: host-port {
725*4882a593Smuzhiyun		phy-supply = <&vcc5v0_host>;
726*4882a593Smuzhiyun		status = "okay";
727*4882a593Smuzhiyun	};
728*4882a593Smuzhiyun};
729*4882a593Smuzhiyun
730*4882a593Smuzhiyun&uart0 {
731*4882a593Smuzhiyun	pinctrl-names = "default";
732*4882a593Smuzhiyun	pinctrl-0 = <&uart0_xfer &uart0_cts>;
733*4882a593Smuzhiyun	status = "okay";
734*4882a593Smuzhiyun};
735*4882a593Smuzhiyun
736*4882a593Smuzhiyun&uart2 {
737*4882a593Smuzhiyun	status = "okay";
738*4882a593Smuzhiyun};
739*4882a593Smuzhiyun
740*4882a593Smuzhiyun&usb_host0_ehci {
741*4882a593Smuzhiyun	status = "okay";
742*4882a593Smuzhiyun};
743*4882a593Smuzhiyun
744*4882a593Smuzhiyun&usb_host0_ohci {
745*4882a593Smuzhiyun	status = "okay";
746*4882a593Smuzhiyun};
747*4882a593Smuzhiyun
748*4882a593Smuzhiyun&usb_host1_ehci {
749*4882a593Smuzhiyun	status = "okay";
750*4882a593Smuzhiyun};
751*4882a593Smuzhiyun
752*4882a593Smuzhiyun&usb_host1_ohci {
753*4882a593Smuzhiyun	status = "okay";
754*4882a593Smuzhiyun};
755*4882a593Smuzhiyun
756*4882a593Smuzhiyun&usbdrd3_0 {
757*4882a593Smuzhiyun	status = "okay";
758*4882a593Smuzhiyun};
759*4882a593Smuzhiyun
760*4882a593Smuzhiyun&usbdrd_dwc3_0 {
761*4882a593Smuzhiyun	status = "okay";
762*4882a593Smuzhiyun	dr_mode = "otg";
763*4882a593Smuzhiyun	usb-role-switch;
764*4882a593Smuzhiyun	port {
765*4882a593Smuzhiyun		#address-cells = <1>;
766*4882a593Smuzhiyun		#size-cells = <0>;
767*4882a593Smuzhiyun		dwc3_0_role_switch: endpoint@0 {
768*4882a593Smuzhiyun			reg = <0>;
769*4882a593Smuzhiyun			remote-endpoint = <&usbc0_role_sw>;
770*4882a593Smuzhiyun		};
771*4882a593Smuzhiyun	};
772*4882a593Smuzhiyun};
773*4882a593Smuzhiyun
774*4882a593Smuzhiyun&usbdrd3_1 {
775*4882a593Smuzhiyun	status = "okay";
776*4882a593Smuzhiyun};
777*4882a593Smuzhiyun
778*4882a593Smuzhiyun&usbdrd_dwc3_1 {
779*4882a593Smuzhiyun	status = "okay";
780*4882a593Smuzhiyun	dr_mode = "host";
781*4882a593Smuzhiyun};
782*4882a593Smuzhiyun
783*4882a593Smuzhiyun&vopb {
784*4882a593Smuzhiyun	status = "okay";
785*4882a593Smuzhiyun};
786*4882a593Smuzhiyun
787*4882a593Smuzhiyun&vopb_mmu {
788*4882a593Smuzhiyun	status = "okay";
789*4882a593Smuzhiyun};
790*4882a593Smuzhiyun
791*4882a593Smuzhiyun&vopl {
792*4882a593Smuzhiyun	status = "okay";
793*4882a593Smuzhiyun};
794*4882a593Smuzhiyun
795*4882a593Smuzhiyun&vopl_mmu {
796*4882a593Smuzhiyun	status = "okay";
797*4882a593Smuzhiyun};