ARM64: dts: rk3399-evb: add mmc-hs400-enhanced-strobe support
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / boot / dts / rockchip / rk3399-evb.dtsi
1 /*
2  * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd
3  *
4  * This file is dual-licensed: you can use it either under the terms
5  * of the GPL or the X11 license, at your option. Note that this dual
6  * licensing only applies to this file, and not this project as a
7  * whole.
8  *
9  *  a) This file is free software; you can redistribute it and/or
10  *     modify it under the terms of the GNU General Public License as
11  *     published by the Free Software Foundation; either version 2 of the
12  *     License, or (at your option) any later version.
13  *
14  *     This file is distributed in the hope that it will be useful,
15  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
16  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  *     GNU General Public License for more details.
18  *
19  * Or, alternatively,
20  *
21  *  b) Permission is hereby granted, free of charge, to any person
22  *     obtaining a copy of this software and associated documentation
23  *     files (the "Software"), to deal in the Software without
24  *     restriction, including without limitation the rights to use,
25  *     copy, modify, merge, publish, distribute, sublicense, and/or
26  *     sell copies of the Software, and to permit persons to whom the
27  *     Software is furnished to do so, subject to the following
28  *     conditions:
29  *
30  *     The above copyright notice and this permission notice shall be
31  *     included in all copies or substantial portions of the Software.
32  *
33  *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34  *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35  *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36  *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37  *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38  *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39  *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40  *     OTHER DEALINGS IN THE SOFTWARE.
41  */
42
43 #include <dt-bindings/pwm/pwm.h>
44 #include "rk3399.dtsi"
45
46 / {
47         compatible = "rockchip,evb", "rockchip,rk3399";
48
49         vdd_log: vdd-log {
50                 compatible = "pwm-regulator";
51                 pwms = <&pwm2 0 25000 0>;
52                 regulator-name = "vdd_log";
53                 regulator-min-microvolt = <800000>;
54                 regulator-max-microvolt = <1400000>;
55                 regulator-always-on;
56                 regulator-boot-on;
57                 status = "okay";
58         };
59
60         vdd_center: vdd-center {
61                 compatible = "pwm-regulator";
62                 pwms = <&pwm3 0 25000 0>;
63                 regulator-name = "vdd_center";
64                 regulator-min-microvolt = <800000>;
65                 regulator-max-microvolt = <1400000>;
66                 regulator-always-on;
67                 regulator-boot-on;
68                 status = "okay";
69         };
70
71         vcc3v3_sys: vcc3v3-sys {
72                 compatible = "regulator-fixed";
73                 regulator-name = "vcc3v3_sys";
74                 regulator-always-on;
75                 regulator-boot-on;
76                 regulator-min-microvolt = <3300000>;
77                 regulator-max-microvolt = <3300000>;
78         };
79
80         backlight: backlight {
81                 compatible = "pwm-backlight";
82                 pwms = <&pwm0 0 25000 0>;
83                 brightness-levels = <
84                           0   1   2   3   4   5   6   7
85                           8   9  10  11  12  13  14  15
86                          16  17  18  19  20  21  22  23
87                          24  25  26  27  28  29  30  31
88                          32  33  34  35  36  37  38  39
89                          40  41  42  43  44  45  46  47
90                          48  49  50  51  52  53  54  55
91                          56  57  58  59  60  61  62  63
92                          64  65  66  67  68  69  70  71
93                          72  73  74  75  76  77  78  79
94                          80  81  82  83  84  85  86  87
95                          88  89  90  91  92  93  94  95
96                          96  97  98  99 100 101 102 103
97                         104 105 106 107 108 109 110 111
98                         112 113 114 115 116 117 118 119
99                         120 121 122 123 124 125 126 127
100                         128 129 130 131 132 133 134 135
101                         136 137 138 139 140 141 142 143
102                         144 145 146 147 148 149 150 151
103                         152 153 154 155 156 157 158 159
104                         160 161 162 163 164 165 166 167
105                         168 169 170 171 172 173 174 175
106                         176 177 178 179 180 181 182 183
107                         184 185 186 187 188 189 190 191
108                         192 193 194 195 196 197 198 199
109                         200 201 202 203 204 205 206 207
110                         208 209 210 211 212 213 214 215
111                         216 217 218 219 220 221 222 223
112                         224 225 226 227 228 229 230 231
113                         232 233 234 235 236 237 238 239
114                         240 241 242 243 244 245 246 247
115                         248 249 250 251 252 253 254 255>;
116                 default-brightness-level = <200>;
117                 enable-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
118         };
119
120         clkin_gmac: external-gmac-clock {
121                 compatible = "fixed-clock";
122                 clock-frequency = <125000000>;
123                 clock-output-names = "clkin_gmac";
124                 #clock-cells = <0>;
125         };
126
127         vcc_phy: vcc-phy-regulator {
128                 compatible = "regulator-fixed";
129                 regulator-name = "vcc_phy";
130                 regulator-always-on;
131                 regulator-boot-on;
132         };
133
134         io-domains {
135                 compatible = "rockchip,rk3399-io-voltage-domain";
136                 rockchip,grf = <&grf>;
137
138                 bt656-supply = <&vcc1v8_dvp>;
139                 audio-supply = <&vcca1v8_codec>;
140                 sdmmc-supply = <&vcc_sd>;
141                 gpio1830-supply = <&vcc_3v0>;
142         };
143
144         pmu-io-domains {
145                 compatible = "rockchip,rk3399-pmu-io-voltage-domain";
146                 rockchip,grf = <&pmugrf>;
147
148                 pmu1830-supply = <&vcc1v8_pmu>;
149         };
150
151         es8316-sound {
152                 compatible = "simple-audio-card";
153                 simple-audio-card,format = "i2s";
154                 simple-audio-card,name = "rockchip,es8316-codec";
155                 simple-audio-card,mclk-fs = <256>;
156                 simple-audio-card,widgets =
157                         "Microphone", "Mic Jack",
158                         "Headphone", "Headphone Jack";
159                 simple-audio-card,routing =
160                         "Mic Jack", "MICBIAS1",
161                         "IN1P", "Mic Jack",
162                         "Headphone Jack", "HPOL",
163                         "Headphone Jack", "HPOR";
164                 simple-audio-card,cpu {
165                         sound-dai = <&i2s0>;
166                 };
167                 simple-audio-card,codec {
168                         sound-dai = <&es8316>;
169                 };
170         };
171
172         spdif-sound {
173                 compatible = "simple-audio-card";
174                 simple-audio-card,name = "rockchip,spdif";
175                 simple-audio-card,cpu {
176                         sound-dai = <&spdif>;
177                 };
178                 simple-audio-card,codec {
179                         sound-dai = <&spdif_out>;
180                 };
181         };
182
183         spdif_out: spdif-out {
184                 compatible = "linux,spdif-dit";
185                 #sound-dai-cells = <0>;
186         };
187
188         sdio_pwrseq: sdio-pwrseq {
189                 compatible = "mmc-pwrseq-simple";
190                 clocks = <&rk808 1>;
191                 clock-names = "ext_clock";
192                 pinctrl-names = "default";
193                 pinctrl-0 = <&wifi_enable_h>;
194
195                 /*
196                  * On the module itself this is one of these (depending
197                  * on the actual card populated):
198                  * - SDIO_RESET_L_WL_REG_ON
199                  * - PDN (power down when low)
200                  */
201                 reset-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; /* GPIO0_B2 */
202         };
203
204         wireless-wlan {
205                 compatible = "wlan-platdata";
206                 rockchip,grf = <&grf>;
207                 wifi_chip_type = "ap6354";
208                 sdio_vref = <1800>;
209                 WIFI,host_wake_irq = <&gpio0 3 GPIO_ACTIVE_HIGH>; /* GPIO0_a3 */
210                 status = "okay";
211         };
212 };
213
214 &pinctrl {
215         sdio-pwrseq {
216                 wifi_enable_h: wifi-enable-h {
217                         rockchip,pins = <0 10 RK_FUNC_GPIO &pcfg_pull_none>;
218                 };
219         };
220
221         pmic {
222                 pmic_int_l: pmic-int-l {
223                         rockchip,pins =
224                                 <1 21 RK_FUNC_GPIO &pcfg_pull_up>;
225                 };
226
227                 pmic_dvs2: pmic-dvs2 {
228                         rockchip,pins =
229                                 <1 18 RK_FUNC_GPIO &pcfg_pull_down>;
230                 };
231         };
232 };
233
234 &sdmmc {
235         clock-frequency = <37500000>;
236         clock-freq-min-max = <400000 37500000>;
237         supports-sd;
238         bus-width = <4>;
239         cap-mmc-highspeed;
240         cap-sd-highspeed;
241         disable-wp;
242         num-slots = <1>;
243         pinctrl-names = "default";
244         pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
245         status = "okay";
246 };
247
248 &sdio0 {
249         clock-frequency = <50000000>;
250         clock-freq-min-max = <200000 50000000>;
251         supports-sdio;
252         bus-width = <4>;
253         disable-wp;
254         cap-sd-highspeed;
255         cap-sdio-irq;
256         keep-power-in-suspend;
257         mmc-pwrseq = <&sdio_pwrseq>;
258         non-removable;
259         num-slots = <1>;
260         pinctrl-names = "default";
261         pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
262         sd-uhs-sdr104;
263         status = "okay";
264 };
265
266 &emmc_phy {
267         freq-sel = <200000000>;
268         dr-sel = <50>;
269         opdelay = <4>;
270         status = "okay";
271 };
272
273 &sdhci {
274         bus-width = <8>;
275         mmc-hs400-1_8v;
276         supports-emmc;
277         non-removable;
278         mmc-hs400-enhanced-strobe;
279         status = "okay";
280 };
281
282 &i2s0 {
283         status = "okay";
284         rockchip,i2s-broken-burst-len;
285         rockchip,playback-channels = <8>;
286         rockchip,capture-channels = <8>;
287         #sound-dai-cells = <0>;
288 };
289
290 &spdif {
291         status = "okay";
292         #sound-dai-cells = <0>;
293 };
294
295 &i2c0 {
296         status = "okay";
297         i2c-scl-rising-time-ns = <450>;
298         i2c-scl-falling-time-ns = <15>;
299
300         mp8865: mp8865@68 {
301                 compatible = "mps,mp8865";
302                 reg = <0x68>;
303                 status = "okay";
304                 regulators {
305                         vdd_gpu: mp8865_dcdc1 {
306                                 regulator-name = "vdd_gpu";
307                                 regulator-min-microvolt = <712500>;
308                                 regulator-max-microvolt = <1500000>;
309                                 regulator-always-on;
310                                 regulator-boot-on;
311                         };
312                 };
313         };
314
315         rk808: pmic@1b {
316                 compatible = "rockchip,rk808";
317                 reg = <0x1b>;
318                 interrupt-parent = <&gpio1>;
319                 interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
320                 pinctrl-names = "default";
321                 pinctrl-0 = <&pmic_int_l &pmic_dvs2>;
322                 rockchip,system-power-controller;
323                 wakeup-source;
324                 #clock-cells = <1>;
325                 clock-output-names = "xin32k", "rk808-clkout2";
326
327                 vcc1-supply = <&vcc3v3_sys>;
328                 vcc2-supply = <&vcc3v3_sys>;
329                 vcc3-supply = <&vcc3v3_sys>;
330                 vcc4-supply = <&vcc3v3_sys>;
331                 vcc6-supply = <&vcc3v3_sys>;
332                 vcc7-supply = <&vcc3v3_sys>;
333                 vcc8-supply = <&vcc3v3_sys>;
334                 vcc9-supply = <&vcc3v3_sys>;
335                 vcc10-supply = <&vcc3v3_sys>;
336                 vcc11-supply = <&vcc3v3_sys>;
337                 vcc12-supply = <&vcc3v3_sys>;
338                 vddio-supply = <&vcc1v8_pmu>;
339
340                 regulators {
341                         vdd_cpu_b: DCDC_REG1 {
342                                 regulator-always-on;
343                                 regulator-boot-on;
344                                 regulator-min-microvolt = <750000>;
345                                 regulator-max-microvolt = <1350000>;
346                                 regulator-name = "vdd_cpu_b";
347                                 regulator-state-mem {
348                                         regulator-off-in-suspend;
349                                 };
350                         };
351
352                         vdd_cpu_l: DCDC_REG2 {
353                                 regulator-always-on;
354                                 regulator-boot-on;
355                                 regulator-min-microvolt = <750000>;
356                                 regulator-max-microvolt = <1350000>;
357                                 regulator-name = "vdd_cpu_l";
358                                 regulator-state-mem {
359                                         regulator-off-in-suspend;
360                                 };
361                         };
362
363                         vcc_ddr: DCDC_REG3 {
364                                 regulator-always-on;
365                                 regulator-boot-on;
366                                 regulator-name = "vcc_ddr";
367                                 regulator-state-mem {
368                                         regulator-on-in-suspend;
369                                 };
370                         };
371
372                         vcc_1v8: DCDC_REG4 {
373                                 regulator-always-on;
374                                 regulator-boot-on;
375                                 regulator-min-microvolt = <1800000>;
376                                 regulator-max-microvolt = <1800000>;
377                                 regulator-name = "vcc_1v8";
378                                 regulator-state-mem {
379                                         regulator-on-in-suspend;
380                                         regulator-suspend-microvolt = <1800000>;
381                                 };
382                         };
383
384                         vcc1v8_dvp: LDO_REG1 {
385                                 regulator-always-on;
386                                 regulator-boot-on;
387                                 regulator-min-microvolt = <1800000>;
388                                 regulator-max-microvolt = <1800000>;
389                                 regulator-name = "vcc1v8_dvp";
390                                 regulator-state-mem {
391                                         regulator-on-in-suspend;
392                                         regulator-suspend-microvolt = <1800000>;
393                                 };
394                         };
395
396                         vcc3v0_tp: LDO_REG2 {
397                                 regulator-always-on;
398                                 regulator-boot-on;
399                                 regulator-min-microvolt = <3000000>;
400                                 regulator-max-microvolt = <3000000>;
401                                 regulator-name = "vcc3v0_tp";
402                                 regulator-state-mem {
403                                         regulator-off-in-suspend;
404                                 };
405                         };
406
407                         vcc1v8_pmu: LDO_REG3 {
408                                 regulator-always-on;
409                                 regulator-boot-on;
410                                 regulator-min-microvolt = <1800000>;
411                                 regulator-max-microvolt = <1800000>;
412                                 regulator-name = "vcc1v8_pmu";
413                                 regulator-state-mem {
414                                         regulator-on-in-suspend;
415                                         regulator-suspend-microvolt = <1800000>;
416                                 };
417                         };
418
419                         vcc_sd: LDO_REG4 {
420                                 regulator-always-on;
421                                 regulator-boot-on;
422                                 regulator-min-microvolt = <1800000>;
423                                 regulator-max-microvolt = <3300000>;
424                                 regulator-name = "vcc_sd";
425                                 regulator-state-mem {
426                                         regulator-on-in-suspend;
427                                         regulator-suspend-microvolt = <3300000>;
428                                 };
429                         };
430
431                         vcca3v0_codec: LDO_REG5 {
432                                 regulator-always-on;
433                                 regulator-boot-on;
434                                 regulator-min-microvolt = <3000000>;
435                                 regulator-max-microvolt = <3000000>;
436                                 regulator-name = "vcca3v0_codec";
437                                 regulator-state-mem {
438                                         regulator-on-in-suspend;
439                                         regulator-suspend-microvolt = <3000000>;
440                                 };
441                         };
442
443                         vcc_1v5: LDO_REG6 {
444                                 regulator-always-on;
445                                 regulator-boot-on;
446                                 regulator-min-microvolt = <1500000>;
447                                 regulator-max-microvolt = <1500000>;
448                                 regulator-name = "vcc_1v5";
449                                 regulator-state-mem {
450                                         regulator-on-in-suspend;
451                                         regulator-suspend-microvolt = <1500000>;
452                                 };
453                         };
454
455                         vcca1v8_codec: LDO_REG7 {
456                                 regulator-always-on;
457                                 regulator-boot-on;
458                                 regulator-min-microvolt = <1800000>;
459                                 regulator-max-microvolt = <1800000>;
460                                 regulator-name = "vcca1v8_codec";
461                                 regulator-state-mem {
462                                         regulator-on-in-suspend;
463                                         regulator-suspend-microvolt = <1800000>;
464                                 };
465                         };
466
467                         vcc_3v0: LDO_REG8 {
468                                 regulator-always-on;
469                                 regulator-boot-on;
470                                 regulator-min-microvolt = <3000000>;
471                                 regulator-max-microvolt = <3000000>;
472                                 regulator-name = "vcc_3v0";
473                                 regulator-state-mem {
474                                         regulator-on-in-suspend;
475                                         regulator-suspend-microvolt = <3000000>;
476                                 };
477                         };
478
479                         vcc3v3_s3: SWITCH_REG1 {
480                                 regulator-always-on;
481                                 regulator-boot-on;
482                                 regulator-name = "vcc3v3_s3";
483                                 regulator-state-mem {
484                                         regulator-on-in-suspend;
485                                 };
486                         };
487
488                         vcc3v3_s0: SWITCH_REG2 {
489                                 regulator-always-on;
490                                 regulator-boot-on;
491                                 regulator-name = "vcc3v3_s0";
492                                 regulator-state-mem {
493                                         regulator-on-in-suspend;
494                                 };
495                         };
496                 };
497         };
498 };
499
500 &i2c4 {
501         status = "okay";
502         i2c-scl-rising-time-ns = <600>;
503         i2c-scl-falling-time-ns = <20>;
504
505         gt9xx: gt9xx@14 {
506                 compatible = "goodix,gt9xx";
507                 reg = <0x14>;
508                 touch-gpio = <&gpio1 20 IRQ_TYPE_LEVEL_LOW>;
509                 reset-gpio = <&gpio4 22 GPIO_ACTIVE_HIGH>;
510                 max-x = <1200>;
511                 max-y = <1900>;
512                 tp-size = <911>;
513                 tp-supply = <&vcc3v0_tp>;
514         };
515 };
516
517 &i2c1 {
518         status = "okay";
519         i2c-scl-rising-time-ns = <300>;
520         i2c-scl-falling-time-ns = <15>;
521
522         es8316: es8316@10 {
523                 #sound-dai-cells = <0>;
524                 compatible = "everest,es8316";
525                 reg = <0x10>;
526                 clocks = <&cru SCLK_I2S_8CH_OUT>;
527                 clock-names = "mclk";
528                 spk-con-gpio = <&gpio0 11 GPIO_ACTIVE_HIGH>;
529                 hp-det-gpio = <&gpio4 28 GPIO_ACTIVE_LOW>;
530         };
531 };
532
533 &pwm2 {
534         status = "okay";
535 };
536
537 &pwm3 {
538         status = "okay";
539 };
540
541 &tsadc {
542         rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
543         rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
544         status = "okay";
545 };
546
547 &uart2 {
548         status = "okay";
549 };
550
551 &usb2phy {
552         vbus_drv-gpio = <&gpio4 25 GPIO_ACTIVE_HIGH>;
553 };
554
555 &usb_host0_echi {
556         status = "okay";
557 };
558
559 &usb_host0_ohci {
560         status = "okay";
561 };
562
563 &usb_host1_echi {
564         status = "okay";
565 };
566
567 &usb_host1_ohci {
568         status = "okay";
569 };
570
571 &usbdrd3_0 {
572         status = "okay";
573 };
574
575 &usbdrd_dwc3_0 {
576         status = "okay";
577 };
578
579 &usbdrd3_1 {
580         status = "okay";
581 };
582
583 &usbdrd_dwc3_1 {
584         status = "okay";
585 };
586
587 &pwm0 {
588         status = "okay";
589 };
590
591 &cpu_l0 {
592         cpu-supply = <&vdd_cpu_l>;
593 };
594
595 &cpu_l1 {
596         cpu-supply = <&vdd_cpu_l>;
597 };
598
599 &cpu_l2 {
600         cpu-supply = <&vdd_cpu_l>;
601 };
602
603 &cpu_l3 {
604         cpu-supply = <&vdd_cpu_l>;
605 };
606
607 &cpu_b0 {
608         cpu-supply = <&vdd_cpu_b>;
609 };
610
611 &cpu_b1 {
612         cpu-supply = <&vdd_cpu_b>;
613 };
614
615 &gmac {
616         phy-supply = <&vcc_phy>;
617         phy-mode = "rgmii";
618         clock_in_out = "input";
619         snps,reset-gpio = <&gpio3 15 GPIO_ACTIVE_LOW>;
620         snps,reset-active-low;
621         snps,reset-delays-us = <0 10000 50000>;
622         assigned-clocks = <&cru SCLK_RMII_SRC>;
623         assigned-clock-parents = <&clkin_gmac>;
624         pinctrl-names = "default";
625         pinctrl-0 = <&rgmii_pins>;
626         tx_delay = <0x28>;
627         rx_delay = <0x11>;
628         status = "okay";
629 };
630
631 &gpu {
632         mali-supply = <&vdd_gpu>;
633         status = "okay";
634 };