Merge tag 'riscv-for-linus-4.20-mw2' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / arch / arm64 / boot / dts / rockchip / rk3399-roc-pc.dts
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Copyright (c) 2017 T-Chip Intelligent Technology Co., Ltd
4  */
5
6 /dts-v1/;
7 #include <dt-bindings/pwm/pwm.h>
8 #include "rk3399.dtsi"
9 #include "rk3399-opp.dtsi"
10
11 / {
12         model = "Firefly ROC-RK3399-PC Board";
13         compatible = "firefly,roc-rk3399-pc", "rockchip,rk3399";
14
15         chosen {
16                 stdout-path = "serial2:1500000n8";
17         };
18
19         backlight: backlight {
20                 compatible = "pwm-backlight";
21                 pwms = <&pwm0 0 25000 0>;
22         };
23
24         clkin_gmac: external-gmac-clock {
25                 compatible = "fixed-clock";
26                 clock-frequency = <125000000>;
27                 clock-output-names = "clkin_gmac";
28                 #clock-cells = <0>;
29         };
30
31         sdio_pwrseq: sdio-pwrseq {
32                 compatible = "mmc-pwrseq-simple";
33                 clocks = <&rk808 1>;
34                 clock-names = "ext_clock";
35                 pinctrl-names = "default";
36                 pinctrl-0 = <&wifi_enable_h>;
37
38                 /*
39                  * On the module itself this is one of these (depending
40                  * on the actual card populated):
41                  * - SDIO_RESET_L_WL_REG_ON
42                  * - PDN (power down when low)
43                  */
44                 reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
45         };
46
47         vcc_vbus_typec0: vcc-vbus-typec0 {
48                 compatible = "regulator-fixed";
49                 regulator-name = "vcc_vbus_typec0";
50                 regulator-always-on;
51                 regulator-boot-on;
52                 regulator-min-microvolt = <5000000>;
53                 regulator-max-microvolt = <5000000>;
54         };
55
56         /*
57          * should be placed inside mp8859, but not until mp8859 has
58          * its own dt-binding.
59          */
60         vcc12v_sys: mp8859-dcdc1 {
61                 compatible = "regulator-fixed";
62                 regulator-name = "vcc12v_sys";
63                 regulator-always-on;
64                 regulator-boot-on;
65                 regulator-min-microvolt = <12000000>;
66                 regulator-max-microvolt = <12000000>;
67                 vin-supply = <&vcc_vbus_typec0>;
68         };
69
70         /* switched by pmic_sleep */
71         vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
72                 compatible = "regulator-fixed";
73                 regulator-name = "vcc1v8_s3";
74                 regulator-always-on;
75                 regulator-boot-on;
76                 regulator-min-microvolt = <1800000>;
77                 regulator-max-microvolt = <1800000>;
78                 vin-supply = <&vcc_1v8>;
79         };
80
81         vcc3v3_sys: vcc3v3-sys {
82                 compatible = "regulator-fixed";
83                 regulator-name = "vcc3v3_sys";
84                 regulator-always-on;
85                 regulator-boot-on;
86                 regulator-min-microvolt = <3300000>;
87                 regulator-max-microvolt = <3300000>;
88                 vin-supply = <&vcc12v_sys>;
89         };
90
91         /* Actually 3 regulators (host0, 1, 2) controlled by the same gpio */
92         vcc5v0_host: vcc5v0-host-regulator {
93                 compatible = "regulator-fixed";
94                 enable-active-high;
95                 gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
96                 pinctrl-names = "default";
97                 pinctrl-0 = <&vcc5v0_host_en &hub_rst>;
98                 regulator-name = "vcc5v0_host";
99                 regulator-always-on;
100                 vin-supply = <&vcc_sys>;
101         };
102
103         vcc_vbus_typec1: vcc-vbus-typec1 {
104                 compatible = "regulator-fixed";
105                 enable-active-high;
106                 gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>;
107                 pinctrl-names = "default";
108                 pinctrl-0 = <&vcc_vbus_typec1_en>;
109                 regulator-name = "vcc_vbus_typec1";
110                 regulator-always-on;
111                 vin-supply = <&vcc_sys>;
112         };
113
114         vcc_sys: vcc-sys {
115                 compatible = "regulator-fixed";
116                 regulator-name = "vcc_sys";
117                 regulator-always-on;
118                 regulator-boot-on;
119                 regulator-min-microvolt = <5000000>;
120                 regulator-max-microvolt = <5000000>;
121                 vin-supply = <&vcc12v_sys>;
122         };
123
124         vdd_log: vdd-log {
125                 compatible = "pwm-regulator";
126                 pwms = <&pwm2 0 25000 1>;
127                 regulator-name = "vdd_log";
128                 regulator-always-on;
129                 regulator-boot-on;
130                 regulator-min-microvolt = <800000>;
131                 regulator-max-microvolt = <1400000>;
132                 vin-supply = <&vcc3v3_sys>;
133         };
134 };
135
136 &cpu_l0 {
137         cpu-supply = <&vdd_cpu_l>;
138 };
139
140 &cpu_l1 {
141         cpu-supply = <&vdd_cpu_l>;
142 };
143
144 &cpu_l2 {
145         cpu-supply = <&vdd_cpu_l>;
146 };
147
148 &cpu_l3 {
149         cpu-supply = <&vdd_cpu_l>;
150 };
151
152 &cpu_b0 {
153         cpu-supply = <&vdd_cpu_b>;
154 };
155
156 &cpu_b1 {
157         cpu-supply = <&vdd_cpu_b>;
158 };
159
160 &emmc_phy {
161         status = "okay";
162 };
163
164 &gmac {
165         assigned-clocks = <&cru SCLK_RMII_SRC>;
166         assigned-clock-parents = <&clkin_gmac>;
167         clock_in_out = "input";
168         phy-supply = <&vcc_lan>;
169         phy-mode = "rgmii";
170         pinctrl-names = "default";
171         pinctrl-0 = <&rgmii_pins>;
172         snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
173         snps,reset-active-low;
174         snps,reset-delays-us = <0 10000 50000>;
175         tx_delay = <0x28>;
176         rx_delay = <0x11>;
177         status = "okay";
178 };
179
180 &hdmi {
181         ddc-i2c-bus = <&i2c3>;
182         pinctrl-names = "default";
183         pinctrl-0 = <&hdmi_cec>;
184         status = "okay";
185 };
186
187 &i2c0 {
188         clock-frequency = <400000>;
189         i2c-scl-rising-time-ns = <168>;
190         i2c-scl-falling-time-ns = <4>;
191         status = "okay";
192
193         rk808: pmic@1b {
194                 compatible = "rockchip,rk808";
195                 reg = <0x1b>;
196                 interrupt-parent = <&gpio1>;
197                 interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
198                 #clock-cells = <1>;
199                 clock-output-names = "xin32k", "rk808-clkout2";
200                 pinctrl-names = "default";
201                 pinctrl-0 = <&pmic_int_l>;
202                 rockchip,system-power-controller;
203                 wakeup-source;
204
205                 vcc1-supply = <&vcc3v3_sys>;
206                 vcc2-supply = <&vcc3v3_sys>;
207                 vcc3-supply = <&vcc3v3_sys>;
208                 vcc4-supply = <&vcc3v3_sys>;
209                 vcc6-supply = <&vcc3v3_sys>;
210                 vcc7-supply = <&vcc3v3_sys>;
211                 vcc8-supply = <&vcc3v3_sys>;
212                 vcc9-supply = <&vcc3v3_sys>;
213                 vcc10-supply = <&vcc3v3_sys>;
214                 vcc11-supply = <&vcc3v3_sys>;
215                 vcc12-supply = <&vcc3v3_sys>;
216                 vddio-supply = <&vcc1v8_pmu>;
217
218                 regulators {
219                         vdd_center: DCDC_REG1 {
220                                 regulator-name = "vdd_center";
221                                 regulator-always-on;
222                                 regulator-boot-on;
223                                 regulator-min-microvolt = <750000>;
224                                 regulator-max-microvolt = <1350000>;
225                                 regulator-ramp-delay = <6001>;
226                                 regulator-state-mem {
227                                         regulator-off-in-suspend;
228                                 };
229                         };
230
231                         vdd_cpu_l: DCDC_REG2 {
232                                 regulator-name = "vdd_cpu_l";
233                                 regulator-always-on;
234                                 regulator-boot-on;
235                                 regulator-min-microvolt = <750000>;
236                                 regulator-max-microvolt = <1350000>;
237                                 regulator-ramp-delay = <6001>;
238                                 regulator-state-mem {
239                                         regulator-off-in-suspend;
240                                 };
241                         };
242
243                         vcc_ddr: DCDC_REG3 {
244                                 regulator-name = "vcc_ddr";
245                                 regulator-always-on;
246                                 regulator-boot-on;
247                                 regulator-state-mem {
248                                         regulator-on-in-suspend;
249                                 };
250                         };
251
252                         vcc_1v8: DCDC_REG4 {
253                                 regulator-name = "vcc_1v8";
254                                 regulator-always-on;
255                                 regulator-boot-on;
256                                 regulator-min-microvolt = <1800000>;
257                                 regulator-max-microvolt = <1800000>;
258                                 regulator-state-mem {
259                                         regulator-on-in-suspend;
260                                         regulator-suspend-microvolt = <1800000>;
261                                 };
262                         };
263
264                         vcca1v8_codec: LDO_REG1 {
265                                 regulator-name = "vcca1v8_codec";
266                                 regulator-always-on;
267                                 regulator-boot-on;
268                                 regulator-min-microvolt = <1800000>;
269                                 regulator-max-microvolt = <1800000>;
270                                 regulator-state-mem {
271                                         regulator-off-in-suspend;
272                                 };
273                         };
274
275                         vcc1v8_hdmi: LDO_REG2 {
276                                 regulator-name = "vcc1v8_hdmi";
277                                 regulator-always-on;
278                                 regulator-boot-on;
279                                 regulator-min-microvolt = <1800000>;
280                                 regulator-max-microvolt = <1800000>;
281                                 regulator-state-mem {
282                                         regulator-off-in-suspend;
283                                 };
284                         };
285
286                         vcc1v8_pmu: LDO_REG3 {
287                                 regulator-name = "vcc1v8_pmu";
288                                 regulator-always-on;
289                                 regulator-boot-on;
290                                 regulator-min-microvolt = <1800000>;
291                                 regulator-max-microvolt = <1800000>;
292                                 regulator-state-mem {
293                                         regulator-on-in-suspend;
294                                         regulator-suspend-microvolt = <1800000>;
295                                 };
296                         };
297
298                         vcc_sdio: LDO_REG4 {
299                                 regulator-name = "vcc_sdio";
300                                 regulator-always-on;
301                                 regulator-boot-on;
302                                 regulator-min-microvolt = <1800000>;
303                                 regulator-max-microvolt = <3000000>;
304                                 regulator-state-mem {
305                                         regulator-on-in-suspend;
306                                         regulator-suspend-microvolt = <3000000>;
307                                 };
308                         };
309
310                         vcca3v0_codec: LDO_REG5 {
311                                 regulator-name = "vcca3v0_codec";
312                                 regulator-always-on;
313                                 regulator-boot-on;
314                                 regulator-min-microvolt = <3000000>;
315                                 regulator-max-microvolt = <3000000>;
316                                 regulator-state-mem {
317                                         regulator-off-in-suspend;
318                                 };
319                         };
320
321                         vcc_1v5: LDO_REG6 {
322                                 regulator-name = "vcc_1v5";
323                                 regulator-always-on;
324                                 regulator-boot-on;
325                                 regulator-min-microvolt = <1500000>;
326                                 regulator-max-microvolt = <1500000>;
327                                 regulator-state-mem {
328                                         regulator-on-in-suspend;
329                                         regulator-suspend-microvolt = <1500000>;
330                                 };
331                         };
332
333                         vcca0v9_hdmi: LDO_REG7 {
334                                 regulator-name = "vcca0v9_hdmi";
335                                 regulator-always-on;
336                                 regulator-boot-on;
337                                 regulator-min-microvolt = <900000>;
338                                 regulator-max-microvolt = <900000>;
339                                 regulator-state-mem {
340                                         regulator-off-in-suspend;
341                                 };
342                         };
343
344                         vcc_3v0: LDO_REG8 {
345                                 regulator-name = "vcc_3v0";
346                                 regulator-always-on;
347                                 regulator-boot-on;
348                                 regulator-min-microvolt = <3000000>;
349                                 regulator-max-microvolt = <3000000>;
350                                 regulator-state-mem {
351                                         regulator-on-in-suspend;
352                                         regulator-suspend-microvolt = <3000000>;
353                                 };
354                         };
355
356                         vcc3v3_s3: vcc_lan: SWITCH_REG1 {
357                                 regulator-name = "vcc3v3_s3";
358                                 regulator-always-on;
359                                 regulator-boot-on;
360                                 regulator-state-mem {
361                                         regulator-off-in-suspend;
362                                 };
363                         };
364
365                         vcc3v3_s0: SWITCH_REG2 {
366                                 regulator-name = "vcc3v3_s0";
367                                 regulator-always-on;
368                                 regulator-boot-on;
369                                 regulator-state-mem {
370                                         regulator-off-in-suspend;
371                                 };
372                         };
373                 };
374         };
375
376         vdd_cpu_b: regulator@40 {
377                 compatible = "silergy,syr827";
378                 reg = <0x40>;
379                 fcs,suspend-voltage-selector = <1>;
380                 pinctrl-names = "default";
381                 pinctrl-0 = <&vsel1_gpio>;
382                 regulator-name = "vdd_cpu_b";
383                 regulator-min-microvolt = <712500>;
384                 regulator-max-microvolt = <1500000>;
385                 regulator-ramp-delay = <1000>;
386                 regulator-always-on;
387                 regulator-boot-on;
388                 vin-supply = <&vcc3v3_sys>;
389
390                 regulator-state-mem {
391                         regulator-off-in-suspend;
392                 };
393         };
394
395         vdd_gpu: regulator@41 {
396                 compatible = "silergy,syr828";
397                 reg = <0x41>;
398                 fcs,suspend-voltage-selector = <1>;
399                 pinctrl-names = "default";
400                 pinctrl-0 = <&vsel2_gpio>;
401                 regulator-name = "vdd_gpu";
402                 regulator-min-microvolt = <712500>;
403                 regulator-max-microvolt = <1500000>;
404                 regulator-ramp-delay = <1000>;
405                 regulator-always-on;
406                 regulator-boot-on;
407                 vin-supply = <&vcc3v3_sys>;
408
409                 regulator-state-mem {
410                         regulator-off-in-suspend;
411                 };
412         };
413 };
414
415 &i2c1 {
416         i2c-scl-rising-time-ns = <300>;
417         i2c-scl-falling-time-ns = <15>;
418         status = "okay";
419 };
420
421 &i2c3 {
422         i2c-scl-rising-time-ns = <450>;
423         i2c-scl-falling-time-ns = <15>;
424         status = "okay";
425 };
426
427 &i2c4 {
428         i2c-scl-rising-time-ns = <600>;
429         i2c-scl-falling-time-ns = <20>;
430         status = "okay";
431
432         fusb1: usb-typec@22 {
433                 compatible = "fcs,fusb302";
434                 reg = <0x22>;
435                 interrupt-parent = <&gpio1>;
436                 interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
437                 pinctrl-names = "default";
438                 pinctrl-0 = <&fusb1_int>;
439                 vbus-supply = <&vcc_vbus_typec1>;
440                 status = "okay";
441         };
442 };
443
444 &i2c7 {
445         i2c-scl-rising-time-ns = <600>;
446         i2c-scl-falling-time-ns = <20>;
447         status = "okay";
448
449         fusb0: usb-typec@22 {
450                 compatible = "fcs,fusb302";
451                 reg = <0x22>;
452                 interrupt-parent = <&gpio1>;
453                 interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
454                 pinctrl-names = "default";
455                 pinctrl-0 = <&fusb0_int>;
456                 vbus-supply = <&vcc_vbus_typec0>;
457                 status = "okay";
458         };
459 };
460
461 &i2s0 {
462         rockchip,playback-channels = <8>;
463         rockchip,capture-channels = <8>;
464         status = "okay";
465 };
466
467 &i2s1 {
468         rockchip,playback-channels = <2>;
469         rockchip,capture-channels = <2>;
470         status = "okay";
471 };
472
473 &i2s2 {
474         status = "okay";
475 };
476
477 &io_domains {
478         audio-supply = <&vcca1v8_codec>;
479         bt656-supply = <&vcc_3v0>;
480         gpio1830-supply = <&vcc_3v0>;
481         sdmmc-supply = <&vcc_sdio>;
482         status = "okay";
483 };
484
485 &pmu_io_domains {
486         pmu1830-supply = <&vcc_3v0>;
487         status = "okay";
488 };
489
490 &pinctrl {
491         lcd-panel {
492                 lcd_panel_reset: lcd-panel-reset {
493                         rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
494                 };
495         };
496
497         pmic {
498                 vsel1_gpio: vsel1-gpio {
499                         rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
500                 };
501
502                 vsel2_gpio: vsel2-gpio {
503                         rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
504                 };
505         };
506
507         sdio-pwrseq {
508                 wifi_enable_h: wifi-enable-h {
509                         rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
510                 };
511         };
512
513         pmic {
514                 pmic_int_l: pmic-int-l {
515                         rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
516                 };
517         };
518
519         usb2 {
520                 vcc5v0_host_en: vcc5v0-host-en {
521                         rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
522                 };
523
524                 hub_rst: hub-rst {
525                         rockchip,pins = <2 RK_PA4 RK_FUNC_GPIO &pcfg_output_high>;
526                 };
527         };
528
529         usb-typec {
530                 vcc_vbus_typec1_en: vcc-vbus-typec1-en {
531                         rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
532                 };
533         };
534
535         fusb30x {
536                 fusb0_int: fusb0-int {
537                         rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
538                 };
539
540                 fusb1_int: fusb1-int {
541                         rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
542                 };
543         };
544 };
545
546 &pwm0 {
547         status = "okay";
548 };
549
550 &pwm2 {
551         status = "okay";
552 };
553
554 &saradc {
555         vref-supply = <&vcca1v8_s3>;
556         status = "okay";
557 };
558
559 &sdmmc {
560         bus-width = <4>;
561         cap-mmc-highspeed;
562         cap-sd-highspeed;
563         cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
564         disable-wp;
565         max-frequency = <150000000>;
566         pinctrl-names = "default";
567         pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
568         status = "okay";
569 };
570
571 &sdhci {
572         bus-width = <8>;
573         mmc-hs400-1_8v;
574         mmc-hs400-enhanced-strobe;
575         non-removable;
576         status = "okay";
577 };
578
579 &tcphy0 {
580         status = "okay";
581 };
582
583 &tcphy1 {
584         status = "okay";
585 };
586
587 &tsadc {
588         /* tshut mode 0:CRU 1:GPIO */
589         rockchip,hw-tshut-mode = <1>;
590         /* tshut polarity 0:LOW 1:HIGH */
591         rockchip,hw-tshut-polarity = <1>;
592         status = "okay";
593 };
594
595 &u2phy0 {
596         status = "okay";
597
598         u2phy0_otg: otg-port {
599                 phy-supply = <&vcc_vbus_typec0>;
600                 status = "okay";
601         };
602
603         u2phy0_host: host-port {
604                 phy-supply = <&vcc5v0_host>;
605                 status = "okay";
606         };
607 };
608
609 &u2phy1 {
610         status = "okay";
611
612         u2phy1_otg: otg-port {
613                 phy-supply = <&vcc_vbus_typec1>;
614                 status = "okay";
615         };
616
617         u2phy1_host: host-port {
618                 phy-supply = <&vcc5v0_host>;
619                 status = "okay";
620         };
621 };
622
623 &uart0 {
624         pinctrl-names = "default";
625         pinctrl-0 = <&uart0_xfer &uart0_cts>;
626         status = "okay";
627 };
628
629 &uart2 {
630         status = "okay";
631 };
632
633 &usb_host0_ehci {
634         status = "okay";
635 };
636
637 &usb_host0_ohci {
638         status = "okay";
639 };
640
641 &usb_host1_ehci {
642         status = "okay";
643 };
644
645 &usb_host1_ohci {
646         status = "okay";
647 };
648
649 &usbdrd3_0 {
650         status = "okay";
651 };
652
653 &usbdrd_dwc3_0 {
654         status = "okay";
655 };
656
657 &usbdrd3_1 {
658         status = "okay";
659 };
660
661 &usbdrd_dwc3_1 {
662         status = "okay";
663         dr_mode = "host";
664 };
665
666 &vopb {
667         status = "okay";
668 };
669
670 &vopb_mmu {
671         status = "okay";
672 };
673
674 &vopl {
675         status = "okay";
676 };
677
678 &vopl_mmu {
679         status = "okay";
680 };