xref: /linux/arch/arm64/boot/dts/rockchip/px30-evb.dts (revision 115e74a29b530d121891238e9551c4bcdf7b04b5)
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
4 */
5
6/dts-v1/;
7#include <dt-bindings/gpio/gpio.h>
8#include <dt-bindings/input/input.h>
9#include <dt-bindings/pinctrl/rockchip.h>
10#include "px30.dtsi"
11
12/ {
13	model = "Rockchip PX30 EVB";
14	compatible = "rockchip,px30-evb", "rockchip,px30";
15
16	aliases {
17		ethernet0 = &gmac;
18		mmc0 = &sdmmc;
19		mmc1 = &sdio;
20		mmc2 = &emmc;
21	};
22
23	chosen {
24		stdout-path = "serial5:115200n8";
25	};
26
27	adc-keys {
28		compatible = "adc-keys";
29		io-channels = <&saradc 2>;
30		io-channel-names = "buttons";
31		keyup-threshold-microvolt = <1800000>;
32		poll-interval = <100>;
33
34		button-esc {
35			label = "esc";
36			linux,code = <KEY_ESC>;
37			press-threshold-microvolt = <1310000>;
38		};
39
40		button-home {
41			label = "home";
42			linux,code = <KEY_HOME>;
43			press-threshold-microvolt = <624000>;
44		};
45
46		button-menu {
47			label = "menu";
48			linux,code = <KEY_MENU>;
49			press-threshold-microvolt = <987000>;
50		};
51
52		button-down {
53			label = "volume down";
54			linux,code = <KEY_VOLUMEDOWN>;
55			press-threshold-microvolt = <300000>;
56		};
57
58		button-up {
59			label = "volume up";
60			linux,code = <KEY_VOLUMEUP>;
61			press-threshold-microvolt = <17000>;
62		};
63	};
64
65	backlight: backlight {
66		compatible = "pwm-backlight";
67		pwms = <&pwm1 0 25000 0>;
68		power-supply = <&vcc3v3_lcd>;
69	};
70
71	emmc_pwrseq: emmc-pwrseq {
72		compatible = "mmc-pwrseq-emmc";
73		pinctrl-0 = <&emmc_reset>;
74		pinctrl-names = "default";
75		reset-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
76	};
77
78	sdio_pwrseq: sdio-pwrseq {
79		compatible = "mmc-pwrseq-simple";
80		pinctrl-names = "default";
81		pinctrl-0 = <&wifi_enable_h>;
82
83		/*
84		 * On the module itself this is one of these (depending
85		 * on the actual card populated):
86		 * - SDIO_RESET_L_WL_REG_ON
87		 * - PDN (power down when low)
88		 */
89		reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>; /* GPIO3_A4 */
90	};
91
92	vcc5v0_sys: regulator-vccsys {
93		compatible = "regulator-fixed";
94		regulator-name = "vcc5v0_sys";
95		regulator-always-on;
96		regulator-boot-on;
97		regulator-min-microvolt = <5000000>;
98		regulator-max-microvolt = <5000000>;
99	};
100};
101
102&cpu0 {
103	cpu-supply = <&vdd_arm>;
104};
105
106&cpu1 {
107	cpu-supply = <&vdd_arm>;
108};
109
110&cpu2 {
111	cpu-supply = <&vdd_arm>;
112};
113
114&cpu3 {
115	cpu-supply = <&vdd_arm>;
116};
117
118&csi_dphy {
119	status = "okay";
120};
121
122&display_subsystem {
123	status = "okay";
124};
125
126&dsi {
127	#address-cells = <1>;
128	#size-cells = <0>;
129	status = "okay";
130
131	ports {
132		mipi_out: port@1 {
133			reg = <1>;
134
135			mipi_out_panel: endpoint {
136				remote-endpoint = <&mipi_in_panel>;
137			};
138		};
139	};
140
141	panel@0 {
142		compatible = "xinpeng,xpp055c272";
143		reg = <0>;
144		backlight = <&backlight>;
145		iovcc-supply = <&vcc_1v8>;
146		vci-supply = <&vcc3v3_lcd>;
147
148		port {
149			mipi_in_panel: endpoint {
150				remote-endpoint = <&mipi_out_panel>;
151			};
152		};
153	};
154};
155
156&dsi_dphy {
157	status = "okay";
158};
159
160&emmc {
161	cap-mmc-highspeed;
162	mmc-hs200-1_8v;
163	non-removable;
164	mmc-pwrseq = <&emmc_pwrseq>;
165	vmmc-supply = <&vcc_3v0>;
166	vqmmc-supply = <&vccio_flash>;
167	status = "okay";
168};
169
170&gmac {
171	clock_in_out = "output";
172	phy-supply = <&vcc_rmii>;
173	snps,reset-gpio = <&gpio2 13 GPIO_ACTIVE_LOW>;
174	snps,reset-active-low;
175	snps,reset-delays-us = <0 50000 50000>;
176	status = "okay";
177};
178
179&gpu {
180	mali-supply = <&vdd_log>;
181	status = "okay";
182};
183
184&i2c0 {
185	status = "okay";
186
187	rk809: pmic@20 {
188		compatible = "rockchip,rk809";
189		reg = <0x20>;
190		interrupt-parent = <&gpio0>;
191		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
192		pinctrl-names = "default";
193		pinctrl-0 = <&pmic_int>;
194		system-power-controller;
195		wakeup-source;
196		#clock-cells = <0>;
197		clock-output-names = "xin32k";
198
199		vcc1-supply = <&vcc5v0_sys>;
200		vcc2-supply = <&vcc5v0_sys>;
201		vcc3-supply = <&vcc5v0_sys>;
202		vcc4-supply = <&vcc5v0_sys>;
203		vcc5-supply = <&vcc3v3_sys>;
204		vcc6-supply = <&vcc3v3_sys>;
205		vcc7-supply = <&vcc3v3_sys>;
206		vcc8-supply = <&vcc3v3_sys>;
207		vcc9-supply = <&vcc5v0_sys>;
208
209		regulators {
210			vdd_log: DCDC_REG1 {
211				regulator-name = "vdd_log";
212				regulator-min-microvolt = <950000>;
213				regulator-max-microvolt = <1350000>;
214				regulator-ramp-delay = <6001>;
215				regulator-always-on;
216				regulator-boot-on;
217
218				regulator-state-mem {
219					regulator-on-in-suspend;
220					regulator-suspend-microvolt = <950000>;
221				};
222			};
223
224			vdd_arm: DCDC_REG2 {
225				regulator-name = "vdd_arm";
226				regulator-min-microvolt = <950000>;
227				regulator-max-microvolt = <1350000>;
228				regulator-ramp-delay = <6001>;
229				regulator-always-on;
230				regulator-boot-on;
231
232				regulator-state-mem {
233					regulator-off-in-suspend;
234					regulator-suspend-microvolt = <950000>;
235				};
236			};
237
238			vcc_ddr: DCDC_REG3 {
239				regulator-name = "vcc_ddr";
240				regulator-always-on;
241				regulator-boot-on;
242
243				regulator-state-mem {
244					regulator-on-in-suspend;
245				};
246			};
247
248			vcc_3v0: vcc_rmii: DCDC_REG4 {
249				regulator-name = "vcc_3v0";
250				regulator-min-microvolt = <3000000>;
251				regulator-max-microvolt = <3000000>;
252				regulator-always-on;
253				regulator-boot-on;
254
255				regulator-state-mem {
256					regulator-on-in-suspend;
257					regulator-suspend-microvolt = <3000000>;
258				};
259			};
260
261			vcc3v3_sys: DCDC_REG5 {
262				regulator-name = "vcc3v3_sys";
263				regulator-min-microvolt = <3300000>;
264				regulator-max-microvolt = <3300000>;
265				regulator-always-on;
266				regulator-boot-on;
267
268				regulator-state-mem {
269					regulator-on-in-suspend;
270					regulator-suspend-microvolt = <3300000>;
271				};
272			};
273
274			vcc_1v0: LDO_REG1 {
275				regulator-name = "vcc_1v0";
276				regulator-min-microvolt = <1000000>;
277				regulator-max-microvolt = <1000000>;
278				regulator-always-on;
279				regulator-boot-on;
280
281				regulator-state-mem {
282					regulator-on-in-suspend;
283					regulator-suspend-microvolt = <1000000>;
284				};
285			};
286
287			vcc_1v8: vccio_flash: vccio_sdio: LDO_REG2 {
288				regulator-name = "vcc_1v8";
289				regulator-min-microvolt = <1800000>;
290				regulator-max-microvolt = <1800000>;
291				regulator-always-on;
292				regulator-boot-on;
293
294				regulator-state-mem {
295					regulator-on-in-suspend;
296					regulator-suspend-microvolt = <1800000>;
297				};
298			};
299
300			vdd_1v0: LDO_REG3 {
301				regulator-name = "vdd_1v0";
302				regulator-min-microvolt = <1000000>;
303				regulator-max-microvolt = <1000000>;
304				regulator-always-on;
305				regulator-boot-on;
306
307				regulator-state-mem {
308					regulator-on-in-suspend;
309					regulator-suspend-microvolt = <1000000>;
310				};
311			};
312
313			vcc3v0_pmu: LDO_REG4 {
314				regulator-name = "vcc3v0_pmu";
315				regulator-min-microvolt = <3000000>;
316				regulator-max-microvolt = <3000000>;
317				regulator-always-on;
318				regulator-boot-on;
319
320				regulator-state-mem {
321					regulator-on-in-suspend;
322					regulator-suspend-microvolt = <3000000>;
323				};
324			};
325
326			vccio_sd: LDO_REG5 {
327				regulator-name = "vccio_sd";
328				regulator-min-microvolt = <1800000>;
329				regulator-max-microvolt = <3300000>;
330				regulator-always-on;
331				regulator-boot-on;
332
333				regulator-state-mem {
334					regulator-on-in-suspend;
335					regulator-suspend-microvolt = <3300000>;
336				};
337			};
338
339			vcc_sd: LDO_REG6 {
340				regulator-name = "vcc_sd";
341				regulator-min-microvolt = <3300000>;
342				regulator-max-microvolt = <3300000>;
343				regulator-boot-on;
344
345				regulator-state-mem {
346					regulator-on-in-suspend;
347					regulator-suspend-microvolt = <3300000>;
348				};
349			};
350
351			vcc2v8_dvp: LDO_REG7 {
352				regulator-name = "vcc2v8_dvp";
353				regulator-min-microvolt = <2800000>;
354				regulator-max-microvolt = <2800000>;
355				regulator-boot-on;
356
357				regulator-state-mem {
358					regulator-off-in-suspend;
359					regulator-suspend-microvolt = <2800000>;
360				};
361			};
362
363			vcc1v8_dvp: LDO_REG8 {
364				regulator-name = "vcc1v8_dvp";
365				regulator-min-microvolt = <1800000>;
366				regulator-max-microvolt = <1800000>;
367				regulator-boot-on;
368
369				regulator-state-mem {
370					regulator-on-in-suspend;
371					regulator-suspend-microvolt = <1800000>;
372				};
373			};
374
375			vcc1v5_dvp: LDO_REG9 {
376				regulator-name = "vcc1v5_dvp";
377				regulator-min-microvolt = <1500000>;
378				regulator-max-microvolt = <1500000>;
379				regulator-boot-on;
380
381				regulator-state-mem {
382					regulator-off-in-suspend;
383					regulator-suspend-microvolt = <1500000>;
384				};
385			};
386
387			vcc3v3_lcd: SWITCH_REG1 {
388				regulator-name = "vcc3v3_lcd";
389				regulator-boot-on;
390			};
391
392			vcc5v0_host: SWITCH_REG2 {
393				regulator-name = "vcc5v0_host";
394				regulator-always-on;
395				regulator-boot-on;
396			};
397		};
398	};
399};
400
401&i2c1 {
402	status = "okay";
403
404	sensor@d {
405		compatible = "asahi-kasei,ak8963";
406		reg = <0x0d>;
407		gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
408		vdd-supply = <&vcc3v0_pmu>;
409		mount-matrix = "1", /* x0 */
410			       "0", /* y0 */
411			       "0", /* z0 */
412			       "0", /* x1 */
413			       "1", /* y1 */
414			       "0", /* z1 */
415			       "0", /* x2 */
416			       "0", /* y2 */
417			       "1"; /* z2 */
418	};
419
420	touchscreen@14 {
421		compatible = "goodix,gt1151";
422		reg = <0x14>;
423		interrupt-parent = <&gpio0>;
424		interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
425		irq-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
426		reset-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
427		VDDIO-supply = <&vcc3v3_lcd>;
428	};
429
430	sensor@4c {
431		compatible = "fsl,mma7660";
432		reg = <0x4c>;
433		interrupt-parent = <&gpio0>;
434		interrupts = <RK_PB7 IRQ_TYPE_LEVEL_LOW>;
435	};
436};
437
438&i2c2 {
439	status = "okay";
440
441	clock-frequency = <100000>;
442
443	/* These are relatively safe rise/fall times; TODO: measure */
444	i2c-scl-falling-time-ns = <50>;
445	i2c-scl-rising-time-ns = <300>;
446
447	ov5695: ov5695@36 {
448		compatible = "ovti,ov5695";
449		reg = <0x36>;
450		avdd-supply = <&vcc2v8_dvp>;
451		clocks = <&cru SCLK_CIF_OUT>;
452		clock-names = "xvclk";
453		dvdd-supply = <&vcc1v5_dvp>;
454		dovdd-supply = <&vcc1v8_dvp>;
455		pinctrl-names = "default";
456		pinctrl-0 = <&cif_clkout_m0 &mipi_pdn>;
457		reset-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_LOW>;
458
459		port {
460			ucam_out: endpoint {
461				remote-endpoint = <&mipi_in_ucam>;
462				data-lanes = <1 2>;
463			};
464		};
465	};
466};
467
468&i2s1_2ch {
469	status = "okay";
470};
471
472&io_domains {
473	status = "okay";
474
475	vccio1-supply = <&vccio_sdio>;
476	vccio2-supply = <&vccio_sd>;
477	vccio3-supply = <&vcc_3v0>;
478	vccio4-supply = <&vcc3v0_pmu>;
479	vccio5-supply = <&vcc_3v0>;
480	vccio6-supply = <&vccio_flash>;
481};
482
483&isp {
484	status = "okay";
485
486	ports {
487		port@0 {
488			mipi_in_ucam: endpoint {
489				data-lanes = <1 2>;
490				remote-endpoint = <&ucam_out>;
491			};
492		};
493	};
494};
495
496&isp_mmu {
497	status = "okay";
498};
499
500&pinctrl {
501	headphone {
502		hp_det: hp-det {
503			rockchip,pins =
504				<2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
505		};
506	};
507
508	emmc {
509		emmc_reset: emmc-reset {
510			rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
511		};
512	};
513
514	pmic {
515		pmic_int: pmic_int {
516			rockchip,pins =
517				<0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
518		};
519
520		soc_slppin_gpio: soc_slppin_gpio {
521			rockchip,pins =
522				<0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>;
523		};
524
525		soc_slppin_slp: soc_slppin_slp {
526			rockchip,pins =
527				<0 RK_PA4 1 &pcfg_pull_none>;
528		};
529
530		soc_slppin_rst: soc_slppin_rst {
531			rockchip,pins =
532				<0 RK_PA4 2 &pcfg_pull_none>;
533		};
534	};
535
536	sdio-pwrseq {
537		wifi_enable_h: wifi-enable-h {
538			rockchip,pins =
539				<0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
540		};
541	};
542
543	cif-m0 {
544		cif_clkout_m0: cif-clkout-m0 {
545			rockchip,pins =
546				<2 RK_PB3 1 &pcfg_pull_none_12ma>;
547		};
548	};
549
550	mipi {
551		mipi_pdn: mipi-pdn {
552			rockchip,pins = <2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
553		};
554	};
555};
556
557&pmu_io_domains {
558	status = "okay";
559
560	pmuio1-supply = <&vcc3v0_pmu>;
561	pmuio2-supply = <&vcc3v0_pmu>;
562};
563
564&pwm1 {
565	status = "okay";
566};
567
568&saradc {
569	vref-supply = <&vcc_1v8>;
570	status = "okay";
571};
572
573&sdmmc {
574	cap-mmc-highspeed;
575	cap-sd-highspeed;
576	card-detect-delay = <800>;
577	sd-uhs-sdr12;
578	sd-uhs-sdr25;
579	sd-uhs-sdr50;
580	sd-uhs-sdr104;
581	vmmc-supply = <&vcc_sd>;
582	vqmmc-supply = <&vccio_sd>;
583	status = "okay";
584};
585
586&sdio {
587	cap-sd-highspeed;
588	keep-power-in-suspend;
589	non-removable;
590	mmc-pwrseq = <&sdio_pwrseq>;
591	sd-uhs-sdr104;
592	status = "okay";
593};
594
595&tsadc {
596	rockchip,hw-tshut-mode = <1>;
597	rockchip,hw-tshut-polarity = <1>;
598	status = "okay";
599};
600
601&u2phy {
602	status = "okay";
603
604	u2phy_host: host-port {
605		status = "okay";
606	};
607
608	u2phy_otg: otg-port {
609		status = "okay";
610	};
611};
612
613&uart1 {
614	pinctrl-names = "default";
615	pinctrl-0 = <&uart1_xfer &uart1_cts>;
616	status = "okay";
617};
618
619&uart5 {
620	status = "okay";
621};
622
623&usb20_otg {
624	status = "okay";
625};
626
627&usb_host0_ehci {
628	status = "okay";
629};
630
631&usb_host0_ohci {
632	status = "okay";
633};
634
635&vopb {
636	status = "okay";
637};
638
639&vopb_mmu {
640	status = "okay";
641};
642
643&vopl {
644	status = "okay";
645};
646
647&vopl_mmu {
648	status = "okay";
649};
650