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