1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2
3 #include <dt-bindings/gpio/gpio.h>
4 #include <dt-bindings/input/gpio-keys.h>
5 #include <dt-bindings/input/input.h>
6 #include <dt-bindings/leds/common.h>
7 #include <dt-bindings/pinctrl/rockchip.h>
8
9 #include "rk3566.dtsi"
10
11 / {
12 aliases {
13 mmc0 = &sdhci;
14 };
15
16 chosen {
17 stdout-path = "serial2:1500000n8";
18 };
19
20 adc-keys {
21 compatible = "adc-keys";
22 io-channels = <&saradc 0>;
23 io-channel-names = "buttons";
24 keyup-threshold-microvolt = <1750000>;
25
26 recovery {
27 label = "recovery";
28 linux,code = <KEY_VENDOR>;
29 press-threshold-microvolt = <0>;
30 };
31 };
32
33 spk_amp: audio-amplifier {
34 compatible = "simple-audio-amplifier";
35 enable-gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>;
36 pinctrl-0 = <&spk_amp_enable_h>;
37 pinctrl-names = "default";
38 sound-name-prefix = "Speaker Amp";
39 };
40
41 dmic_codec: dmic-codec {
42 compatible = "dmic-codec";
43 num-channels = <6>;
44 #sound-dai-cells = <0>;
45 };
46
47 gpio-keys {
48 compatible = "gpio-keys";
49 pinctrl-0 = <&hall_int_l>;
50 pinctrl-names = "default";
51
52 switch-cover {
53 label = "cover";
54 gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>;
55 linux,input-type = <EV_SW>;
56 linux,code = <SW_MACHINE_COVER>;
57 linux,can-disable;
58 wakeup-event-action = <EV_ACT_DEASSERTED>;
59 wakeup-source;
60 };
61 };
62
63 gpio-leds {
64 compatible = "gpio-leds";
65 pinctrl-0 = <&led_pin>;
66 pinctrl-names = "default";
67
68 led-0 {
69 color = <LED_COLOR_ID_WHITE>;
70 function = LED_FUNCTION_CHARGING;
71 gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
72 };
73 };
74
75 sdio_pwrseq: sdio-pwrseq {
76 compatible = "mmc-pwrseq-simple";
77 clocks = <&rk817 1>;
78 clock-names = "ext_clock";
79 pinctrl-0 = <&wifi_enable_h>;
80 pinctrl-names = "default";
81 reset-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_LOW>;
82 };
83
84 sound {
85 compatible = "simple-audio-card";
86 simple-audio-card,name = "PineNote";
87 simple-audio-card,aux-devs = <&spk_amp>;
88 simple-audio-card,widgets = "Headphone", "Headphones",
89 "Speaker", "Internal Speakers";
90 simple-audio-card,routing = "Headphones", "HPOL",
91 "Headphones", "HPOR",
92 "Internal Speakers", "Speaker Amp OUTL",
93 "Internal Speakers", "Speaker Amp OUTR",
94 "Speaker Amp INL", "HPOL",
95 "Speaker Amp INR", "HPOR";
96 simple-audio-card,pin-switches = "Internal Speakers";
97 #address-cells = <1>;
98 #size-cells = <0>;
99
100 simple-audio-card,dai-link@0 {
101 reg = <0>;
102 bitclock-master = <&link0_cpu>;
103 format = "i2s";
104 frame-master = <&link0_cpu>;
105 mclk-fs = <256>;
106
107 link0_cpu: cpu {
108 sound-dai = <&i2s1_8ch>;
109 };
110
111 link0_codec: codec {
112 sound-dai = <&rk817>;
113 };
114 };
115
116 simple-audio-card,dai-link@1 {
117 reg = <1>;
118 bitclock-master = <&link1_cpu>;
119 format = "pdm";
120 frame-master = <&link1_cpu>;
121
122 link1_cpu: cpu {
123 sound-dai = <&pdm>;
124 };
125
126 link1_codec: codec {
127 sound-dai = <&dmic_codec>;
128 };
129 };
130 };
131
132 vbat_4g: vbat-4g {
133 compatible = "regulator-fixed";
134 regulator-name = "vbat_4g";
135 regulator-min-microvolt = <3800000>;
136 regulator-max-microvolt = <3800000>;
137 /* powered by vcc_bat, enabled by vbat_4g_en */
138 vin-supply = <&vbat_4g_en>;
139 };
140
141 vcc_1v8: vcc-1v8 {
142 compatible = "regulator-fixed";
143 regulator-name = "vcc_1v8";
144 regulator-always-on;
145 regulator-min-microvolt = <1800000>;
146 regulator-max-microvolt = <1800000>;
147 /* powered by vcc_sys, enabled by vcc_1v8_en */
148 vin-supply = <&vcc_1v8_en>;
149 };
150
151 vcc_bat: vcc-bat {
152 compatible = "regulator-fixed";
153 regulator-name = "vcc_bat";
154 regulator-always-on;
155 regulator-min-microvolt = <3800000>;
156 regulator-max-microvolt = <3800000>;
157 };
158
159 vcc_hall_3v3: vcc-hall-3v3 {
160 compatible = "regulator-fixed";
161 regulator-name = "vcc_hall_3v3";
162 regulator-always-on;
163 regulator-min-microvolt = <3300000>;
164 regulator-max-microvolt = <3300000>;
165 vin-supply = <&vcc_sys>;
166 };
167
168 vcc_sys: vcc-sys {
169 compatible = "regulator-fixed";
170 regulator-name = "vcc_sys";
171 regulator-always-on;
172 regulator-min-microvolt = <3800000>;
173 regulator-max-microvolt = <3800000>;
174 vin-supply = <&vcc_bat>;
175 };
176
177 vcc_wl: vcc-wl {
178 compatible = "regulator-fixed";
179 enable-active-high;
180 gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
181 pinctrl-0 = <&vcc_wl_pin>;
182 pinctrl-names = "default";
183 regulator-name = "vcc_wl";
184 regulator-min-microvolt = <3300000>;
185 regulator-max-microvolt = <3300000>;
186 vin-supply = <&vcc_bat>;
187 };
188
189 vdda_0v9: vdda-0v9 {
190 compatible = "regulator-fixed";
191 regulator-name = "vdda_0v9";
192 regulator-always-on;
193 regulator-min-microvolt = <900000>;
194 regulator-max-microvolt = <900000>;
195 /* powered by vcc_sys, enabled by vcc_1v8_en */
196 vin-supply = <&vcc_1v8_en>;
197 };
198 };
199
200 &cpu0 {
201 cpu-supply = <&vdd_cpu>;
202 };
203
204 &cpu1 {
205 cpu-supply = <&vdd_cpu>;
206 };
207
208 &cpu2 {
209 cpu-supply = <&vdd_cpu>;
210 };
211
212 &cpu3 {
213 cpu-supply = <&vdd_cpu>;
214 };
215
216 &i2c0 {
217 status = "okay";
218
219 vdd_cpu: regulator@1c {
220 compatible = "tcs,tcs4525";
221 reg = <0x1c>;
222 fcs,suspend-voltage-selector = <0>;
223 regulator-name = "vdd_cpu";
224 regulator-min-microvolt = <712500>;
225 regulator-max-microvolt = <1390000>;
226 regulator-ramp-delay = <2300>;
227 regulator-always-on;
228 vin-supply = <&vcc_sys>;
229
230 regulator-state-mem {
231 regulator-on-in-suspend;
232 };
233 };
234
235 rk817: pmic@20 {
236 compatible = "rockchip,rk817";
237 reg = <0x20>;
238 interrupt-parent = <&gpio0>;
239 interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
240 assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
241 assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
242 clocks = <&cru I2S1_MCLKOUT_TX>;
243 clock-names = "mclk";
244 #clock-cells = <1>;
245 pinctrl-0 = <&i2s1m0_mclk>, <&pmic_int_l>, <&pmic_sleep>;
246 pinctrl-names = "default";
247 rockchip,system-power-controller;
248 #sound-dai-cells = <0>;
249 wakeup-source;
250
251 vcc1-supply = <&vcc_sys>;
252 vcc2-supply = <&vcc_sys>;
253 vcc3-supply = <&vcc_sys>;
254 vcc4-supply = <&vcc_sys>;
255 vcc5-supply = <&vcc_sys>;
256 vcc6-supply = <&vcc_sys>;
257 vcc7-supply = <&vcc_sys>;
258 vcc8-supply = <&vcc_sys>;
259 vcc9-supply = <&dcdc_boost>;
260
261 regulators {
262 vdd_logic: DCDC_REG1 {
263 regulator-name = "vdd_logic";
264 regulator-always-on;
265 regulator-min-microvolt = <500000>;
266 regulator-max-microvolt = <1350000>;
267 regulator-init-microvolt = <900000>;
268 regulator-ramp-delay = <6001>;
269 regulator-initial-mode = <0x2>;
270
271 regulator-state-mem {
272 regulator-off-in-suspend;
273 regulator-suspend-microvolt = <900000>;
274 };
275 };
276
277 vdd_gpu_npu: DCDC_REG2 {
278 regulator-name = "vdd_gpu_npu";
279 regulator-min-microvolt = <500000>;
280 regulator-max-microvolt = <1350000>;
281 regulator-init-microvolt = <900000>;
282 regulator-ramp-delay = <6001>;
283 regulator-initial-mode = <0x2>;
284
285 regulator-state-mem {
286 regulator-off-in-suspend;
287 };
288 };
289
290 vcc_ddr: DCDC_REG3 {
291 regulator-name = "vcc_ddr";
292 regulator-always-on;
293 regulator-initial-mode = <0x2>;
294
295 regulator-state-mem {
296 regulator-on-in-suspend;
297 };
298 };
299
300 vcc_3v3: DCDC_REG4 {
301 regulator-name = "vcc_3v3";
302 regulator-always-on;
303 regulator-min-microvolt = <3300000>;
304 regulator-max-microvolt = <3300000>;
305 regulator-initial-mode = <0x2>;
306
307 regulator-state-mem {
308 regulator-off-in-suspend;
309 };
310 };
311
312 vcca_1v8_pmu: LDO_REG1 {
313 regulator-name = "vcca_1v8_pmu";
314 regulator-always-on;
315 regulator-min-microvolt = <1800000>;
316 regulator-max-microvolt = <1800000>;
317
318 regulator-state-mem {
319 regulator-on-in-suspend;
320 };
321 };
322
323 /* unused */
324 vdda_0v9_ldo: LDO_REG2 {
325 regulator-name = "vdda_0v9_ldo";
326 regulator-min-microvolt = <900000>;
327 regulator-max-microvolt = <900000>;
328
329 regulator-state-mem {
330 regulator-off-in-suspend;
331 };
332 };
333
334 vdda_0v9_pmu: LDO_REG3 {
335 regulator-name = "vdda_0v9_pmu";
336 regulator-always-on;
337 regulator-min-microvolt = <900000>;
338 regulator-max-microvolt = <900000>;
339
340 regulator-state-mem {
341 regulator-on-in-suspend;
342 };
343 };
344
345 vccio_acodec: LDO_REG4 {
346 regulator-name = "vccio_acodec";
347 regulator-always-on;
348 regulator-min-microvolt = <3300000>;
349 regulator-max-microvolt = <3300000>;
350
351 regulator-state-mem {
352 regulator-off-in-suspend;
353 };
354 };
355
356 /* unused */
357 vccio_sd: LDO_REG5 {
358 regulator-name = "vccio_sd";
359 regulator-min-microvolt = <1800000>;
360 regulator-max-microvolt = <3300000>;
361
362 regulator-state-mem {
363 regulator-off-in-suspend;
364 };
365 };
366
367 vcc_3v3_pmu: LDO_REG6 {
368 regulator-name = "vcc_3v3_pmu";
369 regulator-always-on;
370 regulator-min-microvolt = <3300000>;
371 regulator-max-microvolt = <3300000>;
372
373 regulator-state-mem {
374 regulator-on-in-suspend;
375 };
376 };
377
378 vcc_1v8_en: LDO_REG7 {
379 regulator-name = "vcc_1v8_en";
380 regulator-min-microvolt = <1800000>;
381 regulator-max-microvolt = <1800000>;
382
383 regulator-state-mem {
384 regulator-off-in-suspend;
385 };
386 };
387
388 vbat_4g_en: LDO_REG8 {
389 regulator-name = "vbat_4g_en";
390 regulator-min-microvolt = <1800000>;
391 regulator-max-microvolt = <1800000>;
392
393 regulator-state-mem {
394 regulator-off-in-suspend;
395 };
396 };
397
398 sleep_sta_ctl: LDO_REG9 {
399 regulator-name = "sleep_sta_ctl";
400 regulator-min-microvolt = <1800000>;
401 regulator-max-microvolt = <1800000>;
402
403 regulator-state-mem {
404 regulator-on-in-suspend;
405 };
406 };
407
408 dcdc_boost: BOOST {
409 regulator-name = "boost";
410 regulator-min-microvolt = <5000000>;
411 regulator-max-microvolt = <5000000>;
412
413 regulator-state-mem {
414 regulator-off-in-suspend;
415 };
416 };
417
418 otg_switch: OTG_SWITCH {
419 regulator-name = "otg_switch";
420
421 regulator-state-mem {
422 regulator-off-in-suspend;
423 };
424 };
425 };
426 };
427 };
428
429 &i2c1 {
430 status = "okay";
431
432 digitizer@9 {
433 compatible = "wacom,w9013", "hid-over-i2c";
434 reg = <0x09>;
435 interrupt-parent = <&gpio0>;
436 interrupts = <RK_PB6 IRQ_TYPE_LEVEL_LOW>;
437 hid-descr-addr = <0x1>;
438 pinctrl-0 = <&pen_fwe>, <&pen_irq_l>, <&pen_rst_l>;
439 pinctrl-names = "default";
440 vdd-supply = <&vcc_3v3_pmu>;
441 };
442 };
443
444 &i2c3 {
445 pinctrl-0 = <&i2c3m1_xfer>;
446 status = "okay";
447
448 led-controller@36 {
449 compatible = "ti,lm3630a";
450 reg = <0x36>;
451 enable-gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
452 pinctrl-0 = <&backlight_hwen_h>;
453 pinctrl-names = "default";
454 #address-cells = <1>;
455 #size-cells = <0>;
456
457 led@0 {
458 reg = <0>;
459 label = "backlight_cool";
460 default-brightness = <0>;
461 };
462
463 led@1 {
464 reg = <1>;
465 label = "backlight_warm";
466 default-brightness = <0>;
467 };
468 };
469
470 wusb3801: tcpc@60 {
471 compatible = "willsemi,wusb3801";
472 reg = <0x60>;
473 interrupt-parent = <&gpio0>;
474 interrupts = <RK_PA4 IRQ_TYPE_LEVEL_LOW>;
475 pinctrl-0 = <&tcpc_int_l>;
476 pinctrl-names = "default";
477
478 connector {
479 compatible = "usb-c-connector";
480 label = "USB-C";
481 vbus-supply = <&otg_switch>;
482 power-role = "dual";
483 try-power-role = "sink";
484 data-role = "dual";
485 typec-power-opmode = "default";
486 pd-disable;
487
488 ports {
489 #address-cells = <0x1>;
490 #size-cells = <0x0>;
491
492 port@0 {
493 reg = <0x0>;
494
495 typec_hs_usb2phy0: endpoint {
496 remote-endpoint = <&usb2phy0_typec_hs>;
497 };
498 };
499 };
500 };
501 };
502 };
503
504 &i2c5 {
505 status = "okay";
506
507 accelerometer@18 {
508 compatible = "silan,sc7a20";
509 reg = <0x18>;
510 interrupt-parent = <&gpio3>;
511 interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
512 pinctrl-0 = <&accelerometer_int_l>;
513 pinctrl-names = "default";
514 st,drdy-int-pin = <1>;
515 vdd-supply = <&vcc_3v3>;
516 vddio-supply = <&vcc_3v3>;
517 };
518 };
519
520 &i2s1_8ch {
521 pinctrl-0 = <&i2s1m0_lrcktx>, <&i2s1m0_sclktx>, <&i2s1m0_sdi0>, <&i2s1m0_sdo0>;
522 rockchip,trcm-sync-tx-only;
523 status = "okay";
524 };
525
526 &pdm {
527 pinctrl-0 = <&pdmm0_clk1>, <&pdmm0_sdi1>, <&pdmm0_sdi2>;
528 /* microphones are on channels 1 and 2 */
529 rockchip,path-map = <1>, <2>, <0>, <3>;
530 status = "okay";
531 };
532
533 &pinctrl {
534 accelerometer {
535 accelerometer_int_l: accelerometer-int-l {
536 rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
537 };
538 };
539
540 audio-amplifier {
541 spk_amp_enable_h: spk-amp-enable-h {
542 rockchip,pins = <3 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
543 };
544 };
545
546 backlight {
547 backlight_hwen_h: backlight-hwen-h {
548 rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
549 };
550 };
551
552 bt {
553 bt_enable_h: bt-enable-h {
554 rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
555 };
556
557 bt_host_wake_l: bt-host-wake-l {
558 rockchip,pins = <0 RK_PC3 RK_FUNC_GPIO &pcfg_pull_up>;
559 };
560
561 bt_wake_h: bt-wake-h {
562 rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
563 };
564 };
565
566 led {
567 led_pin: led-pin {
568 rockchip,pins = <3 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
569 };
570 };
571
572 hall {
573 hall_int_l: hall-int-l {
574 rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
575 };
576 };
577
578 pen {
579 pen_fwe: pen-fwe {
580 rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_down>;
581 };
582
583 pen_irq_l: pen-irq-l {
584 rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
585 };
586
587 pen_rst_l: pen-rst-l {
588 rockchip,pins = <0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
589 };
590 };
591
592 pmic {
593 pmic_int_l: pmic-int-l {
594 rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
595 };
596
597 pmic_sleep: pmic-sleep {
598 rockchip,pins = <0 RK_PA2 1 &pcfg_pull_none>;
599 };
600 };
601
602 sdio-pwrseq {
603 wifi_enable_h: wifi-enable-h {
604 rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
605 };
606 };
607
608 tcpc {
609 tcpc_int_l: tcpc-int-l {
610 rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
611 };
612 };
613
614 vcc-wl {
615 vcc_wl_pin: vcc-wl-pin {
616 rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
617 };
618 };
619
620 wifi {
621 wifi_host_wake_l: wifi-host-wake-l {
622 rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
623 };
624 };
625 };
626
627 &pmu_io_domains {
628 pmuio1-supply = <&vcc_3v3_pmu>;
629 pmuio2-supply = <&vcc_3v3_pmu>;
630 vccio1-supply = <&vccio_acodec>;
631 vccio2-supply = <&vcc_1v8>;
632 vccio3-supply = <&vcc_3v3>;
633 vccio4-supply = <&vcca_1v8_pmu>;
634 vccio5-supply = <&vcc_3v3>;
635 vccio6-supply = <&vcc_3v3>;
636 status = "okay";
637 };
638
639 &saradc {
640 vref-supply = <&vcc_1v8>;
641 status = "okay";
642 };
643
644 &sdhci {
645 bus-width = <8>;
646 mmc-hs200-1_8v;
647 non-removable;
648 pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, <&emmc_datastrobe>, <&emmc_rstnout>;
649 pinctrl-names = "default";
650 vmmc-supply = <&vcc_3v3>;
651 vqmmc-supply = <&vcc_1v8>;
652 status = "okay";
653 };
654
655 &sdmmc1 {
656 bus-width = <4>;
657 cap-sd-highspeed;
658 cap-sdio-irq;
659 keep-power-in-suspend;
660 mmc-pwrseq = <&sdio_pwrseq>;
661 non-removable;
662 pinctrl-0 = <&sdmmc1_bus4>, <&sdmmc1_clk>, <&sdmmc1_cmd>;
663 pinctrl-names = "default";
664 sd-uhs-sdr104;
665 vmmc-supply = <&vcc_wl>;
666 vqmmc-supply = <&vcca_1v8_pmu>;
667 status = "okay";
668 };
669
670 &tsadc {
671 /* tshut mode 0:CRU 1:GPIO */
672 rockchip,hw-tshut-mode = <1>;
673 /* tshut polarity 0:LOW 1:HIGH */
674 rockchip,hw-tshut-polarity = <0>;
675 status = "okay";
676 };
677
678 &uart1 {
679 pinctrl-0 = <&uart1m0_ctsn>, <&uart1m0_rtsn>, <&uart1m0_xfer>;
680 pinctrl-names = "default";
681 uart-has-rtscts;
682 status = "okay";
683
684 bluetooth {
685 compatible = "brcm,bcm43438-bt";
686 clocks = <&rk817 1>;
687 clock-names = "lpo";
688 device-wake-gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>;
689 host-wake-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
690 reset-gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_LOW>;
691 pinctrl-0 = <&bt_enable_h>, <&bt_host_wake_l>, <&bt_wake_h>;
692 pinctrl-names = "default";
693 vbat-supply = <&vcc_wl>;
694 vddio-supply = <&vcca_1v8_pmu>;
695 };
696 };
697
698 &uart2 {
699 status = "okay";
700 };
701
702 &usb_host0_xhci {
703 dr_mode = "otg";
704 status = "okay";
705 };
706
707 &usb2phy0 {
708 status = "okay";
709 };
710
711 &usb2phy0_otg {
712 status = "okay";
713
714 port {
715 usb2phy0_typec_hs: endpoint {
716 remote-endpoint = <&typec_hs_usb2phy0>;
717 };
718 };
719 };
Cache object: 0bacbcbe6ea2e08db9f72a06d7e5760b
|