ARM64: dts: rk3368: add rk3368-p9.dts for p9 board
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / boot / dts / rockchip / rk3368-p9.dts
1 /*
2  * Copyright (c) 2017 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 "rk3368.dtsi"
46 #include "rk3368-android.dtsi"
47
48 / {
49         model = "Rockchip rk3368 p9 board";
50         compatible = "rockchip,p9", "rockchip,rk3368";
51
52         es8316-sound {
53                 compatible = "simple-audio-card";
54                 simple-audio-card,format = "i2s";
55                 simple-audio-card,name = "rockchip,es8316-codec";
56                 simple-audio-card,mclk-fs = <256>;
57                 simple-audio-card,widgets =
58                         "Microphone", "Mic Jack",
59                         "Headphone", "Headphone Jack";
60                 simple-audio-card,routing =
61                         "Mic Jack", "MICBIAS1",
62                         "IN1P", "Mic Jack",
63                         "Headphone Jack", "HPOL",
64                         "Headphone Jack", "HPOR";
65                 simple-audio-card,cpu {
66                         sound-dai = <&i2s_8ch>;
67                 };
68                 simple-audio-card,codec {
69                         sound-dai = <&es8316>;
70                 };
71         };
72
73         hdmi_sound: hdmi-sound {
74                 status = "okay";
75                 compatible = "simple-audio-card";
76                 simple-audio-card,format = "i2s";
77                 simple-audio-card,mclk-fs = <256>;
78                 simple-audio-card,name = "rockchip,hdmi";
79
80                 simple-audio-card,cpu {
81                         sound-dai = <&i2s_8ch>;
82                 };
83                 simple-audio-card,codec {
84                         sound-dai = <&hdmi>;
85                 };
86         };
87
88         sdio_pwrseq: sdio-pwrseq {
89                 compatible = "mmc-pwrseq-simple";
90                 clocks = <&rk818 1>;
91                 clock-names = "ext_clock";
92                 pinctrl-names = "default";
93                 pinctrl-0 = <&wifi_enable_h>;
94
95                 /*
96                  * On the module itself this is one of these (depending
97                  * on the actual card populated):
98                  * - SDIO_RESET_L_WL_REG_ON
99                  * - PDN (power down when low)
100                  */
101                 reset-gpios = <&gpio3 4 GPIO_ACTIVE_LOW>; /* GPIO3_A4 */
102         };
103
104         backlight: backlight {
105                 compatible = "pwm-backlight";
106                 pwms = <&pwm0 0 25000 PWM_POLARITY_INVERTED>;
107                 brightness-levels = <
108                           0   1   2   3   4   5   6   7
109                           8   9  10  11  12  13  14  15
110                          16  17  18  19  20  21  22  23
111                          24  25  26  27  28  29  30  31
112                          32  33  34  35  36  37  38  39
113                          40  41  42  43  44  45  46  47
114                          48  49  50  51  52  53  54  55
115                          56  57  58  59  60  61  62  63
116                          64  65  66  67  68  69  70  71
117                          72  73  74  75  76  77  78  79
118                          80  81  82  83  84  85  86  87
119                          88  89  90  91  92  93  94  95
120                          96  97  98  99 100 101 102 103
121                         104 105 106 107 108 109 110 111
122                         112 113 114 115 116 117 118 119
123                         120 121 122 123 124 125 126 127
124                         128 129 130 131 132 133 134 135
125                         136 137 138 139 140 141 142 143
126                         144 145 146 147 148 149 150 151
127                         152 153 154 155 156 157 158 159
128                         160 161 162 163 164 165 166 167
129                         168 169 170 171 172 173 174 175
130                         176 177 178 179 180 181 182 183
131                         184 185 186 187 188 189 190 191
132                         192 193 194 195 196 197 198 199
133                         200 201 202 203 204 205 206 207
134                         208 209 210 211 212 213 214 215
135                         216 217 218 219 220 221 222 223
136                         224 225 226 227 228 229 230 231
137                         232 233 234 235 236 237 238 239
138                         240 241 242 243 244 245 246 247
139                         248 249 250 251 252 253 254 255>;
140                 default-brightness-level = <200>;
141                 enable-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
142         };
143
144         rk_key: rockchip-key {
145                 compatible = "rockchip,key";
146                 status = "okay";
147
148                 io-channels = <&saradc 1>;
149
150                 vol-up-key {
151                         linux,code = <115>;
152                         label = "volume up";
153                         rockchip,adc_value = <1>;
154                 };
155
156                 vol-down-key {
157                         linux,code = <114>;
158                         label = "volume down";
159                         rockchip,adc_value = <170>;
160                 };
161
162                 power-key {
163                         gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
164                         linux,code = <116>;
165                         label = "power";
166                         gpio-key,wakeup;
167                 };
168         };
169
170         wireless-wlan {
171                 compatible = "wlan-platdata";
172                 rockchip,grf = <&grf>;
173                 /* wifi_chip_type - wifi chip define
174                 * ap6210, ap6330, ap6335
175                 * rtl8188eu, rtl8723bs, rtl8723bu
176                 * esp8089
177                 */
178                 wifi_chip_type = "ap6210";
179                 sdio_vref = <1800>; //1800mv or 3300mv
180                 WIFI,host_wake_irq = <&gpio3 6 GPIO_ACTIVE_HIGH>;
181                 status = "okay";
182         };
183
184         wireless-bluetooth {
185                 compatible = "bluetooth-platdata";
186                 clocks = <&rk818 1>;
187                 clock-names = "ext_clock";
188                 uart_rts_gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
189                 pinctrl-names = "default","rts_gpio";
190                 pinctrl-0 = <&uart0_rts>;
191                 pinctrl-1 = <&uart0_rts_gpio>;
192
193                 //BT,power_gpio = <&gpio3 3 GPIO_ACTIVE_HIGH>;
194                 BT,reset_gpio = <&gpio3 5 GPIO_ACTIVE_HIGH>;
195                 BT,wake_gpio = <&gpio3 2 GPIO_ACTIVE_HIGH>;
196                 BT,wake_host_irq = <&gpio3 7 GPIO_ACTIVE_HIGH>;
197
198                 status = "okay";
199         };
200
201         vcc_sys: vcc-sys {
202                 compatible = "regulator-fixed";
203                 regulator-name = "vcc_sys";
204                 regulator-always-on;
205                 regulator-boot-on;
206                 regulator-min-microvolt = <3800000>;
207                 regulator-max-microvolt = <3800000>;
208         };
209 };
210
211 &hdmi {
212         status = "okay";
213 };
214
215 &cpu_l0 {
216         cpu-supply = <&syr827>;
217 };
218
219 &cpu_l1 {
220         cpu-supply = <&syr827>;
221 };
222
223 &cpu_l2 {
224         cpu-supply = <&syr827>;
225 };
226
227 &cpu_l3 {
228         cpu-supply = <&syr827>;
229 };
230
231 &cpu_b0 {
232         cpu-supply = <&syr827>;
233 };
234
235 &cpu_b1 {
236         cpu-supply = <&syr827>;
237 };
238
239 &cpu_b2 {
240         cpu-supply = <&syr827>;
241 };
242
243 &cpu_b3 {
244         cpu-supply = <&syr827>;
245 };
246
247 &gpu {
248         logic-supply = <&vdd_logic>;
249 };
250
251 &emmc {
252         bus-width = <8>;
253         cap-mmc-highspeed;
254         supports-emmc;
255         disable-wp;
256         non-removable;
257         num-slots = <1>;
258         pinctrl-names = "default";
259         pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
260         status = "okay";
261 };
262
263 &sdmmc {
264         clock-frequency = <37500000>;
265         clock-freq-min-max = <400000 37500000>;
266         supports-sd;
267         cap-mmc-highspeed;
268         cap-sd-highspeed;
269         card-detect-delay = <200>;
270         disable-wp;
271         num-slots = <1>;
272         pinctrl-names = "default";
273         pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
274         status = "disabled";
275 };
276
277 &sdio0 {
278         clock-frequency = <50000000>;
279         clock-freq-min-max = <200000 50000000>;
280         supports-sdio;
281         bus-width = <4>;
282         disable-wp;
283         cap-sd-highspeed;
284         cap-sdio-irq;
285         keep-power-in-suspend;
286         mmc-pwrseq = <&sdio_pwrseq>;
287         non-removable;
288         num-slots = <1>;
289         pinctrl-names = "default";
290         pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
291         sd-uhs-sdr104;
292         status = "okay";
293 };
294
295 &i2c0 {
296         status = "okay";
297
298         syr827: syr827@40 {
299                 compatible = "silergy,syr827";
300                 status = "okay";
301                 reg = <0x40>;
302
303                 regulator-compatible = "fan53555-reg";
304                 regulator-name = "vdd_arm";
305                 regulator-min-microvolt = <712500>;
306                 regulator-max-microvolt = <1500000>;
307                 fcs,suspend-voltage-selector = <1>;
308                 regulator-always-on;
309                 regulator-boot-on;
310                 regulator-initial-state = <3>;
311                 regulator-state-mem {
312                         regulator-off-in-suspend;
313                         regulator-suspend-microvolt = <900000>;
314                 };
315         };
316
317         rk818: pmic@1c {
318                 compatible = "rockchip,rk818";
319                 status = "okay";
320                 reg = <0x1c>;
321                 clock-output-names = "xin32k", "wifibt_32kin";
322                 interrupt-parent = <&gpio0>;
323                 interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
324                 pinctrl-names = "default";
325                 pinctrl-0 = <&pmic_int_l>;
326                 rockchip,system-power-controller;
327                 wakeup-source;
328                 #clock-cells = <1>;
329
330                 vcc1-supply = <&vcc_sys>;
331                 vcc2-supply = <&vcc_sys>;
332                 vcc3-supply = <&vcc_sys>;
333                 vcc4-supply = <&vcc_sys>;
334                 vcc6-supply = <&vcc_sys>;
335                 vcc7-supply = <&vcc_sys>;
336                 vcc8-supply = <&vcc_sys>;
337                 vcc9-supply = <&vcc_io>;
338
339                 regulators {
340                         vdd_logic: DCDC_REG1 {
341                                 regulator-name = "vdd_logic";
342                                 regulator-always-on;
343                                 regulator-boot-on;
344                                 regulator-min-microvolt = <750000>;
345                                 regulator-max-microvolt = <1450000>;
346                                 regulator-ramp-delay = <6001>;
347                                 regulator-state-mem {
348                                         regulator-on-in-suspend;
349                                         regulator-suspend-microvolt = <1000000>;
350                                 };
351                         };
352
353                         vdd_gpu: DCDC_REG2 {
354                                 regulator-name = "vdd_gpu";
355                                 regulator-always-on;
356                                 regulator-boot-on;
357                                 regulator-min-microvolt = <800000>;
358                                 regulator-max-microvolt = <1250000>;
359                                 regulator-ramp-delay = <6001>;
360                                 regulator-state-mem {
361                                         regulator-on-in-suspend;
362                                         regulator-suspend-microvolt = <1000000>;
363                                 };
364                         };
365
366                         vcc_ddr: DCDC_REG3 {
367                                 regulator-always-on;
368                                 regulator-boot-on;
369                                 regulator-name = "vcc_ddr";
370                                 regulator-state-mem {
371                                         regulator-on-in-suspend;
372                                 };
373                         };
374
375                         vcc_io: DCDC_REG4 {
376                                 regulator-always-on;
377                                 regulator-boot-on;
378                                 regulator-min-microvolt = <3300000>;
379                                 regulator-max-microvolt = <3300000>;
380                                 regulator-name = "vcc_io";
381                                 regulator-state-mem {
382                                         regulator-on-in-suspend;
383                                         regulator-suspend-microvolt = <3300000>;
384                                 };
385                         };
386
387                         vcca_codec: LDO_REG1 {
388                                 regulator-always-on;
389                                 regulator-boot-on;
390                                 regulator-min-microvolt = <3300000>;
391                                 regulator-max-microvolt = <3300000>;
392                                 regulator-name = "vcca_codec";
393                                 regulator-state-mem {
394                                         regulator-on-in-suspend;
395                                         regulator-suspend-microvolt = <3300000>;
396                                 };
397                         };
398
399                         vcc_tp: LDO_REG2 {
400                                 regulator-boot-on;
401                                 regulator-min-microvolt = <3000000>;
402                                 regulator-max-microvolt = <3000000>;
403                                 regulator-name = "vcc_tp";
404                                 regulator-state-mem {
405                                         regulator-off-in-suspend;
406                                 };
407                         };
408
409                         vdd_10: LDO_REG3 {
410                                 regulator-always-on;
411                                 regulator-boot-on;
412                                 regulator-min-microvolt = <1000000>;
413                                 regulator-max-microvolt = <1000000>;
414                                 regulator-name = "vdd_10";
415                                 regulator-state-mem {
416                                         regulator-on-in-suspend;
417                                         regulator-suspend-microvolt = <1000000>;
418                                 };
419                         };
420
421                         vcc18_lcd: LDO_REG4 {
422                                 regulator-always-on;
423                                 regulator-boot-on;
424                                 regulator-min-microvolt = <1800000>;
425                                 regulator-max-microvolt = <1800000>;
426                                 regulator-name = "vcc18_lcd";
427                                 regulator-state-mem {
428                                         regulator-on-in-suspend;
429                                         regulator-suspend-microvolt = <1800000>;
430                                 };
431                         };
432
433                         vccio_pmu: LDO_REG5 {
434                                 regulator-always-on;
435                                 regulator-boot-on;
436                                 regulator-min-microvolt = <1800000>;
437                                 regulator-max-microvolt = <1800000>;
438                                 regulator-name = "vccio_pmu";
439                                 regulator-state-mem {
440                                         regulator-on-in-suspend;
441                                         regulator-suspend-microvolt = <1800000>;
442                                 };
443                         };
444
445                         vdd10_lcd: LDO_REG6 {
446                                 regulator-always-on;
447                                 regulator-boot-on;
448                                 regulator-min-microvolt = <1000000>;
449                                 regulator-max-microvolt = <1000000>;
450                                 regulator-name = "vdd10_lcd";
451                                 regulator-state-mem {
452                                         regulator-on-in-suspend;
453                                         regulator-suspend-microvolt = <1000000>;
454                                 };
455                         };
456
457                         vcc_18: LDO_REG7 {
458                                 regulator-always-on;
459                                 regulator-boot-on;
460                                 regulator-min-microvolt = <1800000>;
461                                 regulator-max-microvolt = <1800000>;
462                                 regulator-name = "vcc_18";
463                                 regulator-state-mem {
464                                         regulator-on-in-suspend;
465                                         regulator-suspend-microvolt = <1800000>;
466                                 };
467                         };
468
469                         vccio_wl: LDO_REG8 {
470                                 regulator-always-on;
471                                 regulator-boot-on;
472                                 regulator-min-microvolt = <1800000>;
473                                 regulator-max-microvolt = <3300000>;
474                                 regulator-name = "vccio_wl";
475                                 regulator-state-mem {
476                                         regulator-on-in-suspend;
477                                         regulator-suspend-microvolt = <3300000>;
478                                 };
479                         };
480
481                         vccio_sd: LDO_REG9 {
482                                 regulator-always-on;
483                                 regulator-boot-on;
484                                 regulator-min-microvolt = <1800000>;
485                                 regulator-max-microvolt = <3300000>;
486                                 regulator-name = "vccio_sd";
487                                 regulator-state-mem {
488                                         regulator-on-in-suspend;
489                                         regulator-suspend-microvolt = <3300000>;
490                                 };
491                         };
492
493                         vcc_sd: SWITCH_REG {
494                                 regulator-always-on;
495                                 regulator-boot-on;
496                                 regulator-name = "vcc_sd";
497                                 regulator-state-mem {
498                                         regulator-on-in-suspend;
499                                 };
500                         };
501                 };
502
503                 battery {
504                         compatible = "rk818-battery";
505                         ocv_table = <
506                                 3400 3650 3693 3707 3731 3749 3760
507                                 3770 3782 3796 3812 3829 3852 3882
508                                 3915 3951 3981 4047 4086 4132 4182>;
509                         design_capacity = <8650>;
510                         design_qmax = <8800>;
511                         bat_res = <85>;
512                         max_input_current = <2000>;
513                         max_chrg_current = <1800>;
514                         max_chrg_voltage = <4200>;
515                         sleep_enter_current = <600>;
516                         sleep_exit_current = <600>;
517                         power_off_thresd = <3400>;
518                         zero_algorithm_vol = <3850>;
519                         fb_temperature = <115>;
520                         sample_res = <10>;
521                         max_soc_offset = <60>;
522                         energy_mode = <0>;
523                         monitor_sec = <5>;
524                         virtual_power = <0>;
525                         power_dc2otg = <1>;
526                         support_usb_adp = <1>;
527                         support_dc_adp = <1>;
528                         dc_det_gpio = <&gpio0 17 GPIO_ACTIVE_LOW>;
529                 };
530         };
531 };
532
533 &i2c1 {
534         status = "okay";
535
536         es8316: es8316@10 {
537                 status = "okay";
538                 #sound-dai-cells = <0>;
539                 compatible = "everest,es8316";
540                 reg = <0x10>;
541                 clocks = <&cru SCLK_I2S_8CH_OUT>;
542                 clock-names = "mclk";
543                 spk-con-gpio = <&gpio0 27 GPIO_ACTIVE_HIGH>;
544                 hp-det-gpio = <&gpio0 23 GPIO_ACTIVE_HIGH>;
545         };
546 };
547
548 &i2c2 {
549         status = "okay";
550
551         gt9xx: gt9xx@14 {
552                 compatible = "goodix,gt9xx";
553                 reg = <0x14>;
554                 touch-gpio = <&gpio0 12 IRQ_TYPE_LEVEL_LOW>;
555                 reset-gpio = <&gpio0 11 GPIO_ACTIVE_HIGH>;
556                 max-x = <1920>;
557                 max-y = <1200>;
558                 tp-size = <89>;
559                 status = "okay";
560                 tp-supply = <&vcc_tp>;
561         };
562 };
563
564 &i2c3 {
565         status = "okay";
566 };
567
568 &i2c4 {
569         status = "okay";
570         mpu6500@68 {
571                 status = "okay";
572                 compatible = "invensense,mpu6500";
573                 pinctrl-names = "default";
574                 pinctrl-0 = <&mpu6500_irq_gpio>;
575                 reg = <0x68>;
576                 irq-gpio = <&gpio3 14 IRQ_TYPE_EDGE_RISING>;
577                 mpu-int_config = <0x10>;
578                 mpu-level_shifter = <0>;
579                 mpu-orientation = <1 0 0 0 1 0 0 0 1>;
580                 orientation-x= <1>;
581                 orientation-y= <0>;
582                 orientation-z= <1>;
583                 support-hw-poweroff = <1>;
584                 mpu-debug = <1>;
585         };
586 };
587
588 &i2s_8ch {
589         status = "okay";
590         rockchip,i2s-broken-burst-len;
591         rockchip,playback-channels = <8>;
592         rockchip,capture-channels = <2>;
593         #sound-dai-cells = <0>;
594 };
595
596 &io_domains {
597         status = "okay";
598
599         dvp-supply = <&vcc_18>;
600         audio-supply = <&vcc_io>;
601         gpio30-supply = <&vcc_io>;
602         gpio1830-supply = <&vcc_io>;
603         sdcard-supply = <&vccio_sd>;
604         wifi-supply = <&vccio_wl>;
605 };
606
607 &pmu_io_domains {
608         status = "okay";
609
610         pmu-supply = <&vccio_pmu>;
611         vop-supply = <&vccio_pmu>;
612 };
613
614 &pwm0 {
615         status = "okay";
616 };
617
618 &uart0 {
619         pinctrl-names = "default";
620         pinctrl-0 = <&uart0_xfer &uart0_cts>;
621         status = "okay";
622 };
623
624 &uart2 {
625         status = "okay";
626 };
627
628 &saradc {
629         status = "okay";
630 };
631
632 &pinctrl {
633         pmic {
634                 pmic_int_l: pmic-int-l {
635                         rockchip,pins = <RK_GPIO0 1 RK_FUNC_GPIO &pcfg_pull_up>;
636                 };
637         };
638
639         mpu6500 {
640                 mpu6500_irq_gpio: mpu6500-irq-gpio {
641                         rockchip,pins = <3 14 RK_FUNC_GPIO &pcfg_pull_none>;
642                 };
643         };
644
645         sdio-pwrseq {
646                 wifi_enable_h: wifi-enable-h {
647                         rockchip,pins = <3 4 RK_FUNC_GPIO &pcfg_pull_none>;
648                 };
649         };
650
651         wireless-bluetooth {
652                 uart0_rts_gpio: uart0-rts-gpio {
653                         rockchip,pins = <2 27 RK_FUNC_GPIO &pcfg_pull_none>;
654                 };
655         };
656 };
657