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/input/linux-event-codes.h>
7#include <dt-bindings/leds/common.h>
8#include <dt-bindings/pinctrl/rockchip.h>
9#include <dt-bindings/soc/rockchip,vop2.h>
10#include "rk3566.dtsi"
11
12/ {
13	model = "Powkiddy x55";
14	compatible = "powkiddy,x55", "rockchip,rk3566";
15
16	aliases {
17		mmc0 = &sdhci;
18		mmc1 = &sdmmc0;
19		mmc2 = &sdmmc2;
20		mmc3 = &sdmmc1;
21	};
22
23	chosen: chosen {
24		stdout-path = "serial2:1500000n8";
25	};
26
27	adc_joystick: adc-joystick {
28		compatible = "adc-joystick";
29		io-channels = <&saradc 0>, <&saradc 1>,
30			      <&saradc 2>, <&saradc 3>;
31		poll-interval = <60>;
32		#address-cells = <1>;
33		#size-cells = <0>;
34
35		axis@0 {
36			reg = <0>;
37			abs-flat = <30>;
38			abs-fuzz = <20>;
39			abs-range = <15 1023>;
40			linux,code = <ABS_X>;
41		};
42
43		axis@1 {
44			reg = <1>;
45			abs-flat = <30>;
46			abs-fuzz = <20>;
47			abs-range = <1023 15>;
48			linux,code = <ABS_Y>;
49		};
50
51		axis@2 {
52			reg = <2>;
53			abs-flat = <30>;
54			abs-fuzz = <20>;
55			abs-range = <15 1023>;
56			linux,code = <ABS_RX>;
57		};
58
59		axis@3 {
60			reg = <3>;
61			abs-flat = <30>;
62			abs-fuzz = <20>;
63			abs-range = <1023 15>;
64			linux,code = <ABS_RY>;
65		};
66	};
67
68	backlight: backlight {
69		compatible = "pwm-backlight";
70		power-supply = <&vcc_sys>;
71		pwms = <&pwm4 0 25000 0>;
72	};
73
74	battery: battery {
75		compatible = "simple-battery";
76		charge-full-design-microamp-hours = <4000000>;
77		charge-term-current-microamp = <300000>;
78		constant-charge-current-max-microamp = <2000000>;
79		constant-charge-voltage-max-microvolt = <4300000>;
80		factory-internal-resistance-micro-ohms = <91000>;
81		voltage-max-design-microvolt = <4138000>;
82		voltage-min-design-microvolt = <3400000>;
83
84		ocv-capacity-celsius = <20>;
85		ocv-capacity-table-0 =  <4138000 100>, <4083000 95>, <4059000 90>, <4044000 85>,
86					<4030000 80>, <4020000 75>, <4006000 70>, <3972000 65>,
87					<3934000 60>, <3904000 55>, <3878000 50>, <3857000 45>,
88					<3843000 40>, <3826000 35>, <3801000 30>, <3768000 25>,
89					<3735000 20>, <3688000 15>, <3621000 10>, <3553000 5>,
90					<3400000 0>;
91	};
92
93	gpio_keys_control: gpio-keys-control {
94		compatible = "gpio-keys";
95		pinctrl-0 = <&btn_pins_ctrl>;
96		pinctrl-names = "default";
97
98		button-a {
99			gpios = <&gpio3 RK_PD3 GPIO_ACTIVE_LOW>;
100			label = "EAST";
101			linux,code = <BTN_EAST>;
102		};
103
104		button-b {
105			gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>;
106			label = "SOUTH";
107			linux,code = <BTN_SOUTH>;
108		};
109
110		button-down {
111			gpios = <&gpio4 RK_PA1 GPIO_ACTIVE_LOW>;
112			label = "DPAD-DOWN";
113			linux,code = <BTN_DPAD_DOWN>;
114		};
115
116		button-l1 {
117			gpios = <&gpio3 RK_PD0 GPIO_ACTIVE_LOW>;
118			label = "TL";
119			linux,code = <BTN_TL>;
120		};
121
122		button-l2 {
123			gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>;
124			label = "TL2";
125			linux,code = <BTN_TL2>;
126		};
127
128		button-left {
129			gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>;
130			label = "DPAD-LEFT";
131			linux,code = <BTN_DPAD_LEFT>;
132		};
133
134		button-right {
135			gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_LOW>;
136			label = "DPAD-RIGHT";
137			linux,code = <BTN_DPAD_RIGHT>;
138		};
139
140		button-select {
141			gpios = <&gpio4 RK_PA4 GPIO_ACTIVE_LOW>;
142			label = "SELECT";
143			linux,code = <BTN_SELECT>;
144		};
145
146		button-start {
147			gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_LOW>;
148			label = "START";
149			linux,code = <BTN_START>;
150		};
151
152		button-thumbl {
153			gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>;
154			label = "THUMBL";
155			linux,code = <BTN_THUMBL>;
156		};
157
158		button-thumbr {
159			gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_LOW>;
160			label = "THUMBR";
161			linux,code = <BTN_THUMBR>;
162		};
163
164		button-r1 {
165			gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>;
166			label = "TR";
167			linux,code = <BTN_TR>;
168		};
169
170		button-r2 {
171			gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_LOW>;
172			label = "TR2";
173			linux,code = <BTN_TR2>;
174		};
175
176		button-up {
177			gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>;
178			label = "DPAD-UP";
179			linux,code = <BTN_DPAD_UP>;
180		};
181
182		button-x {
183			gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
184			label = "NORTH";
185			linux,code = <BTN_NORTH>;
186		};
187
188		button-y {
189			gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>;
190			label = "WEST";
191			linux,code = <BTN_WEST>;
192		};
193	};
194
195	gpio_keys_vol: gpio-keys-vol {
196		compatible = "gpio-keys";
197		autorepeat;
198		pinctrl-0 = <&btn_pins_vol>;
199		pinctrl-names = "default";
200
201		button-voldown {
202			gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>;
203			label = "VOLUMEDOWN";
204			linux,code = <KEY_VOLUMEDOWN>;
205		};
206
207		button-volup {
208			gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_LOW>;
209			label = "VOLUMEUP";
210			linux,code = <KEY_VOLUMEUP>;
211		};
212	};
213
214	gpio_leds: gpio-leds {
215		compatible = "gpio-leds";
216		pinctrl-names = "default";
217		pinctrl-0 = <&led_pins>;
218
219		red_led: led-0 {
220			color = <LED_COLOR_ID_RED>;
221			default-state = "off";
222			gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
223			function = LED_FUNCTION_STATUS;
224		};
225
226		green_led: led-1 {
227			color = <LED_COLOR_ID_GREEN>;
228			default-state = "on";
229			gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>;
230			function = LED_FUNCTION_POWER;
231		};
232
233		amber_led: led-2 {
234			color = <LED_COLOR_ID_AMBER>;
235			gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
236			function = LED_FUNCTION_CHARGING;
237		};
238
239	};
240
241	hdmi-con {
242		compatible = "hdmi-connector";
243		ddc-i2c-bus = <&i2c5>;
244		type = "c";
245
246		port {
247			hdmi_con_in: endpoint {
248				remote-endpoint = <&hdmi_out_con>;
249			};
250		};
251	};
252
253	sdio_pwrseq: sdio-pwrseq {
254		compatible = "mmc-pwrseq-simple";
255		clocks = <&rk817 1>;
256		clock-names = "ext_clock";
257		pinctrl-0 = <&wifi_enable_h>;
258		pinctrl-names = "default";
259		post-power-on-delay-ms = <200>;
260		reset-gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>;
261	};
262
263	/* Channels reversed for both headphones and speakers. */
264	sound {
265		compatible = "simple-audio-card";
266		pinctrl-0 = <&hp_det>;
267		pinctrl-names = "default";
268		simple-audio-card,name = "rk817_ext";
269		simple-audio-card,aux-devs = <&spk_amp>;
270		simple-audio-card,format = "i2s";
271		simple-audio-card,hp-det-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
272		simple-audio-card,mclk-fs = <256>;
273		simple-audio-card,widgets =
274			"Microphone", "Mic Jack",
275			"Headphone", "Headphones",
276			"Speaker", "Internal Speakers";
277		simple-audio-card,routing =
278			"MICL", "Mic Jack",
279			"Headphones", "HPOL",
280			"Headphones", "HPOR",
281			"Internal Speakers", "Speaker Amp OUTL",
282			"Internal Speakers", "Speaker Amp OUTR",
283			"Speaker Amp INL", "HPOL",
284			"Speaker Amp INR", "HPOR";
285		simple-audio-card,pin-switches = "Internal Speakers";
286
287		simple-audio-card,codec {
288			sound-dai = <&rk817>;
289		};
290
291		simple-audio-card,cpu {
292			sound-dai = <&i2s1_8ch>;
293		};
294	};
295
296	spk_amp: audio-amplifier {
297		compatible = "simple-audio-amplifier";
298		enable-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;
299		pinctrl-0 = <&spk_amp_enable_h>;
300		pinctrl-names = "default";
301		sound-name-prefix = "Speaker Amp";
302	};
303
304	vcc5v0_host: regulator-vcc5v0-host {
305		compatible = "regulator-fixed";
306		enable-active-high;
307		gpio = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
308		pinctrl-0 = <&vcc5v0_host_en>;
309		pinctrl-names = "default";
310		regulator-name = "vcc5v0_host";
311		vin-supply = <&dcdc_boost>;
312	};
313
314	vcc_lcd: regulator-vcc-lcd {
315		compatible = "regulator-fixed";
316		enable-active-high;
317		gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
318		pinctrl-0 = <&vcc_lcd_en>;
319		pinctrl-names = "default";
320		regulator-min-microvolt = <3300000>;
321		regulator-max-microvolt = <3300000>;
322		regulator-name = "vcc_lcd";
323	};
324
325	vcc_sys: regulator-vcc-sys {
326		compatible = "regulator-fixed";
327		regulator-always-on;
328		regulator-boot-on;
329		regulator-min-microvolt = <3800000>;
330		regulator-max-microvolt = <3800000>;
331		regulator-name = "vcc_sys";
332	};
333
334	vcc_wifi: regulator-vcc-wifi {
335		compatible = "regulator-fixed";
336		gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
337		pinctrl-0 = <&vcc_wifi_h>;
338		pinctrl-names = "default";
339		regulator-min-microvolt = <3300000>;
340		regulator-max-microvolt = <3300000>;
341		regulator-name = "vcc_wifi";
342	};
343};
344
345&combphy1 {
346	status = "okay";
347};
348
349&cru {
350	assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>,
351			  <&pmucru PLL_PPLL>, <&cru PLL_VPLL>;
352	assigned-clock-rates = <32768>, <1200000000>,
353			       <200000000>, <126400000>;
354};
355
356&cpu0 {
357	cpu-supply = <&vdd_cpu>;
358};
359
360&cpu1 {
361	cpu-supply = <&vdd_cpu>;
362};
363
364&cpu2 {
365	cpu-supply = <&vdd_cpu>;
366};
367
368&cpu3 {
369	cpu-supply = <&vdd_cpu>;
370};
371
372&dsi_dphy0 {
373	status = "okay";
374};
375
376&dsi0 {
377	status = "okay";
378	#address-cells = <1>;
379	#size-cells = <0>;
380
381	ports {
382		dsi0_in: port@0 {
383			reg = <0>;
384			dsi0_in_vp1: endpoint {
385				remote-endpoint = <&vp1_out_dsi0>;
386			};
387		};
388
389		dsi0_out: port@1 {
390			reg = <1>;
391			mipi_out_panel: endpoint {
392				remote-endpoint = <&mipi_in_panel>;
393			};
394		};
395	};
396
397	panel: panel@0 {
398		compatible = "powkiddy,x55-panel", "himax,hx8394";
399		reg = <0>;
400		backlight = <&backlight>;
401		iovcc-supply = <&vcc_lcd>;
402		pinctrl-names = "default";
403		pinctrl-0 = <&lcd_rst>;
404		reset-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_LOW>;
405		rotation = <270>;
406		vcc-supply = <&vcc_lcd>;
407
408		port {
409			mipi_in_panel: endpoint {
410				remote-endpoint = <&mipi_out_panel>;
411			};
412		};
413	};
414};
415
416&gpu {
417	mali-supply = <&vdd_gpu>;
418	status = "okay";
419};
420
421&hdmi {
422	ddc-i2c-bus = <&i2c5>;
423	pinctrl-0 = <&hdmitxm0_cec>;
424	pinctrl-names = "default";
425	status = "okay";
426};
427
428&hdmi_in {
429	hdmi_in_vp0: endpoint {
430		remote-endpoint = <&vp0_out_hdmi>;
431	};
432};
433
434&hdmi_out {
435	hdmi_out_con: endpoint {
436		remote-endpoint = <&hdmi_con_in>;
437	};
438};
439
440&hdmi_sound {
441	status = "okay";
442};
443
444&i2c0 {
445	status = "okay";
446
447	rk817: pmic@20 {
448		compatible = "rockchip,rk817";
449		reg = <0x20>;
450		assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
451		assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
452		clock-names = "mclk";
453		clock-output-names = "rk808-clkout1", "rk808-clkout2";
454		clocks = <&cru I2S1_MCLKOUT_TX>;
455		interrupt-parent = <&gpio0>;
456		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
457		pinctrl-names = "default";
458		pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>;
459		wakeup-source;
460		#clock-cells = <1>;
461		#sound-dai-cells = <0>;
462
463		vcc1-supply = <&vcc_sys>;
464		vcc2-supply = <&vcc_sys>;
465		vcc3-supply = <&vcc_sys>;
466		vcc4-supply = <&vcc_sys>;
467		vcc5-supply = <&vcc_sys>;
468		vcc6-supply = <&vcc_sys>;
469		vcc7-supply = <&vcc_sys>;
470		vcc8-supply = <&vcc_sys>;
471		vcc9-supply = <&dcdc_boost>;
472
473		regulators {
474			vdd_logic: DCDC_REG1 {
475				regulator-always-on;
476				regulator-boot-on;
477				regulator-min-microvolt = <500000>;
478				regulator-max-microvolt = <1350000>;
479				regulator-ramp-delay = <6001>;
480				regulator-initial-mode = <0x2>;
481				regulator-name = "vdd_logic";
482				regulator-state-mem {
483					regulator-off-in-suspend;
484					regulator-suspend-microvolt = <900000>;
485				};
486			};
487
488			vdd_gpu: DCDC_REG2 {
489				regulator-always-on;
490				regulator-boot-on;
491				regulator-min-microvolt = <500000>;
492				regulator-max-microvolt = <1350000>;
493				regulator-ramp-delay = <6001>;
494				regulator-initial-mode = <0x2>;
495				regulator-name = "vdd_gpu";
496				regulator-state-mem {
497					regulator-off-in-suspend;
498				};
499			};
500
501			vcc_ddr: DCDC_REG3 {
502				regulator-always-on;
503				regulator-boot-on;
504				regulator-initial-mode = <0x2>;
505				regulator-name = "vcc_ddr";
506				regulator-state-mem {
507					regulator-on-in-suspend;
508				};
509			};
510
511			vcc_3v3: DCDC_REG4 {
512				regulator-always-on;
513				regulator-boot-on;
514				regulator-min-microvolt = <3300000>;
515				regulator-max-microvolt = <3300000>;
516				regulator-initial-mode = <0x2>;
517				regulator-name = "vcc_3v3";
518				regulator-state-mem {
519					regulator-on-in-suspend;
520					regulator-suspend-microvolt = <3300000>;
521				};
522			};
523
524			vcca1v8_pmu: LDO_REG1 {
525				regulator-always-on;
526				regulator-boot-on;
527				regulator-min-microvolt = <1800000>;
528				regulator-max-microvolt = <1800000>;
529				regulator-name = "vcca1v8_pmu";
530				regulator-state-mem {
531					regulator-on-in-suspend;
532					regulator-suspend-microvolt = <1800000>;
533				};
534			};
535
536			vdda_0v9: LDO_REG2 {
537				regulator-always-on;
538				regulator-boot-on;
539				regulator-min-microvolt = <900000>;
540				regulator-max-microvolt = <900000>;
541				regulator-name = "vdda_0v9";
542				regulator-state-mem {
543					regulator-off-in-suspend;
544				};
545			};
546
547			vdda0v9_pmu: LDO_REG3 {
548				regulator-always-on;
549				regulator-boot-on;
550				regulator-min-microvolt = <900000>;
551				regulator-max-microvolt = <900000>;
552				regulator-name = "vdda0v9_pmu";
553				regulator-state-mem {
554					regulator-on-in-suspend;
555					regulator-suspend-microvolt = <900000>;
556				};
557			};
558
559			vccio_acodec: LDO_REG4 {
560				regulator-always-on;
561				regulator-boot-on;
562				regulator-min-microvolt = <3300000>;
563				regulator-max-microvolt = <3300000>;
564				regulator-name = "vccio_acodec";
565				regulator-state-mem {
566					regulator-off-in-suspend;
567				};
568			};
569
570			vccio_sd: LDO_REG5 {
571				regulator-always-on;
572				regulator-boot-on;
573				regulator-min-microvolt = <1800000>;
574				regulator-max-microvolt = <3300000>;
575				regulator-name = "vccio_sd";
576				regulator-state-mem {
577					regulator-off-in-suspend;
578				};
579			};
580
581			vcc3v3_pmu: LDO_REG6 {
582				regulator-always-on;
583				regulator-boot-on;
584				regulator-min-microvolt = <3300000>;
585				regulator-max-microvolt = <3300000>;
586				regulator-name = "vcc3v3_pmu";
587				regulator-state-mem {
588					regulator-on-in-suspend;
589					regulator-suspend-microvolt = <3300000>;
590				};
591			};
592
593			vcc_1v8: LDO_REG7 {
594				regulator-always-on;
595				regulator-boot-on;
596				regulator-min-microvolt = <1800000>;
597				regulator-max-microvolt = <1800000>;
598				regulator-name = "vcc_1v8";
599				regulator-state-mem {
600					regulator-off-in-suspend;
601				};
602			};
603
604			vcc1v8_dvp: LDO_REG8 {
605				regulator-always-on;
606				regulator-boot-on;
607				regulator-min-microvolt = <1800000>;
608				regulator-max-microvolt = <1800000>;
609				regulator-name = "vcc1v8_dvp";
610				regulator-state-mem {
611					regulator-on-in-suspend;
612				};
613			};
614
615			vcc2v8_dvp: LDO_REG9 {
616				regulator-always-on;
617				regulator-boot-on;
618				regulator-min-microvolt = <1800000>;
619				regulator-max-microvolt = <3300000>;
620				regulator-name = "vcc2v8_dvp";
621				regulator-state-mem {
622					regulator-off-in-suspend;
623				};
624			};
625
626			dcdc_boost: BOOST {
627				regulator-min-microvolt = <4700000>;
628				regulator-max-microvolt = <5400000>;
629				regulator-name = "boost";
630				regulator-state-mem {
631					regulator-off-in-suspend;
632				};
633			};
634
635			otg_switch: OTG_SWITCH {
636				regulator-name = "otg_switch";
637				regulator-state-mem {
638					regulator-off-in-suspend;
639				};
640			};
641		};
642
643		rk817_charger: charger {
644			monitored-battery = <&battery>;
645			rockchip,resistor-sense-micro-ohms = <10000>;
646			rockchip,sleep-enter-current-microamp = <150000>;
647			rockchip,sleep-filter-current-microamp = <100000>;
648		};
649
650	};
651
652	vdd_cpu: regulator@1c {
653		compatible = "tcs,tcs4525";
654		reg = <0x1c>;
655		fcs,suspend-voltage-selector = <1>;
656		regulator-always-on;
657		regulator-boot-on;
658		regulator-min-microvolt = <712500>;
659		regulator-max-microvolt = <1390000>;
660		regulator-name = "vdd_cpu";
661		regulator-ramp-delay = <2300>;
662		vin-supply = <&vcc_sys>;
663		regulator-state-mem {
664			regulator-off-in-suspend;
665		};
666	};
667};
668
669&i2c5 {
670	pinctrl-0 = <&i2c5m1_xfer>;
671	pinctrl-names = "default";
672	status = "okay";
673};
674
675&i2s0_8ch {
676	status = "okay";
677};
678
679&i2s1_8ch {
680	pinctrl-0 = <&i2s1m0_sclktx>, <&i2s1m0_lrcktx>, <&i2s1m0_sdi0>,
681		    <&i2s1m0_sdo0>;
682	pinctrl-names = "default";
683	rockchip,trcm-sync-tx-only;
684	status = "okay";
685};
686
687&pinctrl {
688	audio-amplifier {
689		spk_amp_enable_h: spk-amp-enable-h {
690			rockchip,pins =
691				<4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
692		};
693	};
694
695	gpio-control {
696		btn_pins_ctrl: btn-pins-ctrl {
697			rockchip,pins =
698				<3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>,
699				<3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>,
700				<3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>,
701				<3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>,
702				<3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>,
703				<3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>,
704				<3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>,
705				<3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>,
706				<3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>,
707				<3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up>,
708				<4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>,
709				<4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>,
710				<4 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>,
711				<4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>,
712				<4 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>,
713				<4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
714		};
715
716		btn_pins_vol: btn-pins-vol {
717			rockchip,pins =
718				<4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>,
719				<4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
720		};
721	};
722
723	gpio-lcd {
724		lcd_rst: lcd-rst {
725			rockchip,pins =
726				<0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
727		};
728	};
729
730	gpio-leds {
731		led_pins: led-pins {
732			rockchip,pins =
733				<4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>,
734				<4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>,
735				<4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
736		};
737	};
738
739	hp-detect {
740		hp_det: hp-det {
741			rockchip,pins =
742				<4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
743		};
744	};
745
746	pmic {
747		pmic_int_l: pmic-int-l {
748			rockchip,pins =
749				<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
750		};
751	};
752
753	sdio-pwrseq {
754		wifi_enable_h: wifi-enable-h {
755			rockchip,pins =
756				<0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
757		};
758	};
759
760	usb {
761		vcc5v0_host_en: vcc5v0-host-en {
762			rockchip,pins =
763				<4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>;
764		};
765
766		vcc5v0_otg_en: vcc5v0-otg-en {
767			rockchip,pins =
768				<4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
769		};
770	};
771
772	vcc-lcd {
773		vcc_lcd_en: vcc-lcd-en {
774			rockchip,pins =
775				<0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
776		};
777	};
778
779	vcc-wifi {
780		vcc_wifi_h: vcc-wifi-h {
781			rockchip,pins =
782				<0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
783		};
784	};
785};
786
787&pmu_io_domains {
788	status = "okay";
789	pmuio1-supply = <&vcc3v3_pmu>;
790	pmuio2-supply = <&vcca1v8_pmu>;
791	vccio1-supply = <&vccio_acodec>;
792	vccio3-supply = <&vccio_sd>;
793	vccio4-supply = <&vcca1v8_pmu>;
794	vccio5-supply = <&vcc2v8_dvp>;
795	vccio6-supply = <&vcc1v8_dvp>;
796	vccio7-supply = <&vcc_3v3>;
797};
798
799&pwm4 {
800	status = "okay";
801};
802
803&saradc {
804	vref-supply = <&vcc_1v8>;
805	status = "okay";
806};
807
808&sdhci {
809	bus-width = <8>;
810	mmc-hs200-1_8v;
811	non-removable;
812	pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>,
813		    <&emmc_datastrobe>, <&emmc_rstnout>;
814	pinctrl-names = "default";
815	status = "okay";
816};
817
818&sdmmc0 {
819	bus-width = <4>;
820	cap-mmc-highspeed;
821	cap-sd-highspeed;
822	disable-wp;
823	pinctrl-0 = <&sdmmc0_bus4>, <&sdmmc0_clk>, <&sdmmc0_cmd>,
824		    <&sdmmc0_det>;
825	pinctrl-names = "default";
826	sd-uhs-sdr104;
827	vqmmc-supply = <&vccio_sd>;
828	status = "okay";
829};
830
831&sdmmc1 {
832	bus-width = <4>;
833	cap-sd-highspeed;
834	cap-sdio-irq;
835	keep-power-in-suspend;
836	mmc-pwrseq = <&sdio_pwrseq>;
837	non-removable;
838	pinctrl-0 = <&sdmmc1_bus4>, <&sdmmc1_cmd>, <&sdmmc1_clk>;
839	pinctrl-names = "default";
840	vmmc-supply = <&vcc_wifi>;
841	status = "okay";
842};
843
844&sdmmc2 {
845	bus-width = <4>;
846	cap-mmc-highspeed;
847	cap-sd-highspeed;
848	disable-wp;
849	pinctrl-0 = <&sdmmc2m1_bus4>, <&sdmmc2m1_cmd>, <&sdmmc2m1_clk>,
850		    <&sdmmc2m1_det>;
851	pinctrl-names = "default";
852	sd-uhs-sdr104;
853	vqmmc-supply = <&vcc2v8_dvp>;
854	status = "okay";
855};
856
857&tsadc {
858	rockchip,hw-tshut-mode = <1>;
859	rockchip,hw-tshut-polarity = <0>;
860	status = "okay";
861};
862
863&uart1 {
864	pinctrl-0 = <&uart1m0_xfer>, <&uart1m0_ctsn>, <&uart1m0_rtsn>;
865	pinctrl-names = "default";
866	uart-has-rtscts;
867	status = "okay";
868
869	bluetooth {
870		compatible = "realtek,rtl8821cs-bt", "realtek,rtl8723bs-bt";
871		device-wake-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
872		enable-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;
873		host-wake-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
874	};
875};
876
877&uart2 {
878	status = "okay";
879};
880
881&usb_host0_xhci {
882	phys = <&usb2phy0_otg>;
883	phy-names = "usb2-phy";
884	status = "okay";
885};
886
887&usb_host1_xhci {
888	status = "okay";
889};
890
891&usb2phy0 {
892	status = "okay";
893};
894
895&usb2phy0_otg {
896	status = "okay";
897};
898
899&usb2phy0_host {
900	phy-supply = <&vcc5v0_host>;
901	status = "okay";
902};
903
904&vop {
905	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
906	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
907	status = "okay";
908};
909
910&vop_mmu {
911	status = "okay";
912};
913
914&vp0 {
915	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
916		reg = <ROCKCHIP_VOP2_EP_HDMI0>;
917		remote-endpoint = <&hdmi_in_vp0>;
918	};
919};
920
921&vp1 {
922	vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 {
923		reg = <ROCKCHIP_VOP2_EP_MIPI0>;
924		remote-endpoint = <&dsi0_in_vp1>;
925	};
926};
927