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	chosen {
17		stdout-path = "serial5:115200n8";
18	};
19
20	adc-keys {
21		compatible = "adc-keys";
22		io-channels = <&saradc 2>;
23		io-channel-names = "buttons";
24		keyup-threshold-microvolt = <1800000>;
25		poll-interval = <100>;
26
27		esc-key {
28			label = "esc";
29			linux,code = <KEY_ESC>;
30			press-threshold-microvolt = <1310000>;
31		};
32
33		home-key {
34			label = "home";
35			linux,code = <KEY_HOME>;
36			press-threshold-microvolt = <624000>;
37		};
38
39		menu-key {
40			label = "menu";
41			linux,code = <KEY_MENU>;
42			press-threshold-microvolt = <987000>;
43		};
44
45		vol-down-key {
46			label = "volume down";
47			linux,code = <KEY_VOLUMEDOWN>;
48			press-threshold-microvolt = <300000>;
49		};
50
51		vol-up-key {
52			label = "volume up";
53			linux,code = <KEY_VOLUMEUP>;
54			press-threshold-microvolt = <17000>;
55		};
56	};
57
58	backlight: backlight {
59		compatible = "pwm-backlight";
60		pwms = <&pwm1 0 25000 0>;
61		power-supply = <&vcc3v3_lcd>;
62	};
63
64	emmc_pwrseq: emmc-pwrseq {
65		compatible = "mmc-pwrseq-emmc";
66		pinctrl-0 = <&emmc_reset>;
67		pinctrl-names = "default";
68		reset-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
69	};
70
71	sdio_pwrseq: sdio-pwrseq {
72		compatible = "mmc-pwrseq-simple";
73		pinctrl-names = "default";
74		pinctrl-0 = <&wifi_enable_h>;
75
76		/*
77		 * On the module itself this is one of these (depending
78		 * on the actual card populated):
79		 * - SDIO_RESET_L_WL_REG_ON
80		 * - PDN (power down when low)
81		 */
82		reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>; /* GPIO3_A4 */
83	};
84
85	vcc5v0_sys: vccsys {
86		compatible = "regulator-fixed";
87		regulator-name = "vcc5v0_sys";
88		regulator-always-on;
89		regulator-boot-on;
90		regulator-min-microvolt = <5000000>;
91		regulator-max-microvolt = <5000000>;
92	};
93};
94
95&cpu0 {
96	cpu-supply = <&vdd_arm>;
97};
98
99&cpu1 {
100	cpu-supply = <&vdd_arm>;
101};
102
103&cpu2 {
104	cpu-supply = <&vdd_arm>;
105};
106
107&cpu3 {
108	cpu-supply = <&vdd_arm>;
109};
110
111&display_subsystem {
112	status = "okay";
113};
114
115&emmc {
116	bus-width = <8>;
117	cap-mmc-highspeed;
118	mmc-hs200-1_8v;
119	non-removable;
120	mmc-pwrseq = <&emmc_pwrseq>;
121	vmmc-supply = <&vcc_3v0>;
122	vqmmc-supply = <&vccio_flash>;
123	status = "okay";
124};
125
126&gmac {
127	clock_in_out = "output";
128	phy-supply = <&vcc_rmii>;
129	snps,reset-gpio = <&gpio2 13 GPIO_ACTIVE_LOW>;
130	snps,reset-active-low;
131	snps,reset-delays-us = <0 50000 50000>;
132	status = "okay";
133};
134
135&gpu {
136	mali-supply = <&vdd_log>;
137	status = "okay";
138};
139
140&i2c0 {
141	status = "okay";
142
143	rk809: pmic@20 {
144		compatible = "rockchip,rk809";
145		reg = <0x20>;
146		interrupt-parent = <&gpio0>;
147		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
148		pinctrl-names = "default";
149		pinctrl-0 = <&pmic_int>;
150		rockchip,system-power-controller;
151		wakeup-source;
152		#clock-cells = <0>;
153		clock-output-names = "xin32k";
154
155		vcc1-supply = <&vcc5v0_sys>;
156		vcc2-supply = <&vcc5v0_sys>;
157		vcc3-supply = <&vcc5v0_sys>;
158		vcc4-supply = <&vcc5v0_sys>;
159		vcc5-supply = <&vcc3v3_sys>;
160		vcc6-supply = <&vcc3v3_sys>;
161		vcc7-supply = <&vcc3v3_sys>;
162		vcc8-supply = <&vcc3v3_sys>;
163		vcc9-supply = <&vcc5v0_sys>;
164
165		regulators {
166			vdd_log: DCDC_REG1 {
167				regulator-name = "vdd_log";
168				regulator-min-microvolt = <950000>;
169				regulator-max-microvolt = <1350000>;
170				regulator-ramp-delay = <6001>;
171				regulator-always-on;
172				regulator-boot-on;
173
174				regulator-state-mem {
175					regulator-on-in-suspend;
176					regulator-suspend-microvolt = <950000>;
177				};
178			};
179
180			vdd_arm: DCDC_REG2 {
181				regulator-name = "vdd_arm";
182				regulator-min-microvolt = <950000>;
183				regulator-max-microvolt = <1350000>;
184				regulator-ramp-delay = <6001>;
185				regulator-always-on;
186				regulator-boot-on;
187
188				regulator-state-mem {
189					regulator-off-in-suspend;
190					regulator-suspend-microvolt = <950000>;
191				};
192			};
193
194			vcc_ddr: DCDC_REG3 {
195				regulator-name = "vcc_ddr";
196				regulator-always-on;
197				regulator-boot-on;
198
199				regulator-state-mem {
200					regulator-on-in-suspend;
201				};
202			};
203
204			vcc_3v0: vcc_rmii: DCDC_REG4 {
205				regulator-name = "vcc_3v0";
206				regulator-min-microvolt = <3000000>;
207				regulator-max-microvolt = <3000000>;
208				regulator-always-on;
209				regulator-boot-on;
210
211				regulator-state-mem {
212					regulator-on-in-suspend;
213					regulator-suspend-microvolt = <3000000>;
214				};
215			};
216
217			vcc3v3_sys: DCDC_REG5 {
218				regulator-name = "vcc3v3_sys";
219				regulator-min-microvolt = <3300000>;
220				regulator-max-microvolt = <3300000>;
221				regulator-always-on;
222				regulator-boot-on;
223
224				regulator-state-mem {
225					regulator-on-in-suspend;
226					regulator-suspend-microvolt = <3300000>;
227				};
228			};
229
230			vcc_1v0: LDO_REG1 {
231				regulator-name = "vcc_1v0";
232				regulator-min-microvolt = <1000000>;
233				regulator-max-microvolt = <1000000>;
234				regulator-always-on;
235				regulator-boot-on;
236
237				regulator-state-mem {
238					regulator-on-in-suspend;
239					regulator-suspend-microvolt = <1000000>;
240				};
241			};
242
243			vcc_1v8: vccio_flash: vccio_sdio: LDO_REG2 {
244				regulator-name = "vcc_1v8";
245				regulator-min-microvolt = <1800000>;
246				regulator-max-microvolt = <1800000>;
247				regulator-always-on;
248				regulator-boot-on;
249
250				regulator-state-mem {
251					regulator-on-in-suspend;
252					regulator-suspend-microvolt = <1800000>;
253				};
254			};
255
256			vdd_1v0: LDO_REG3 {
257				regulator-name = "vdd_1v0";
258				regulator-min-microvolt = <1000000>;
259				regulator-max-microvolt = <1000000>;
260				regulator-always-on;
261				regulator-boot-on;
262
263				regulator-state-mem {
264					regulator-on-in-suspend;
265					regulator-suspend-microvolt = <1000000>;
266				};
267			};
268
269			vcc3v0_pmu: LDO_REG4 {
270				regulator-name = "vcc3v0_pmu";
271				regulator-min-microvolt = <3000000>;
272				regulator-max-microvolt = <3000000>;
273				regulator-always-on;
274				regulator-boot-on;
275
276				regulator-state-mem {
277					regulator-on-in-suspend;
278					regulator-suspend-microvolt = <3000000>;
279				};
280			};
281
282			vccio_sd: LDO_REG5 {
283				regulator-name = "vccio_sd";
284				regulator-min-microvolt = <1800000>;
285				regulator-max-microvolt = <3300000>;
286				regulator-always-on;
287				regulator-boot-on;
288
289				regulator-state-mem {
290					regulator-on-in-suspend;
291					regulator-suspend-microvolt = <3300000>;
292				};
293			};
294
295			vcc_sd: LDO_REG6 {
296				regulator-name = "vcc_sd";
297				regulator-min-microvolt = <3300000>;
298				regulator-max-microvolt = <3300000>;
299				regulator-boot-on;
300
301				regulator-state-mem {
302					regulator-on-in-suspend;
303					regulator-suspend-microvolt = <3300000>;
304				};
305			};
306
307			vcc2v8_dvp: LDO_REG7 {
308				regulator-name = "vcc2v8_dvp";
309				regulator-min-microvolt = <2800000>;
310				regulator-max-microvolt = <2800000>;
311				regulator-boot-on;
312
313				regulator-state-mem {
314					regulator-off-in-suspend;
315					regulator-suspend-microvolt = <2800000>;
316				};
317			};
318
319			vcc1v8_dvp: LDO_REG8 {
320				regulator-name = "vcc1v8_dvp";
321				regulator-min-microvolt = <1800000>;
322				regulator-max-microvolt = <1800000>;
323				regulator-boot-on;
324
325				regulator-state-mem {
326					regulator-on-in-suspend;
327					regulator-suspend-microvolt = <1800000>;
328				};
329			};
330
331			vcc1v5_dvp: LDO_REG9 {
332				regulator-name = "vcc1v5_dvp";
333				regulator-min-microvolt = <1500000>;
334				regulator-max-microvolt = <1500000>;
335				regulator-boot-on;
336
337				regulator-state-mem {
338					regulator-off-in-suspend;
339					regulator-suspend-microvolt = <1500000>;
340				};
341			};
342
343			vcc3v3_lcd: SWITCH_REG1 {
344				regulator-name = "vcc3v3_lcd";
345				regulator-boot-on;
346			};
347
348			vcc5v0_host: SWITCH_REG2 {
349				regulator-name = "vcc5v0_host";
350				regulator-always-on;
351				regulator-boot-on;
352			};
353		};
354	};
355};
356
357&i2c1 {
358	status = "okay";
359
360	sensor@d {
361		compatible = "asahi-kasei,ak8963";
362		reg = <0x0d>;
363		gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
364		vdd-supply = <&vcc3v0_pmu>;
365		mount-matrix = "1", /* x0 */
366			       "0", /* y0 */
367			       "0", /* z0 */
368			       "0", /* x1 */
369			       "1", /* y1 */
370			       "0", /* z1 */
371			       "0", /* x2 */
372			       "0", /* y2 */
373			       "1"; /* z2 */
374	};
375
376	touchscreen@14 {
377		compatible = "goodix,gt1151";
378		reg = <0x14>;
379		interrupt-parent = <&gpio0>;
380		interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
381		irq-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
382		reset-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
383		VDDIO-supply = <&vcc3v3_lcd>;
384	};
385
386	sensor@4c {
387		compatible = "fsl,mma7660";
388		reg = <0x4c>;
389		interrupt-parent = <&gpio0>;
390		interrupts = <RK_PB7 IRQ_TYPE_LEVEL_LOW>;
391	};
392};
393
394&i2s1_2ch {
395	status = "okay";
396};
397
398&io_domains {
399	status = "okay";
400
401	vccio1-supply = <&vccio_sdio>;
402	vccio2-supply = <&vccio_sd>;
403	vccio3-supply = <&vcc_3v0>;
404	vccio4-supply = <&vcc3v0_pmu>;
405	vccio5-supply = <&vcc_3v0>;
406	vccio6-supply = <&vccio_flash>;
407};
408
409&pinctrl {
410	headphone {
411		hp_det: hp-det {
412			rockchip,pins =
413				<2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
414		};
415	};
416
417	emmc {
418		emmc_reset: emmc-reset {
419			rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
420		};
421	};
422
423	pmic {
424		pmic_int: pmic_int {
425			rockchip,pins =
426				<0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
427		};
428
429		soc_slppin_gpio: soc_slppin_gpio {
430			rockchip,pins =
431				<0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>;
432		};
433
434		soc_slppin_slp: soc_slppin_slp {
435			rockchip,pins =
436				<0 RK_PA4 1 &pcfg_pull_none>;
437		};
438
439		soc_slppin_rst: soc_slppin_rst {
440			rockchip,pins =
441				<0 RK_PA4 2 &pcfg_pull_none>;
442		};
443	};
444
445	sdio-pwrseq {
446		wifi_enable_h: wifi-enable-h {
447			rockchip,pins =
448				<0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
449		};
450	};
451};
452
453&pmu_io_domains {
454	status = "okay";
455
456	pmuio1-supply = <&vcc3v0_pmu>;
457	pmuio2-supply = <&vcc3v0_pmu>;
458};
459
460&pwm1 {
461	status = "okay";
462};
463
464&saradc {
465	vref-supply = <&vcc_1v8>;
466	status = "okay";
467};
468
469&sdmmc {
470	bus-width = <4>;
471	cap-mmc-highspeed;
472	cap-sd-highspeed;
473	card-detect-delay = <800>;
474	sd-uhs-sdr12;
475	sd-uhs-sdr25;
476	sd-uhs-sdr50;
477	sd-uhs-sdr104;
478	vmmc-supply = <&vcc_sd>;
479	vqmmc-supply = <&vccio_sd>;
480	status = "okay";
481};
482
483&sdio {
484	bus-width = <4>;
485	cap-sd-highspeed;
486	keep-power-in-suspend;
487	non-removable;
488	mmc-pwrseq = <&sdio_pwrseq>;
489	sd-uhs-sdr104;
490	status = "okay";
491};
492
493&tsadc {
494	rockchip,hw-tshut-mode = <1>;
495	rockchip,hw-tshut-polarity = <1>;
496	status = "okay";
497};
498
499&u2phy {
500	status = "okay";
501
502	u2phy_host: host-port {
503		status = "okay";
504	};
505
506	u2phy_otg: otg-port {
507		status = "okay";
508	};
509};
510
511&uart1 {
512	pinctrl-names = "default";
513	pinctrl-0 = <&uart1_xfer &uart1_cts>;
514	status = "okay";
515};
516
517&uart5 {
518	status = "okay";
519};
520
521&usb20_otg {
522	status = "okay";
523};
524
525&usb_host0_ehci {
526	status = "okay";
527};
528
529&usb_host0_ohci {
530	status = "okay";
531};
532
533&vopb {
534	status = "okay";
535};
536
537&vopb_mmu {
538	status = "okay";
539};
540
541&vopl {
542	status = "okay";
543};
544
545&vopl_mmu {
546	status = "okay";
547};
548