blob: 0a90a88fc664977a3f4ab049db2787cd17e90480 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// 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 {
Tom Rini93743d22024-04-01 09:08:13 -040017 ethernet0 = &gmac;
Tom Rini53633a82024-02-29 12:33:36 -050018 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: 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 status = "okay";
128
129 ports {
130 mipi_out: port@1 {
131 reg = <1>;
132
133 mipi_out_panel: endpoint {
134 remote-endpoint = <&mipi_in_panel>;
135 };
136 };
137 };
138
139 panel@0 {
140 compatible = "xinpeng,xpp055c272";
141 reg = <0>;
142 backlight = <&backlight>;
143 iovcc-supply = <&vcc_1v8>;
144 vci-supply = <&vcc3v3_lcd>;
145
146 port {
147 mipi_in_panel: endpoint {
148 remote-endpoint = <&mipi_out_panel>;
149 };
150 };
151 };
152};
153
154&dsi_dphy {
155 status = "okay";
156};
157
158&emmc {
159 cap-mmc-highspeed;
160 mmc-hs200-1_8v;
161 non-removable;
162 mmc-pwrseq = <&emmc_pwrseq>;
163 vmmc-supply = <&vcc_3v0>;
164 vqmmc-supply = <&vccio_flash>;
165 status = "okay";
166};
167
168&gmac {
169 clock_in_out = "output";
170 phy-supply = <&vcc_rmii>;
171 snps,reset-gpio = <&gpio2 13 GPIO_ACTIVE_LOW>;
172 snps,reset-active-low;
173 snps,reset-delays-us = <0 50000 50000>;
174 status = "okay";
175};
176
177&gpu {
178 mali-supply = <&vdd_log>;
179 status = "okay";
180};
181
182&i2c0 {
183 status = "okay";
184
185 rk809: pmic@20 {
186 compatible = "rockchip,rk809";
187 reg = <0x20>;
188 interrupt-parent = <&gpio0>;
189 interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
190 pinctrl-names = "default";
191 pinctrl-0 = <&pmic_int>;
192 rockchip,system-power-controller;
193 wakeup-source;
194 #clock-cells = <0>;
195 clock-output-names = "xin32k";
196
197 vcc1-supply = <&vcc5v0_sys>;
198 vcc2-supply = <&vcc5v0_sys>;
199 vcc3-supply = <&vcc5v0_sys>;
200 vcc4-supply = <&vcc5v0_sys>;
201 vcc5-supply = <&vcc3v3_sys>;
202 vcc6-supply = <&vcc3v3_sys>;
203 vcc7-supply = <&vcc3v3_sys>;
204 vcc8-supply = <&vcc3v3_sys>;
205 vcc9-supply = <&vcc5v0_sys>;
206
207 regulators {
208 vdd_log: DCDC_REG1 {
209 regulator-name = "vdd_log";
210 regulator-min-microvolt = <950000>;
211 regulator-max-microvolt = <1350000>;
212 regulator-ramp-delay = <6001>;
213 regulator-always-on;
214 regulator-boot-on;
215
216 regulator-state-mem {
217 regulator-on-in-suspend;
218 regulator-suspend-microvolt = <950000>;
219 };
220 };
221
222 vdd_arm: DCDC_REG2 {
223 regulator-name = "vdd_arm";
224 regulator-min-microvolt = <950000>;
225 regulator-max-microvolt = <1350000>;
226 regulator-ramp-delay = <6001>;
227 regulator-always-on;
228 regulator-boot-on;
229
230 regulator-state-mem {
231 regulator-off-in-suspend;
232 regulator-suspend-microvolt = <950000>;
233 };
234 };
235
236 vcc_ddr: DCDC_REG3 {
237 regulator-name = "vcc_ddr";
238 regulator-always-on;
239 regulator-boot-on;
240
241 regulator-state-mem {
242 regulator-on-in-suspend;
243 };
244 };
245
246 vcc_3v0: vcc_rmii: DCDC_REG4 {
247 regulator-name = "vcc_3v0";
248 regulator-min-microvolt = <3000000>;
249 regulator-max-microvolt = <3000000>;
250 regulator-always-on;
251 regulator-boot-on;
252
253 regulator-state-mem {
254 regulator-on-in-suspend;
255 regulator-suspend-microvolt = <3000000>;
256 };
257 };
258
259 vcc3v3_sys: DCDC_REG5 {
260 regulator-name = "vcc3v3_sys";
261 regulator-min-microvolt = <3300000>;
262 regulator-max-microvolt = <3300000>;
263 regulator-always-on;
264 regulator-boot-on;
265
266 regulator-state-mem {
267 regulator-on-in-suspend;
268 regulator-suspend-microvolt = <3300000>;
269 };
270 };
271
272 vcc_1v0: LDO_REG1 {
273 regulator-name = "vcc_1v0";
274 regulator-min-microvolt = <1000000>;
275 regulator-max-microvolt = <1000000>;
276 regulator-always-on;
277 regulator-boot-on;
278
279 regulator-state-mem {
280 regulator-on-in-suspend;
281 regulator-suspend-microvolt = <1000000>;
282 };
283 };
284
285 vcc_1v8: vccio_flash: vccio_sdio: LDO_REG2 {
286 regulator-name = "vcc_1v8";
287 regulator-min-microvolt = <1800000>;
288 regulator-max-microvolt = <1800000>;
289 regulator-always-on;
290 regulator-boot-on;
291
292 regulator-state-mem {
293 regulator-on-in-suspend;
294 regulator-suspend-microvolt = <1800000>;
295 };
296 };
297
298 vdd_1v0: LDO_REG3 {
299 regulator-name = "vdd_1v0";
300 regulator-min-microvolt = <1000000>;
301 regulator-max-microvolt = <1000000>;
302 regulator-always-on;
303 regulator-boot-on;
304
305 regulator-state-mem {
306 regulator-on-in-suspend;
307 regulator-suspend-microvolt = <1000000>;
308 };
309 };
310
311 vcc3v0_pmu: LDO_REG4 {
312 regulator-name = "vcc3v0_pmu";
313 regulator-min-microvolt = <3000000>;
314 regulator-max-microvolt = <3000000>;
315 regulator-always-on;
316 regulator-boot-on;
317
318 regulator-state-mem {
319 regulator-on-in-suspend;
320 regulator-suspend-microvolt = <3000000>;
321 };
322 };
323
324 vccio_sd: LDO_REG5 {
325 regulator-name = "vccio_sd";
326 regulator-min-microvolt = <1800000>;
327 regulator-max-microvolt = <3300000>;
328 regulator-always-on;
329 regulator-boot-on;
330
331 regulator-state-mem {
332 regulator-on-in-suspend;
333 regulator-suspend-microvolt = <3300000>;
334 };
335 };
336
337 vcc_sd: LDO_REG6 {
338 regulator-name = "vcc_sd";
339 regulator-min-microvolt = <3300000>;
340 regulator-max-microvolt = <3300000>;
341 regulator-boot-on;
342
343 regulator-state-mem {
344 regulator-on-in-suspend;
345 regulator-suspend-microvolt = <3300000>;
346 };
347 };
348
349 vcc2v8_dvp: LDO_REG7 {
350 regulator-name = "vcc2v8_dvp";
351 regulator-min-microvolt = <2800000>;
352 regulator-max-microvolt = <2800000>;
353 regulator-boot-on;
354
355 regulator-state-mem {
356 regulator-off-in-suspend;
357 regulator-suspend-microvolt = <2800000>;
358 };
359 };
360
361 vcc1v8_dvp: LDO_REG8 {
362 regulator-name = "vcc1v8_dvp";
363 regulator-min-microvolt = <1800000>;
364 regulator-max-microvolt = <1800000>;
365 regulator-boot-on;
366
367 regulator-state-mem {
368 regulator-on-in-suspend;
369 regulator-suspend-microvolt = <1800000>;
370 };
371 };
372
373 vcc1v5_dvp: LDO_REG9 {
374 regulator-name = "vcc1v5_dvp";
375 regulator-min-microvolt = <1500000>;
376 regulator-max-microvolt = <1500000>;
377 regulator-boot-on;
378
379 regulator-state-mem {
380 regulator-off-in-suspend;
381 regulator-suspend-microvolt = <1500000>;
382 };
383 };
384
385 vcc3v3_lcd: SWITCH_REG1 {
386 regulator-name = "vcc3v3_lcd";
387 regulator-boot-on;
388 };
389
390 vcc5v0_host: SWITCH_REG2 {
391 regulator-name = "vcc5v0_host";
392 regulator-always-on;
393 regulator-boot-on;
394 };
395 };
396 };
397};
398
399&i2c1 {
400 status = "okay";
401
402 sensor@d {
403 compatible = "asahi-kasei,ak8963";
404 reg = <0x0d>;
405 gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
406 vdd-supply = <&vcc3v0_pmu>;
407 mount-matrix = "1", /* x0 */
408 "0", /* y0 */
409 "0", /* z0 */
410 "0", /* x1 */
411 "1", /* y1 */
412 "0", /* z1 */
413 "0", /* x2 */
414 "0", /* y2 */
415 "1"; /* z2 */
416 };
417
418 touchscreen@14 {
419 compatible = "goodix,gt1151";
420 reg = <0x14>;
421 interrupt-parent = <&gpio0>;
422 interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
423 irq-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
424 reset-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
425 VDDIO-supply = <&vcc3v3_lcd>;
426 };
427
428 sensor@4c {
429 compatible = "fsl,mma7660";
430 reg = <0x4c>;
431 interrupt-parent = <&gpio0>;
432 interrupts = <RK_PB7 IRQ_TYPE_LEVEL_LOW>;
433 };
434};
435
436&i2c2 {
437 status = "okay";
438
439 clock-frequency = <100000>;
440
441 /* These are relatively safe rise/fall times; TODO: measure */
442 i2c-scl-falling-time-ns = <50>;
443 i2c-scl-rising-time-ns = <300>;
444
445 ov5695: ov5695@36 {
446 compatible = "ovti,ov5695";
447 reg = <0x36>;
448 avdd-supply = <&vcc2v8_dvp>;
449 clocks = <&cru SCLK_CIF_OUT>;
450 clock-names = "xvclk";
451 dvdd-supply = <&vcc1v5_dvp>;
452 dovdd-supply = <&vcc1v8_dvp>;
453 pinctrl-names = "default";
454 pinctrl-0 = <&cif_clkout_m0 &mipi_pdn>;
455 reset-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_LOW>;
456
457 port {
458 ucam_out: endpoint {
459 remote-endpoint = <&mipi_in_ucam>;
460 data-lanes = <1 2>;
461 };
462 };
463 };
464};
465
466&i2s1_2ch {
467 status = "okay";
468};
469
470&io_domains {
471 status = "okay";
472
473 vccio1-supply = <&vccio_sdio>;
474 vccio2-supply = <&vccio_sd>;
475 vccio3-supply = <&vcc_3v0>;
476 vccio4-supply = <&vcc3v0_pmu>;
477 vccio5-supply = <&vcc_3v0>;
478 vccio6-supply = <&vccio_flash>;
479};
480
481&isp {
482 status = "okay";
483
484 ports {
485 port@0 {
486 mipi_in_ucam: endpoint@0 {
487 reg = <0>;
488 data-lanes = <1 2>;
489 remote-endpoint = <&ucam_out>;
490 };
491 };
492 };
493};
494
495&isp_mmu {
496 status = "okay";
497};
498
499&pinctrl {
500 headphone {
501 hp_det: hp-det {
502 rockchip,pins =
503 <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
504 };
505 };
506
507 emmc {
508 emmc_reset: emmc-reset {
509 rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
510 };
511 };
512
513 pmic {
514 pmic_int: pmic_int {
515 rockchip,pins =
516 <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
517 };
518
519 soc_slppin_gpio: soc_slppin_gpio {
520 rockchip,pins =
521 <0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>;
522 };
523
524 soc_slppin_slp: soc_slppin_slp {
525 rockchip,pins =
526 <0 RK_PA4 1 &pcfg_pull_none>;
527 };
528
529 soc_slppin_rst: soc_slppin_rst {
530 rockchip,pins =
531 <0 RK_PA4 2 &pcfg_pull_none>;
532 };
533 };
534
535 sdio-pwrseq {
536 wifi_enable_h: wifi-enable-h {
537 rockchip,pins =
538 <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
539 };
540 };
541
542 cif-m0 {
543 cif_clkout_m0: cif-clkout-m0 {
544 rockchip,pins =
545 <2 RK_PB3 1 &pcfg_pull_none_12ma>;
546 };
547 };
548
549 mipi {
550 mipi_pdn: mipi-pdn {
551 rockchip,pins = <2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
552 };
553 };
554};
555
556&pmu_io_domains {
557 status = "okay";
558
559 pmuio1-supply = <&vcc3v0_pmu>;
560 pmuio2-supply = <&vcc3v0_pmu>;
561};
562
563&pwm1 {
564 status = "okay";
565};
566
567&saradc {
568 vref-supply = <&vcc_1v8>;
569 status = "okay";
570};
571
572&sdmmc {
573 cap-mmc-highspeed;
574 cap-sd-highspeed;
575 card-detect-delay = <800>;
576 sd-uhs-sdr12;
577 sd-uhs-sdr25;
578 sd-uhs-sdr50;
579 sd-uhs-sdr104;
580 vmmc-supply = <&vcc_sd>;
581 vqmmc-supply = <&vccio_sd>;
582 status = "okay";
583};
584
585&sdio {
586 cap-sd-highspeed;
587 keep-power-in-suspend;
588 non-removable;
589 mmc-pwrseq = <&sdio_pwrseq>;
590 sd-uhs-sdr104;
591 status = "okay";
592};
593
594&tsadc {
595 rockchip,hw-tshut-mode = <1>;
596 rockchip,hw-tshut-polarity = <1>;
597 status = "okay";
598};
599
600&u2phy {
601 status = "okay";
602
603 u2phy_host: host-port {
604 status = "okay";
605 };
606
607 u2phy_otg: otg-port {
608 status = "okay";
609 };
610};
611
612&uart1 {
613 pinctrl-names = "default";
614 pinctrl-0 = <&uart1_xfer &uart1_cts>;
615 status = "okay";
616};
617
618&uart5 {
619 status = "okay";
620};
621
622&usb20_otg {
623 status = "okay";
624};
625
626&usb_host0_ehci {
627 status = "okay";
628};
629
630&usb_host0_ohci {
631 status = "okay";
632};
633
634&vopb {
635 status = "okay";
636};
637
638&vopb_mmu {
639 status = "okay";
640};
641
642&vopl {
643 status = "okay";
644};
645
646&vopl_mmu {
647 status = "okay";
648};