6fc899a87e56e263babc8a7f60d3b4b88e7e8422
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / boot / dts / rockchip / rk3399-tb.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,tb", "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
222 &sdmmc {
223         clock-frequency = <37500000>;
224         clock-freq-min-max = <400000 37500000>;
225         supports-sd;
226         bus-width = <4>;
227         cap-mmc-highspeed;
228         cap-sd-highspeed;
229         disable-wp;
230         num-slots = <1>;
231         pinctrl-names = "default";
232         pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
233         status = "okay";
234 };
235
236 &sdio0 {
237         clock-frequency = <50000000>;
238         clock-freq-min-max = <200000 50000000>;
239         supports-sdio;
240         bus-width = <4>;
241         disable-wp;
242         cap-sd-highspeed;
243         cap-sdio-irq;
244         keep-power-in-suspend;
245         mmc-pwrseq = <&sdio_pwrseq>;
246         non-removable;
247         num-slots = <1>;
248         pinctrl-names = "default";
249         pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
250         sd-uhs-sdr104;
251         status = "okay";
252 };
253
254 &emmc_phy {
255         status = "okay";
256 };
257
258 &sdhci {
259         bus-width = <8>;
260         supports-emmc;
261         non-removable;
262         max-frequency = <50000000>;
263         status = "okay";
264 };
265
266 &i2s0 {
267         status = "okay";
268         rockchip,i2s-broken-burst-len;
269         rockchip,playback-channels = <8>;
270         rockchip,capture-channels = <8>;
271         #sound-dai-cells = <0>;
272 };
273
274 &spdif {
275         status = "okay";
276         #sound-dai-cells = <0>;
277 };
278
279 &i2c0 {
280         status = "okay";
281         i2c-scl-rising-time-ns = <450>;
282         i2c-scl-falling-time-ns = <15>;
283
284         mp8865: mp8865@68 {
285                 compatible = "mps,mp8865";
286                 reg = <0x68>;
287                 status = "okay";
288                 regulators {
289                         vdd_gpu: mp8865_dcdc1 {
290                                 regulator-name = "vdd_gpu";
291                                 regulator-min-microvolt = <712500>;
292                                 regulator-max-microvolt = <1500000>;
293                                 regulator-always-on;
294                                 regulator-boot-on;
295                         };
296                 };
297         };
298
299         rk808: pmic@1b {
300                 compatible = "rockchip,rk808";
301                 reg = <0x1b>;
302                 interrupt-parent = <&gpio1>;
303                 interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
304                 pinctrl-names = "default";
305                 pinctrl-0 = <&pmic_int_l>;
306                 rockchip,system-power-controller;
307                 wakeup-source;
308                 #clock-cells = <1>;
309                 clock-output-names = "xin32k", "rk808-clkout2";
310
311                 vcc1-supply = <&vcc3v3_sys>;
312                 vcc2-supply = <&vcc3v3_sys>;
313                 vcc3-supply = <&vcc3v3_sys>;
314                 vcc4-supply = <&vcc3v3_sys>;
315                 vcc6-supply = <&vcc3v3_sys>;
316                 vcc7-supply = <&vcc3v3_sys>;
317                 vcc8-supply = <&vcc3v3_sys>;
318                 vcc9-supply = <&vcc3v3_sys>;
319                 vcc10-supply = <&vcc3v3_sys>;
320                 vcc11-supply = <&vcc3v3_sys>;
321                 vcc12-supply = <&vcc3v3_sys>;
322                 vddio-supply = <&vcc1v8_pmu>;
323
324                 regulators {
325                         vdd_cpu_b: DCDC_REG1 {
326                                 regulator-always-on;
327                                 regulator-boot-on;
328                                 regulator-min-microvolt = <750000>;
329                                 regulator-max-microvolt = <1350000>;
330                                 regulator-name = "vdd_cpu_b";
331                                 regulator-state-mem {
332                                         regulator-off-in-suspend;
333                                 };
334                         };
335
336                         vdd_cpu_l: DCDC_REG2 {
337                                 regulator-always-on;
338                                 regulator-boot-on;
339                                 regulator-min-microvolt = <750000>;
340                                 regulator-max-microvolt = <1350000>;
341                                 regulator-name = "vdd_cpu_l";
342                                 regulator-state-mem {
343                                         regulator-off-in-suspend;
344                                 };
345                         };
346
347                         vcc_ddr: DCDC_REG3 {
348                                 regulator-always-on;
349                                 regulator-boot-on;
350                                 regulator-name = "vcc_ddr";
351                                 regulator-state-mem {
352                                         regulator-on-in-suspend;
353                                 };
354                         };
355
356                         vcc_1v8: DCDC_REG4 {
357                                 regulator-always-on;
358                                 regulator-boot-on;
359                                 regulator-min-microvolt = <1800000>;
360                                 regulator-max-microvolt = <1800000>;
361                                 regulator-name = "vcc_1v8";
362                                 regulator-state-mem {
363                                         regulator-on-in-suspend;
364                                         regulator-suspend-microvolt = <1800000>;
365                                 };
366                         };
367
368                         vcc1v8_dvp: LDO_REG1 {
369                                 regulator-always-on;
370                                 regulator-boot-on;
371                                 regulator-min-microvolt = <1800000>;
372                                 regulator-max-microvolt = <1800000>;
373                                 regulator-name = "vcc1v8_dvp";
374                                 regulator-state-mem {
375                                         regulator-on-in-suspend;
376                                         regulator-suspend-microvolt = <1800000>;
377                                 };
378                         };
379
380                         vcc3v0_tp: LDO_REG2 {
381                                 regulator-always-on;
382                                 regulator-boot-on;
383                                 regulator-min-microvolt = <3000000>;
384                                 regulator-max-microvolt = <3000000>;
385                                 regulator-name = "vcc3v0_tp";
386                                 regulator-state-mem {
387                                         regulator-off-in-suspend;
388                                 };
389                         };
390
391                         vcc1v8_pmu: LDO_REG3 {
392                                 regulator-always-on;
393                                 regulator-boot-on;
394                                 regulator-min-microvolt = <1800000>;
395                                 regulator-max-microvolt = <1800000>;
396                                 regulator-name = "vcc1v8_pmu";
397                                 regulator-state-mem {
398                                         regulator-on-in-suspend;
399                                         regulator-suspend-microvolt = <1800000>;
400                                 };
401                         };
402
403                         vcc_sd: LDO_REG4 {
404                                 regulator-always-on;
405                                 regulator-boot-on;
406                                 regulator-min-microvolt = <1800000>;
407                                 regulator-max-microvolt = <3300000>;
408                                 regulator-name = "vcc_sd";
409                                 regulator-state-mem {
410                                         regulator-on-in-suspend;
411                                         regulator-suspend-microvolt = <3300000>;
412                                 };
413                         };
414
415                         vcca3v0_codec: LDO_REG5 {
416                                 regulator-always-on;
417                                 regulator-boot-on;
418                                 regulator-min-microvolt = <3000000>;
419                                 regulator-max-microvolt = <3000000>;
420                                 regulator-name = "vcca3v0_codec";
421                                 regulator-state-mem {
422                                         regulator-on-in-suspend;
423                                         regulator-suspend-microvolt = <3000000>;
424                                 };
425                         };
426
427                         vcc_1v5: LDO_REG6 {
428                                 regulator-always-on;
429                                 regulator-boot-on;
430                                 regulator-min-microvolt = <1500000>;
431                                 regulator-max-microvolt = <1500000>;
432                                 regulator-name = "vcc_1v5";
433                                 regulator-state-mem {
434                                         regulator-on-in-suspend;
435                                         regulator-suspend-microvolt = <1500000>;
436                                 };
437                         };
438
439                         vcca1v8_codec: LDO_REG7 {
440                                 regulator-always-on;
441                                 regulator-boot-on;
442                                 regulator-min-microvolt = <1800000>;
443                                 regulator-max-microvolt = <1800000>;
444                                 regulator-name = "vcca1v8_codec";
445                                 regulator-state-mem {
446                                         regulator-on-in-suspend;
447                                         regulator-suspend-microvolt = <1800000>;
448                                 };
449                         };
450
451                         vcc_3v0: LDO_REG8 {
452                                 regulator-always-on;
453                                 regulator-boot-on;
454                                 regulator-min-microvolt = <3000000>;
455                                 regulator-max-microvolt = <3000000>;
456                                 regulator-name = "vcc_3v0";
457                                 regulator-state-mem {
458                                         regulator-on-in-suspend;
459                                         regulator-suspend-microvolt = <3000000>;
460                                 };
461                         };
462
463                         vcc3v3_s3: SWITCH_REG1 {
464                                 regulator-always-on;
465                                 regulator-boot-on;
466                                 regulator-name = "vcc3v3_s3";
467                                 regulator-state-mem {
468                                         regulator-on-in-suspend;
469                                 };
470                         };
471
472                         vcc3v3_s0: SWITCH_REG2 {
473                                 regulator-always-on;
474                                 regulator-boot-on;
475                                 regulator-name = "vcc3v3_s0";
476                                 regulator-state-mem {
477                                         regulator-on-in-suspend;
478                                 };
479                         };
480                 };
481         };
482 };
483
484 &i2c4 {
485         status = "okay";
486         i2c-scl-rising-time-ns = <600>;
487         i2c-scl-falling-time-ns = <20>;
488
489         gt9xx: gt9xx@14 {
490                 compatible = "goodix,gt9xx";
491                 reg = <0x14>;
492                 touch-gpio = <&gpio1 20 IRQ_TYPE_LEVEL_LOW>;
493                 reset-gpio = <&gpio4 22 GPIO_ACTIVE_HIGH>;
494                 max-x = <1200>;
495                 max-y = <1900>;
496                 tp-size = <911>;
497                 tp-supply = <&vcc3v0_tp>;
498         };
499 };
500
501 &i2c1 {
502         status = "okay";
503         i2c-scl-rising-time-ns = <300>;
504         i2c-scl-falling-time-ns = <15>;
505
506         es8316: es8316@10 {
507                 #sound-dai-cells = <0>;
508                 compatible = "everest,es8316";
509                 reg = <0x10>;
510                 clocks = <&cru SCLK_I2S_8CH_OUT>;
511                 clock-names = "mclk";
512                 spk-con-gpio = <&gpio0 11 GPIO_ACTIVE_HIGH>;
513                 hp-det-gpio = <&gpio4 28 GPIO_ACTIVE_LOW>;
514         };
515 };
516
517 &pwm2 {
518         status = "okay";
519 };
520
521 &pwm3 {
522         status = "okay";
523 };
524
525 &tsadc {
526         rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
527         rockchip,hw-tshut-polarity = <0>; /* tshut polarity 0:LOW 1:HIGH */
528         status = "okay";
529 };
530
531 &uart2 {
532         status = "okay";
533 };
534
535 &usb2phy {
536         vbus_drv-gpio = <&gpio4 25 GPIO_ACTIVE_HIGH>;
537 };
538
539 &usb_host0_echi {
540         status = "okay";
541 };
542
543 &usb_host0_ohci {
544         status = "okay";
545 };
546
547 &usb_host1_echi {
548         status = "okay";
549 };
550
551 &usb_host1_ohci {
552         status = "okay";
553 };
554
555 &usbdrd3_0 {
556         status = "okay";
557 };
558
559 &usbdrd_dwc3_0 {
560         status = "okay";
561 };
562
563 &usbdrd3_1 {
564         status = "okay";
565 };
566
567 &usbdrd_dwc3_1 {
568         status = "okay";
569 };
570
571 &pwm0 {
572         status = "okay";
573 };
574
575 &cpu_l0 {
576         cpu-supply = <&vdd_cpu_l>;
577 };
578
579 &cpu_l1 {
580         cpu-supply = <&vdd_cpu_l>;
581 };
582
583 &cpu_l2 {
584         cpu-supply = <&vdd_cpu_l>;
585 };
586
587 &cpu_l3 {
588         cpu-supply = <&vdd_cpu_l>;
589 };
590
591 &cpu_b0 {
592         cpu-supply = <&vdd_cpu_b>;
593 };
594
595 &cpu_b1 {
596         cpu-supply = <&vdd_cpu_b>;
597 };
598
599 &gmac {
600         phy-supply = <&vcc_phy>;
601         phy-mode = "rgmii";
602         clock_in_out = "input";
603         snps,reset-gpio = <&gpio3 15 GPIO_ACTIVE_LOW>;
604         snps,reset-active-low;
605         snps,reset-delays-us = <0 10000 50000>;
606         assigned-clocks = <&cru SCLK_RMII_SRC>;
607         assigned-clock-parents = <&clkin_gmac>;
608         pinctrl-names = "default";
609         pinctrl-0 = <&rgmii_pins>;
610         tx_delay = <0x28>;
611         rx_delay = <0x11>;
612         status = "okay";
613 };
614
615 &gpu {
616         mali-supply = <&vdd_gpu>;
617         status = "okay";
618 };