arm64: dts: rockchip: add ap6330 support for rk3399-vr-android
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / boot / dts / rockchip / rk3399-vr-android.dts
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 /dts-v1/;
44 #include <dt-bindings/pwm/pwm.h>
45 #include "rk3399.dtsi"
46 #include "rk3399-android.dtsi"
47
48 / {
49         model = "Rockchip RK3399 VR Board";
50         compatible = "rockchip,vr", "rockchip,rk3399";
51
52         vdd_log: vdd-log {
53                 compatible = "pwm-regulator";
54                 pwms = <&pwm2 0 25000 0>;
55                 rockchip,pwm_id= <2>;
56                 rockchip,pwm_voltage = <900000>;
57                 regulator-name = "vdd_log";
58                 regulator-min-microvolt = <800000>;
59                 regulator-max-microvolt = <1400000>;
60                 regulator-always-on;
61                 regulator-boot-on;
62         };
63         vcc_sys: vcc-sys {
64                 compatible = "regulator-fixed";
65                 regulator-name = "vcc_sys";
66                 regulator-always-on;
67                 regulator-boot-on;
68                 regulator-min-microvolt = <4000000>;
69                 regulator-max-microvolt = <4000000>;
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 = <100>;
117         };
118
119         vcc_phy: vcc-phy-regulator {
120                 compatible = "regulator-fixed";
121                 regulator-name = "vcc_phy";
122                 regulator-always-on;
123                 regulator-boot-on;
124         };
125
126         io-domains {
127                 compatible = "rockchip,rk3399-io-voltage-domain";
128                 rockchip,grf = <&grf>;
129
130                 bt656-supply = <&vcc1v8_dvp>;
131                 audio-supply = <&vcca1v8_codec>;
132                 sdmmc-supply = <&vcc_sd>;
133                 gpio1830-supply = <&vcc_3v0>;
134         };
135
136         pmu-io-domains {
137                 compatible = "rockchip,rk3399-pmu-io-voltage-domain";
138                 rockchip,grf = <&pmugrf>;
139
140                 pmu1830-supply = <&vcc_1v8>;
141         };
142
143         es8316-sound {
144                 compatible = "simple-audio-card";
145                 simple-audio-card,format = "i2s";
146                 simple-audio-card,name = "rockchip,es8316-codec";
147                 simple-audio-card,mclk-fs = <256>;
148                 simple-audio-card,widgets =
149                         "Microphone", "Mic Jack",
150                         "Headphone", "Headphone Jack";
151                 simple-audio-card,routing =
152                         "Mic Jack", "MICBIAS1",
153                         "IN1P", "Mic Jack",
154                         "Headphone Jack", "HPOL",
155                         "Headphone Jack", "HPOR";
156                 simple-audio-card,cpu {
157                         sound-dai = <&i2s0>;
158                 };
159                 simple-audio-card,codec {
160                         sound-dai = <&es8316>;
161                 };
162         };
163
164         spdif-sound {
165                 compatible = "simple-audio-card";
166                 simple-audio-card,name = "rockchip,spdif";
167                 simple-audio-card,cpu {
168                         sound-dai = <&spdif>;
169                 };
170                 simple-audio-card,codec {
171                         sound-dai = <&spdif_out>;
172                 };
173         };
174
175         spdif_out: spdif-out {
176                 compatible = "linux,spdif-dit";
177                 #sound-dai-cells = <0>;
178         };
179
180         sdio_pwrseq: sdio-pwrseq {
181                 compatible = "mmc-pwrseq-simple";
182                 clocks = <&rk818 1>;
183                 clock-names = "ext_clock";
184                 pinctrl-names = "default";
185                 pinctrl-0 = <&wifi_enable_h>;
186
187                 /*
188                  * On the module itself this is one of these (depending
189                  * on the actual card populated):
190                  * - SDIO_RESET_L_WL_REG_ON
191                  * - PDN (power down when low)
192                  */
193                 reset-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; /* GPIO0_B2 */
194         };
195
196         wireless-wlan {
197                 compatible = "wlan-platdata";
198                 rockchip,grf = <&grf>;
199                 wifi_chip_type = "ap6330";
200                 sdio_vref = <1800>;
201                 WIFI,host_wake_irq = <&gpio0 3 GPIO_ACTIVE_HIGH>; /* GPIO0_a3 */
202                 status = "okay";
203         };
204
205         wireless-bluetooth {
206                 compatible = "bluetooth-platdata";
207                 //wifi-bt-power-toggle;
208                 uart_rts_gpios = <&gpio2 19 GPIO_ACTIVE_LOW>; /* GPIO2_C3 */
209                 pinctrl-names = "default", "rts_gpio";
210                 pinctrl-0 = <&uart0_rts>;
211                 pinctrl-1 = <&uart0_gpios>;
212                 //BT,power_gpio  = <&gpio3 19 GPIO_ACTIVE_HIGH>; /* GPIOx_xx */
213                 BT,reset_gpio    = <&gpio0 9 GPIO_ACTIVE_HIGH>; /* GPIO0_B1 */
214                 BT,wake_gpio     = <&gpio2 26 GPIO_ACTIVE_HIGH>; /* GPIO2_D2 */
215                 BT,wake_host_irq = <&gpio0 4 GPIO_ACTIVE_HIGH>; /* GPIO0_A4 */
216                 status = "okay";
217         };
218 };
219
220 &sdmmc {
221         clock-frequency = <150000000>;
222         clock-freq-min-max = <400000 150000000>;
223         supports-sd;
224         bus-width = <4>;
225         cap-mmc-highspeed;
226         cap-sd-highspeed;
227         disable-wp;
228         num-slots = <1>;
229         sd-uhs-sdr104;
230         vqmmc-supply = <&vcc_sd>;
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         freq-sel = <200000000>;
256         dr-sel = <50>;
257         opdelay = <4>;
258         status = "okay";
259 };
260
261 &sdhci {
262         bus-width = <8>;
263         mmc-hs400-1_8v;
264         supports-emmc;
265         non-removable;
266         mmc-hs400-enhanced-strobe;
267         status = "okay";
268 };
269
270 &i2s0 {
271         status = "okay";
272         rockchip,i2s-broken-burst-len;
273         rockchip,playback-channels = <8>;
274         rockchip,capture-channels = <8>;
275         #sound-dai-cells = <0>;
276 };
277
278 &spdif {
279         status = "okay";
280         #sound-dai-cells = <0>;
281 };
282
283 &i2c0 {
284         status = "okay";
285         i2c-scl-rising-time-ns = <219>;
286         i2c-scl-falling-time-ns = <15>;
287         clock-frequency = <400000>;
288
289         vdd_cpu_b: syr828@41 {
290                 compatible = "silergy,syr828";
291                 reg = <0x41>;
292                 vin-supply = <&vcc_sys>;
293                 regulator-compatible = "fan53555-reg";
294                 regulator-name = "vdd_cpu_b";
295                 regulator-min-microvolt = <712500>;
296                 regulator-max-microvolt = <1500000>;
297                 regulator-ramp-delay = <1000>;
298                 fcs,suspend-voltage-selector = <1>;
299                 regulator-always-on;
300                 regulator-boot-on;
301                 regulator-initial-state = <3>;
302                 regulator-state-mem {
303                         regulator-off-in-suspend;
304                 };
305         };
306
307         lp8752: lp8752@60 {
308                 compatible = "ti,lp8752";
309                 reg = <0x60>;
310                 vin0-supply = <&vcc_sys>;
311                 regulators {
312                         vdd_gpu: lp8752_buck0 {
313                                 regulator-name = "vdd_gpu";
314                                 regulator-min-microvolt = <735000>;
315                                 regulator-max-microvolt = <1400000>;
316                                 regulator-always-on;
317                                 regulator-boot-on;
318                         };
319                 };
320         };
321
322         rk818: pmic@1c {
323                 compatible = "rockchip,rk818";
324                 status = "okay";
325                 reg = <0x1c>;
326                 clock-output-names = "xin32k", "wifibt_32kin";
327                 interrupt-parent = <&gpio1>;
328                 interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
329                 pinctrl-names = "default";
330                 pinctrl-0 = <&pmic_int_l>;
331                 rockchip,system-power-controller;
332                 wakeup-source;
333                 #clock-cells = <1>;
334
335                 vcc1-supply = <&vcc_sys>;
336                 vcc2-supply = <&vcc_sys>;
337                 vcc3-supply = <&vcc_sys>;
338                 vcc4-supply = <&vcc_sys>;
339                 vcc6-supply = <&vcc_sys>;
340                 vcc7-supply = <&vcc3v3_sys>;
341                 vcc8-supply = <&vcc_sys>;
342                 vcc9-supply = <&vcc3v3_sys>;
343
344                 regulators {
345                         vdd_cpu_l: DCDC_REG1 {
346                                 regulator-name = "vdd_cpu_l";
347                                 regulator-always-on;
348                                 regulator-boot-on;
349                                 regulator-min-microvolt = <750000>;
350                                 regulator-max-microvolt = <1350000>;
351                                 regulator-ramp-delay = <6001>;
352                                 regulator-state-mem {
353                                         regulator-off-in-suspend;
354                                 };
355                         };
356
357                         vdd_center: DCDC_REG2 {
358                                 regulator-name = "vdd_center";
359                                 regulator-always-on;
360                                 regulator-boot-on;
361                                 regulator-min-microvolt = <800000>;
362                                 regulator-max-microvolt = <1350000>;
363                                 regulator-ramp-delay = <6001>;
364                                 regulator-state-mem {
365                                         regulator-on-in-suspend;
366                                         regulator-suspend-microvolt = <1000000>;
367                                 };
368                         };
369
370                         vcc_ddr: DCDC_REG3 {
371                                 regulator-name = "vcc_ddr";
372                                 regulator-always-on;
373                                 regulator-boot-on;
374                                 regulator-state-mem {
375                                         regulator-on-in-suspend;
376                                 };
377                         };
378
379                         vcc_1v8: DCDC_REG4 {
380                                 regulator-name = "vcc_1v8";
381                                 regulator-always-on;
382                                 regulator-boot-on;
383                                 regulator-min-microvolt = <1800000>;
384                                 regulator-max-microvolt = <1800000>;
385                                 regulator-state-mem {
386                                         regulator-on-in-suspend;
387                                         regulator-suspend-microvolt = <1800000>;
388                                 };
389                         };
390
391                         vcca3v0_codec: LDO_REG1 {
392                                 regulator-always-on;
393                                 regulator-boot-on;
394                                 regulator-min-microvolt = <3000000>;
395                                 regulator-max-microvolt = <3000000>;
396                                 regulator-name = "vcca3v0_codec";
397                                 regulator-state-mem {
398                                         regulator-off-in-suspend;
399                                 };
400                         };
401
402                         vcc3v0_tp: LDO_REG2 {
403                                 regulator-always-on;
404                                 regulator-boot-on;
405                                 regulator-min-microvolt = <3000000>;
406                                 regulator-max-microvolt = <3000000>;
407                                 regulator-name = "vcc3v0_tp";
408                                 regulator-state-mem {
409                                         regulator-off-in-suspend;
410                                 };
411                         };
412
413                         vcca1v8_codec: LDO_REG3 {
414                                 regulator-always-on;
415                                 regulator-boot-on;
416                                 regulator-min-microvolt = <1800000>;
417                                 regulator-max-microvolt = <1800000>;
418                                 regulator-name = "vcca1v8_codec";
419                                 regulator-state-mem {
420                                         regulator-off-in-suspend;
421                                 };
422                         };
423
424                         vcc_power_on: LDO_REG4 {
425                                 regulator-always-on;
426                                 regulator-boot-on;
427                                 regulator-min-microvolt = <3300000>;
428                                 regulator-max-microvolt = <3300000>;
429                                 regulator-name = "vcc_power_on";
430                                 regulator-state-mem {
431                                         regulator-on-in-suspend;
432                                         regulator-suspend-microvolt = <3300000>;
433                                 };
434                         };
435
436                         vcc_3v0: LDO_REG5 {
437                                 regulator-always-on;
438                                 regulator-boot-on;
439                                 regulator-min-microvolt = <3000000>;
440                                 regulator-max-microvolt = <3000000>;
441                                 regulator-name = "vcc_3v0";
442                                 regulator-state-mem {
443                                         regulator-on-in-suspend;
444                                         regulator-suspend-microvolt = <3000000>;
445                                 };
446                         };
447
448                         vcc_1v5: LDO_REG6 {
449                                 regulator-always-on;
450                                 regulator-boot-on;
451                                 regulator-min-microvolt = <1500000>;
452                                 regulator-max-microvolt = <1500000>;
453                                 regulator-name = "vcc_1v5";
454                                 regulator-state-mem {
455                                         regulator-on-in-suspend;
456                                         regulator-suspend-microvolt = <1500000>;
457                                 };
458                         };
459
460                         vcc1v8_dvp: LDO_REG7 {
461                                 regulator-always-on;
462                                 regulator-boot-on;
463                                 regulator-min-microvolt = <1800000>;
464                                 regulator-max-microvolt = <1800000>;
465                                 regulator-name = "vcc1v8_dvp";
466                                 regulator-state-mem {
467                                         regulator-on-in-suspend;
468                                         regulator-suspend-microvolt = <1800000>;
469                                 };
470                         };
471
472                         vcc3v3_s3: LDO_REG8 {
473                                 regulator-always-on;
474                                 regulator-boot-on;
475                                 regulator-min-microvolt = <3300000>;
476                                 regulator-max-microvolt = <3300000>;
477                                 regulator-name = "vcc3v3_s3";
478                                 regulator-state-mem {
479                                         regulator-on-in-suspend;
480                                         regulator-suspend-microvolt = <3300000>;
481                                 };
482                         };
483
484                         vcc_sd: LDO_REG9 {
485                                 regulator-always-on;
486                                 regulator-boot-on;
487                                 regulator-min-microvolt = <1800000>;
488                                 regulator-max-microvolt = <3300000>;
489                                 regulator-name = "vcc_sd";
490                                 regulator-state-mem {
491                                         regulator-on-in-suspend;
492                                         regulator-suspend-microvolt = <3300000>;
493                                 };
494                         };
495
496                         vcc3v3_s0: SWITCH_REG {
497                                 regulator-always-on;
498                                 regulator-boot-on;
499                                 regulator-name = "vcc3v3_s0";
500                                 regulator-state-mem {
501                                         regulator-on-in-suspend;
502                                 };
503                         };
504                 };
505         };
506 };
507
508 &i2c1 {
509         status = "okay";
510         i2c-scl-rising-time-ns = <164>;
511         i2c-scl-falling-time-ns = <15>;
512
513         es8316: es8316@10 {
514                 #sound-dai-cells = <0>;
515                 compatible = "everest,es8316";
516                 reg = <0x10>;
517                 clocks = <&cru SCLK_I2S_8CH_OUT>;
518                 clock-names = "mclk";
519                 spk-con-gpio = <&gpio0 11 GPIO_ACTIVE_HIGH>;
520                 hp-det-gpio = <&gpio4 28 GPIO_ACTIVE_LOW>;
521         };
522 };
523
524 &i2c4 {
525         status = "okay";
526         i2c-scl-rising-time-ns = <600>;
527         i2c-scl-falling-time-ns = <20>;
528
529         mpu6500@68 {
530                 compatible = "invensense,mpu6500";
531                 pinctrl-names = "default";
532                 pinctrl-0 = <&mpu6500_irq_gpio>;
533                 reg = <0x68>;
534                 irq-gpio = <&gpio1 4 IRQ_TYPE_EDGE_RISING>;
535         };
536 };
537
538 &tsadc {
539         rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
540         rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
541         status = "okay";
542 };
543
544 &uart0 {
545         pinctrl-names = "default";
546         pinctrl-0 = <&uart0_xfer &uart0_cts>;
547         status = "okay";
548 };
549
550 &uart2 {
551         status = "okay";
552 };
553
554 &usb2phy {
555         vbus_drv-gpio = <&gpio4 25 GPIO_ACTIVE_HIGH>;
556 };
557
558 &usb_host0_ehci {
559         status = "okay";
560 };
561
562 &usb_host0_ohci {
563         status = "okay";
564 };
565
566 &usb_host1_ehci {
567         status = "okay";
568 };
569
570 &usb_host1_ohci {
571         status = "okay";
572 };
573
574 &usbdrd3_0 {
575         status = "okay";
576 };
577
578 &usbdrd_dwc3_0 {
579         status = "okay";
580 };
581
582 &usbdrd3_1 {
583         status = "okay";
584 };
585
586 &usbdrd_dwc3_1 {
587         status = "okay";
588 };
589
590 &pwm0 {
591         status = "okay";
592 };
593
594 &pwm2 {
595         status = "okay";
596 };
597
598 &vdd_center {
599         rockchip,pwm_id= <3>;
600         rockchip,pwm_voltage = <900000>;
601 };
602
603 &rk_screen {
604         #include <dt-bindings/display/screen-timing/lcd-ls055r1sx04-mipi.dtsi>
605 };
606
607 &vopb_rk_fb {
608         status = "okay";
609         power_ctr: power_ctr {
610                 lcd_en: lcd-en {
611                         rockchip,power_type = <GPIO>;
612                         gpios = <&gpio3 5 GPIO_ACTIVE_HIGH>;
613                         rockchip,delay = <10>;
614                 };
615                 lcd_rst: lcd-rst {
616                         rockchip,power_type = <GPIO>;
617                         gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>;
618                         rockchip,delay = <10>;
619                 };
620         };
621 };
622
623 &vopl_rk_fb {
624         status = "okay";
625 };
626
627 &mipi0_rk_fb {
628         status = "okay";
629 };
630
631 &mipi1_rk_fb {
632         status = "okay";
633 };
634
635 &cpu_l0 {
636         cpu-supply = <&vdd_cpu_l>;
637 };
638
639 &cpu_l1 {
640         cpu-supply = <&vdd_cpu_l>;
641 };
642
643 &cpu_l2 {
644         cpu-supply = <&vdd_cpu_l>;
645 };
646
647 &cpu_l3 {
648         cpu-supply = <&vdd_cpu_l>;
649 };
650
651 &cpu_b0 {
652         cpu-supply = <&vdd_cpu_b>;
653 };
654
655 &cpu_b1 {
656         cpu-supply = <&vdd_cpu_b>;
657 };
658
659 &gpu {
660         status = "okay";
661         mali-supply = <&vdd_gpu>;
662 };
663
664 &pinctrl {
665         sdio-pwrseq {
666                 wifi_enable_h: wifi-enable-h {
667                         rockchip,pins = <0 10 RK_FUNC_GPIO &pcfg_pull_none>;
668                 };
669         };
670
671         wireless-bluetooth {
672                 uart0_gpios: uart0-gpios {
673                         rockchip,pins = <2 19 RK_FUNC_GPIO &pcfg_pull_none>;
674                 };
675         };
676
677         pmic {
678                 pmic_int_l: pmic-int-l {
679                         rockchip,pins =
680                                 <1 21 RK_FUNC_GPIO &pcfg_pull_up>;
681                 };
682
683                 pmic_dvs2: pmic-dvs2 {
684                         rockchip,pins =
685                                 <1 18 RK_FUNC_GPIO &pcfg_pull_down>;
686                 };
687         };
688
689         mpu6500 {
690                 mpu6500_irq_gpio: mpu6500-irq-gpio {
691                         rockchip,pins = <1 4 RK_FUNC_GPIO &pcfg_pull_none>;
692                 };
693         };
694 };