5bcd4be329643b5f1ec5bd2ca4bbc196f4b82941
[platform/kernel/linux-starfive.git] / arch / arm64 / boot / dts / rockchip / rk3566-soquartz.dtsi
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/pinctrl/rockchip.h>
7 #include "rk3566.dtsi"
8
9 / {
10         model = "Pine64 RK3566 SoQuartz SOM";
11         compatible = "pine64,soquartz", "rockchip,rk3566";
12
13         aliases {
14                 ethernet0 = &gmac1;
15                 mmc0 = &sdmmc0;
16                 mmc1 = &sdhci;
17                 mmc2 = &sdmmc1;
18         };
19
20         chosen: chosen {
21                 stdout-path = "serial2:1500000n8";
22         };
23
24         gmac1_clkin: external-gmac1-clock {
25                 compatible = "fixed-clock";
26                 clock-frequency = <125000000>;
27                 clock-output-names = "gmac1_clkin";
28                 #clock-cells = <0>;
29         };
30
31         leds {
32                 compatible = "gpio-leds";
33
34                 led_diy: led-diy {
35                         label = "diy-led";
36                         default-state = "on";
37                         gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_LOW>;
38                         linux,default-trigger = "heartbeat";
39                         pinctrl-names = "default";
40                         pinctrl-0 = <&diy_led_enable_h>;
41                         retain-state-suspended;
42                         status = "disabled";
43                 };
44
45                 led_work: led-work {
46                         label = "work-led";
47                         default-state = "off";
48                         gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_LOW>;
49                         pinctrl-names = "default";
50                         pinctrl-0 = <&work_led_enable_h>;
51                         retain-state-suspended;
52                         status = "disabled";
53                 };
54         };
55
56         sdio_pwrseq: sdio-pwrseq {
57                 status = "okay";
58                 compatible = "mmc-pwrseq-simple";
59                 clocks = <&rk809 1>;
60                 clock-names = "ext_clock";
61                 pinctrl-names = "default";
62                 pinctrl-0 = <&wifi_enable_h>;
63                 reset-gpios = <&gpio2 RK_PC2 GPIO_ACTIVE_LOW>;
64         };
65
66         vbus: vbus-regulator {
67                 compatible = "regulator-fixed";
68                 regulator-name = "vbus";
69                 regulator-always-on;
70                 regulator-boot-on;
71                 regulator-min-microvolt = <5000000>;
72                 regulator-max-microvolt = <5000000>;
73         };
74
75         /* sourced from vbus, vbus is provided by the carrier board */
76         vcc5v0_sys: vcc5v0-sys-regulator {
77                 compatible = "regulator-fixed";
78                 regulator-name = "vcc5v0_sys";
79                 regulator-always-on;
80                 regulator-boot-on;
81                 regulator-min-microvolt = <5000000>;
82                 regulator-max-microvolt = <5000000>;
83                 vin-supply = <&vbus>;
84         };
85
86         vcc3v3_sys: vcc3v3-sys-regulator {
87                 compatible = "regulator-fixed";
88                 regulator-name = "vcc3v3_sys";
89                 regulator-always-on;
90                 regulator-boot-on;
91                 regulator-min-microvolt = <3300000>;
92                 regulator-max-microvolt = <3300000>;
93                 vin-supply = <&vcc5v0_sys>;
94         };
95
96         sdmmc_pwr: sdmmc-pwr-regulator {
97                 compatible = "regulator-fixed";
98                 enable-active-high;
99                 gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
100                 pinctrl-names = "default";
101                 pinctrl-0 = <&sdmmc_pwr_h>;
102                 regulator-name = "sdmmc_pwr";
103                 status = "disabled";
104         };
105 };
106
107 &cpu0 {
108         cpu-supply = <&vdd_cpu>;
109 };
110
111 &cpu1 {
112         cpu-supply = <&vdd_cpu>;
113 };
114
115 &cpu2 {
116         cpu-supply = <&vdd_cpu>;
117 };
118
119 &cpu3 {
120         cpu-supply = <&vdd_cpu>;
121 };
122
123 &gmac1 {
124         assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>;
125         assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>, <&gmac1_clkin>;
126         clock_in_out = "input";
127         phy-supply = <&vcc_3v3>;
128         phy-mode = "rgmii";
129         pinctrl-names = "default";
130         pinctrl-0 = <&gmac1m0_miim
131                      &gmac1m0_tx_bus2
132                      &gmac1m0_rx_bus2
133                      &gmac1m0_rgmii_clk
134                      &gmac1m0_clkinout
135                      &gmac1m0_rgmii_bus>;
136         snps,reset-gpio = <&gpio0 RK_PC3 GPIO_ACTIVE_LOW>;
137         snps,reset-active-low;
138         /* Reset time is 20ms, 100ms for rtl8211f, also works well here */
139         snps,reset-delays-us = <0 20000 100000>;
140         tx_delay = <0x30>;
141         rx_delay = <0x10>;
142         phy-handle = <&rgmii_phy1>;
143         status = "disabled";
144 };
145
146 &i2c0 {
147         status = "okay";
148
149         vdd_cpu: regulator@1c {
150                 compatible = "tcs,tcs4525";
151                 reg = <0x1c>;
152                 fcs,suspend-voltage-selector = <1>;
153                 regulator-name = "vdd_cpu";
154                 regulator-min-microvolt = <800000>;
155                 regulator-max-microvolt = <1150000>;
156                 regulator-ramp-delay = <2300>;
157                 regulator-always-on;
158                 regulator-boot-on;
159                 vin-supply = <&vcc5v0_sys>;
160
161                 regulator-state-mem {
162                         regulator-off-in-suspend;
163                 };
164         };
165
166         rk809: pmic@20 {
167                 compatible = "rockchip,rk809";
168                 reg = <0x20>;
169                 interrupt-parent = <&gpio0>;
170                 interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
171                 #clock-cells = <1>;
172                 clock-output-names = "rk808-clkout1", "rk808-clkout2";
173                 pinctrl-names = "default";
174                 pinctrl-0 = <&pmic_int_l>;
175                 rockchip,system-power-controller;
176                 wakeup-source;
177
178                 vcc1-supply = <&vcc3v3_sys>;
179                 vcc2-supply = <&vcc3v3_sys>;
180                 vcc3-supply = <&vcc3v3_sys>;
181                 vcc4-supply = <&vcc3v3_sys>;
182                 vcc5-supply = <&vcc3v3_sys>;
183                 vcc6-supply = <&vcc3v3_sys>;
184                 vcc7-supply = <&vcc3v3_sys>;
185                 vcc8-supply = <&vcc3v3_sys>;
186                 vcc9-supply = <&vcc3v3_sys>;
187
188                 regulators {
189                         vdd_logic: DCDC_REG1 {
190                                 regulator-name = "vdd_logic";
191                                 regulator-always-on;
192                                 regulator-boot-on;
193                                 regulator-min-microvolt = <500000>;
194                                 regulator-max-microvolt = <1350000>;
195                                 regulator-init-microvolt = <900000>;
196                                 regulator-ramp-delay = <6001>;
197                                 regulator-initial-mode = <0x2>;
198                                 regulator-state-mem {
199                                         regulator-on-in-suspend;
200                                         regulator-suspend-microvolt = <900000>;
201                                 };
202                         };
203
204                         vdd_gpu: DCDC_REG2 {
205                                 regulator-name = "vdd_gpu";
206                                 regulator-always-on;
207                                 regulator-boot-on;
208                                 regulator-min-microvolt = <500000>;
209                                 regulator-max-microvolt = <1350000>;
210                                 regulator-init-microvolt = <900000>;
211                                 regulator-ramp-delay = <6001>;
212                                 regulator-initial-mode = <0x2>;
213                                         regulator-state-mem {
214                                         regulator-off-in-suspend;
215                                 };
216                         };
217
218                         vcc_ddr: DCDC_REG3 {
219                                 regulator-always-on;
220                                 regulator-boot-on;
221                                 regulator-initial-mode = <0x2>;
222                                 regulator-name = "vcc_ddr";
223                                 regulator-state-mem {
224                                         regulator-on-in-suspend;
225                                 };
226                         };
227
228                         vdd_npu: DCDC_REG4 {
229                                 regulator-always-on;
230                                 regulator-boot-on;
231                                 regulator-min-microvolt = <500000>;
232                                 regulator-max-microvolt = <1350000>;
233                                 regulator-init-microvolt = <900000>;
234                                 regulator-initial-mode = <0x2>;
235                                 regulator-name = "vdd_npu";
236                                 regulator-state-mem {
237                                         regulator-off-in-suspend;
238                                 };
239                         };
240
241                         vcc_1v8: DCDC_REG5 {
242                                 regulator-name = "vcc_1v8";
243                                 regulator-always-on;
244                                 regulator-boot-on;
245                                 regulator-min-microvolt = <1800000>;
246                                 regulator-max-microvolt = <1800000>;
247                                 regulator-state-mem {
248                                         regulator-on-in-suspend;
249                                         regulator-suspend-microvolt = <1800000>;
250                                 };
251                         };
252
253                         vdda0v9_image: LDO_REG1 {
254                                 regulator-always-on;
255                                 regulator-boot-on;
256                                 regulator-min-microvolt = <900000>;
257                                 regulator-max-microvolt = <900000>;
258                                 regulator-name = "vdda0v9_image";
259                                 regulator-state-mem {
260                                         regulator-on-in-suspend;
261                                         regulator-suspend-microvolt = <900000>;
262                                 };
263                         };
264
265                         vdda_0v9: LDO_REG2 {
266                                 regulator-always-on;
267                                 regulator-boot-on;
268                                 regulator-min-microvolt = <900000>;
269                                 regulator-max-microvolt = <900000>;
270                                 regulator-name = "vdda_0v9";
271                                 regulator-state-mem {
272                                         regulator-off-in-suspend;
273                                 };
274                         };
275
276                         vdda0v9_pmu: LDO_REG3 {
277                                 regulator-always-on;
278                                 regulator-boot-on;
279                                 regulator-min-microvolt = <900000>;
280                                 regulator-max-microvolt = <900000>;
281                                 regulator-name = "vdda0v9_pmu";
282                                 regulator-state-mem {
283                                         regulator-on-in-suspend;
284                                         regulator-suspend-microvolt = <900000>;
285                                 };
286                         };
287
288                         vccio_acodec: LDO_REG4 {
289                                 regulator-always-on;
290                                 regulator-boot-on;
291                                 regulator-min-microvolt = <3300000>;
292                                 regulator-max-microvolt = <3300000>;
293                                 regulator-name = "vccio_acodec";
294                                 regulator-state-mem {
295                                         regulator-off-in-suspend;
296                                 };
297                         };
298
299                         vccio_sd: LDO_REG5 {
300                                 regulator-always-on;
301                                 regulator-boot-on;
302                                 regulator-min-microvolt = <1800000>;
303                                 regulator-max-microvolt = <3300000>;
304                                 regulator-name = "vccio_sd";
305                                 regulator-state-mem {
306                                         regulator-off-in-suspend;
307                                 };
308                         };
309
310                         vcc3v3_pmu: LDO_REG6 {
311                                 regulator-always-on;
312                                 regulator-boot-on;
313                                 regulator-min-microvolt = <3300000>;
314                                 regulator-max-microvolt = <3300000>;
315                                 regulator-name = "vcc3v3_pmu";
316                                 regulator-state-mem {
317                                         regulator-on-in-suspend;
318                                         regulator-suspend-microvolt = <3300000>;
319                                 };
320                         };
321
322                         vcca_1v8: LDO_REG7 {
323                                 regulator-always-on;
324                                 regulator-boot-on;
325                                 regulator-min-microvolt = <1800000>;
326                                 regulator-max-microvolt = <1800000>;
327                                 regulator-name = "vcca_1v8";
328                                 regulator-state-mem {
329                                         regulator-off-in-suspend;
330                                 };
331                         };
332
333                         vcca1v8_pmu: LDO_REG8 {
334                                 regulator-always-on;
335                                 regulator-boot-on;
336                                 regulator-min-microvolt = <1800000>;
337                                 regulator-max-microvolt = <1800000>;
338                                 regulator-name = "vcca1v8_pmu";
339                                 regulator-state-mem {
340                                         regulator-off-in-suspend;
341                                 };
342                         };
343
344                         vcca1v8_image: LDO_REG9 {
345                                 regulator-always-on;
346                                 regulator-boot-on;
347                                 regulator-min-microvolt = <1800000>;
348                                 regulator-max-microvolt = <1800000>;
349                                 regulator-name = "vcca1v8_image";
350                                 regulator-state-mem {
351                                         regulator-off-in-suspend;
352                                 };
353                         };
354
355                         vcc_3v3: SWITCH_REG1 {
356                                 regulator-name = "vcc_3v3";
357                                 regulator-state-mem {
358                                         regulator-off-in-suspend;
359                                 };
360                         };
361
362                         vcc3v3_sd: SWITCH_REG2 {
363                                 regulator-name = "vcc3v3_sd";
364                                 status = "disabled";
365                                 regulator-state-mem {
366                                         regulator-on-in-suspend;
367                                 };
368                         };
369
370                 };
371         };
372 };
373
374 /*
375  * i2c1 is exposed on CM1 / Module1A
376  * pin 80 - i2c1_scl_m0, pullup to vcc3v3_pmu
377  * pin 82 - i2c1_sda_m0, pullup to vcc3v3_pmu
378  */
379 &i2c1 {
380         status = "disabled";
381 };
382
383 /*
384  * i2c2 is exposed on CM1 / Module1A
385  * pin 56 - i2c2_scl_m1, pullup to vcc_3v3, shared with i2s1_8ch
386  * pin 58 - i2c2_sda_m1, pullup to vcc_3v3
387  */
388 &i2c2 {
389         pinctrl-names = "default";
390         pinctrl-0 = <&i2c2m1_xfer>;
391         status = "disabled";
392 };
393
394 /*
395  * i2c3 is exposed on CM1 / Module1A
396  * pin 35 - i2c3_scl_m0, pullup to vcc_3v3
397  * pin 36 - i2c3_sda_m0, pullup to vcc_3v3
398  */
399 &i2c3 {
400         status = "disabled";
401 };
402
403 /*
404  * i2c4 is exposed on CM2 / Module1B
405  * pin 45 - i2c4_scl_m1
406  * pin 47 - i2c4_sda_m1
407  */
408 &i2c4 {
409         pinctrl-names = "default";
410         pinctrl-0 = <&i2c4m1_xfer>;
411         status = "disabled";
412 };
413
414 /*
415  * i2s1_8ch is exposed on CM1 / Module1A
416  * pin 24 - i2s1_sdi1_m1
417  * pin 25 - i2s1_sdo0_m1
418  * pin 26 - i2s1_lrck_tx_m1
419  * pin 27 - i2s1_sdi0_m1
420  * pin 29 - i2s1_sdi3_m1
421  * pin 30 - i2s1_sdi2_m1
422  * pin 40 - i2s1_sdo1_m1, shared with spi3
423  * pin 41 - i2s1_sdo2_m1
424  * pin 49 - i2s1_sclk_tx_m1
425  * pin 50 - i2s1_mclk_m1
426  * pin 56 - i2s1_sdo3_m1, shared with i2c2
427  */
428 &i2s1_8ch {
429         pinctrl-names = "default";
430         pinctrl-0 = <&i2s1m1_sclktx &i2s1m1_sclkrx
431                      &i2s1m1_lrcktx &i2s1m1_lrckrx
432                      &i2s1m1_sdi0   &i2s1m1_sdi1
433                      &i2s1m1_sdi2   &i2s1m1_sdi3
434                      &i2s1m1_sdo0   &i2s1m1_sdo1
435                      &i2s1m1_sdo2   &i2s1m1_sdo3>;
436         status = "disabled";
437 };
438
439 &mdio1 {
440         rgmii_phy1: ethernet-phy@0 {
441                 compatible = "ethernet-phy-ieee802.3-c22";
442                 reg = <0>;
443                 status = "disabled";
444         };
445 };
446
447 &pinctrl {
448         bt {
449                 bt_enable_h: bt-enable-h {
450                         rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
451                 };
452
453                 bt_host_wake_l: bt-host-wake-l {
454                         rockchip,pins = <2 RK_PC0 RK_FUNC_GPIO &pcfg_pull_down>;
455                 };
456
457                 bt_wake_l: bt-wake-l {
458                         rockchip,pins = <2 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
459                 };
460         };
461
462         leds {
463                 work_led_enable_h: work-led-enable-h {
464                         rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
465                 };
466
467                 diy_led_enable_h: diy-led-enable-h {
468                         rockchip,pins = <0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
469                 };
470         };
471
472         pmic {
473                 pmic_int_l: pmic-int-l {
474                         rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
475                 };
476         };
477
478         sdio-pwrseq {
479                 wifi_enable_h: wifi-enable-h {
480                         rockchip,pins = <2 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
481                 };
482         };
483
484         sdmmc-pwr {
485                 sdmmc_pwr_h: sdmmc-pwr-h {
486                         rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
487                 };
488         };
489 };
490
491 &pmu_io_domains {
492         pmuio1-supply = <&vcc3v3_pmu>;
493         pmuio2-supply = <&vcc3v3_pmu>;
494         vccio1-supply = <&vcc_3v3>;
495         vccio2-supply = <&vcc_1v8>;
496         vccio3-supply = <&vccio_sd>;
497         vccio4-supply = <&vcc_1v8>;
498         vccio5-supply = <&vcc_3v3>;
499         vccio6-supply = <&vcc_3v3>;
500         vccio7-supply = <&vcc_3v3>;
501         status = "okay";
502 };
503
504 /*
505  * saradc is exposed on CM1 / Module1A
506  * pin 94 - saradc_vin3
507  * pin 96 - saradc_vin2
508  */
509 &saradc {
510         vref-supply = <&vcca_1v8>;
511         status = "disabled";
512 };
513
514 &sdhci {
515         bus-width = <8>;
516         mmc-hs200-1_8v;
517         non-removable;
518         vmmc-supply = <&vcc_3v3>;
519         vqmmc-supply = <&vcc_1v8>;
520         status = "okay";
521 };
522
523 &sdmmc0 {
524         broken-cd;
525         bus-width = <4>;
526         cap-sd-highspeed;
527         disable-wp;
528         pinctrl-names = "default";
529         pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
530         vqmmc-supply = <&vccio_sd>;
531         status = "disabled";
532 };
533
534 &sdmmc1 {
535         bus-width = <4>;
536         cap-sd-highspeed;
537         cap-sdio-irq;
538         keep-power-in-suspend;
539         mmc-pwrseq = <&sdio_pwrseq>;
540         non-removable;
541         pinctrl-names = "default";
542         pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>;
543         sd-uhs-sdr104;
544         vmmc-supply = <&vcc3v3_sys>;
545         vqmmc-supply = <&vcc_1v8>;
546         status = "okay";
547 };
548
549 /*
550  * spi3 is exposed on CM1 / Module1A
551  * pin 37 - spi3_cs1_m0
552  * pin 38 - spi3_clk_m0
553  * pin 39 - spi3_cs0_m0
554  * pin 40 - spi3_miso_m0, shared with i2s1_8ch
555  * pin 44 - spi3_mosi_m0
556  */
557 &spi3 {
558         status = "disabled";
559 };
560
561 &tsadc {
562         status = "okay";
563 };
564
565 &uart1 {
566         pinctrl-names = "default";
567         pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>;
568         uart-has-rtscts;
569         status = "okay";
570
571         bluetooth {
572                 compatible = "brcm,bcm43438-bt";
573                 clocks = <&rk809 1>;
574                 clock-names = "lpo";
575                 device-wakeup-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>;
576                 host-wakeup-gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>;
577                 shutdown-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
578                 pinctrl-names = "default";
579                 pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>;
580                 vbat-supply = <&vcc3v3_sys>;
581                 vddio-supply = <&vcca1v8_pmu>;
582         };
583 };
584
585 /*
586  * uart2 is exposed on CM1 / Module1A
587  * pin 51 - uart2_rx_m0
588  * pin 55 - uart2_tx_m0
589  */
590 &uart2 {
591         status = "disabled";
592 };
593
594 /*
595  * uart7 is exposed on CM1 / Module1A
596  * pin 46 - uart7_tx_m2
597  * pin 47 - uart7_rx_m2
598  */
599 &uart7 {
600         pinctrl-names = "default";
601         pinctrl-0 = <&uart7m2_xfer>;
602         status = "disabled";
603 };
604
605 /* dwc3_otg is the only usb port available */
606 &usb2phy0 {
607         status = "disabled";
608 };
609
610 &usb2phy0_otg {
611         status = "disabled";
612 };
613
614 &usb_host0_xhci {
615         status = "disabled";
616 };