ARM64: dts: rk3366-tb: add simple audio card with rt5640
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / boot / dts / rockchip / rk3366-tb.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 "rk3366.dtsi"
46
47 / {
48         model = "Rockchip SDK tb board";
49         compatible = "rockchip,tb", "rockchip,rk3366";
50
51         chosen {
52                 bootargs = "console=uart,mmio32,0xff690000";
53         };
54
55         ion {
56                 compatible = "rockchip,ion";
57                 #address-cells = <1>;
58                 #size-cells = <0>;
59
60                 cma-heap {
61                         reg = <0x00000000 0x02000000>;
62                 };
63
64                 system-heap {
65                 };
66         };
67
68         backlight: backlight {
69                 compatible = "pwm-backlight";
70                 pwms = <&pwm0 0 25000 PWM_POLARITY_INVERTED>;
71                 brightness-levels = <
72                           0   1   2   3   4   5   6   7
73                           8   9  10  11  12  13  14  15
74                          16  17  18  19  20  21  22  23
75                          24  25  26  27  28  29  30  31
76                          32  33  34  35  36  37  38  39
77                          40  41  42  43  44  45  46  47
78                          48  49  50  51  52  53  54  55
79                          56  57  58  59  60  61  62  63
80                          64  65  66  67  68  69  70  71
81                          72  73  74  75  76  77  78  79
82                          80  81  82  83  84  85  86  87
83                          88  89  90  91  92  93  94  95
84                          96  97  98  99 100 101 102 103
85                         104 105 106 107 108 109 110 111
86                         112 113 114 115 116 117 118 119
87                         120 121 122 123 124 125 126 127
88                         128 129 130 131 132 133 134 135
89                         136 137 138 139 140 141 142 143
90                         144 145 146 147 148 149 150 151
91                         152 153 154 155 156 157 158 159
92                         160 161 162 163 164 165 166 167
93                         168 169 170 171 172 173 174 175
94                         176 177 178 179 180 181 182 183
95                         184 185 186 187 188 189 190 191
96                         192 193 194 195 196 197 198 199
97                         200 201 202 203 204 205 206 207
98                         208 209 210 211 212 213 214 215
99                         216 217 218 219 220 221 222 223
100                         224 225 226 227 228 229 230 231
101                         232 233 234 235 236 237 238 239
102                         240 241 242 243 244 245 246 247
103                         248 249 250 251 252 253 254 255>;
104                 default-brightness-level = <200>;
105                 enable-gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
106         };
107
108         rk_key: rockchip-key {
109                 compatible = "rockchip,key";
110                 status = "okay";
111
112                 io-channels = <&saradc 1>;
113
114                 vol-up-key {
115                         linux,code = <115>;
116                         label = "volume up";
117                         rockchip,adc_value = <1>;
118                 };
119
120                 vol-down-key {
121                         linux,code = <114>;
122                         label = "volume down";
123                         rockchip,adc_value = <170>;
124                 };
125
126                 power-key {
127                         gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
128                         linux,code = <116>;
129                         label = "power";
130                         gpio-key,wakeup;
131                 };
132
133                 menu-key {
134                         linux,code = <59>;
135                         label = "menu";
136                         rockchip,adc_value = <355>;
137                 };
138
139                 home-key {
140                         linux,code = <102>;
141                         label = "home";
142                         rockchip,adc_value = <746>;
143                 };
144
145                 back-key {
146                         linux,code = <158>;
147                         label = "back";
148                         rockchip,adc_value = <560>;
149                 };
150
151                 camera-key {
152                         linux,code = <212>;
153                         label = "camera";
154                         rockchip,adc_value = <450>;
155                 };
156         };
157
158         sound {
159                 compatible = "simple-audio-card";
160                 simple-audio-card,format = "i2s";
161                 simple-audio-card,name = "rockchip,rt5640-codec";
162                 simple-audio-card,mclk-fs = <256>;
163                 simple-audio-card,widgets =
164                         "Microphone", "Mic Jack",
165                         "Headphone", "Headphone Jack";
166                 simple-audio-card,routing =
167                         "Mic Jack", "MICBIAS1",
168                         "IN1P", "Mic Jack",
169                         "Headphone Jack", "HPOL",
170                         "Headphone Jack", "HPOR";
171                 simple-audio-card,cpu {
172                         sound-dai = <&i2s_8ch>;
173                 };
174                 simple-audio-card,codec {
175                         sound-dai = <&rt5640>;
176                 };
177         };
178
179         vcc_sys: vcc-sys {
180                 compatible = "regulator-fixed";
181                 regulator-name = "vcc_sys";
182                 regulator-always-on;
183                 regulator-boot-on;
184                 regulator-min-microvolt = <3800000>;
185                 regulator-max-microvolt = <3800000>;
186         };
187
188         ext_gmac: external-gmac-clock {
189                 compatible = "fixed-clock";
190                 clock-frequency = <125000000>;
191                 clock-output-names = "ext_gmac";
192                 #clock-cells = <0>;
193         };
194
195         vcc_phy: vcc-phy-regulator {
196                 compatible = "regulator-fixed";
197                 enable-active-high;
198                 gpio = <&gpio0 24 GPIO_ACTIVE_HIGH>;
199                 pinctrl-names = "default";
200                 pinctrl-0 = <&eth_phy_pwr>;
201                 regulator-name = "vcc_phy";
202                 regulator-always-on;
203                 regulator-boot-on;
204         };
205 };
206
207 &emmc {
208         clock-frequency = <100000000>;
209         clock-freq-min-max = <400000 100000000>;
210         supports-emmc;
211         bus-width = <8>;
212         cap-mmc-highspeed;
213         disable-wp;
214         non-removable;
215         num-slots = <1>;
216         pinctrl-names = "default";
217         pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>;
218         status = "okay";
219 };
220
221 &sdmmc {
222         clock-frequency = <37500000>;
223         clock-freq-min-max = <400000 37500000>;
224         supports-sd;
225         bus-width = <4>;
226         cap-mmc-highspeed;
227         cap-sd-highspeed;
228         card-detect-delay = <200>;
229         disable-wp;
230         num-slots = <1>;
231         pinctrl-names = "default";
232         pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
233         status = "disabled";
234 };
235
236 &sdio {
237         clock-frequency = <50000000>;
238         clock-freq-min-max = <200000 50000000>;
239         supports-sdio;
240         bus-width = <4>;
241         disable-wp;
242         non-removable;
243         num-slots = <1>;
244         pinctrl-names = "default";
245         pinctrl-0 = <&sdio_bus4 &sdio_cmd &sdio_clk>;
246         status = "disabled";
247 };
248
249 &saradc {
250         status = "okay";
251 };
252
253 &i2c0 {
254         status = "okay";
255
256         syr827: syr827@40 {
257                 regulator-name = "vdd_arm";
258                 compatible = "silergy,syr827";
259                 status = "okay";
260                 reg = <0x40>;
261                 regulator-compatible = "fan53555-reg";
262                 regulator-min-microvolt = <712500>;
263                 regulator-max-microvolt = <1500000>;
264                 fcs,suspend-voltage-selector = <1>;
265                 regulator-always-on;
266                 regulator-boot-on;
267                 regulator-initial-state = <3>;
268                 regulator-state-mem {
269                         regulator-on-in-suspend;
270                         regulator-suspend-microvolt = <900000>;
271                 };
272         };
273
274         rk818: pmic@1c {
275                 compatible = "rockchip,rk818";
276                 status = "okay";
277                 reg = <0x1c>;
278                 clock-output-names = "xin32k", "wifibt_32kin";
279                 interrupt-parent = <&gpio0>;
280                 interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
281                 pinctrl-names = "default";
282                 pinctrl-0 = <&pmic_int_l>;
283                 rockchip,system-power-controller;
284                 wakeup-source;
285                 #clock-cells = <1>;
286
287                 vcc1-supply = <&vcc_sys>;
288                 vcc2-supply = <&vcc_sys>;
289                 vcc3-supply = <&vcc_sys>;
290                 vcc4-supply = <&vcc_sys>;
291                 vcc6-supply = <&vcc_sys>;
292                 vcc7-supply = <&vcc_sys>;
293                 vcc8-supply = <&vcc_sys>;
294                 vcc9-supply = <&vcc_io>;
295
296                 regulators {
297                         vdd_logic: DCDC_REG1 {
298                                 regulator-name = "vdd_logic";
299                                 regulator-always-on;
300                                 regulator-boot-on;
301                                 regulator-min-microvolt = <750000>;
302                                 regulator-max-microvolt = <1450000>;
303                                 regulator-ramp-delay = <6001>;
304                                 regulator-state-mem {
305                                         regulator-on-in-suspend;
306                                         regulator-suspend-microvolt = <1000000>;
307                                 };
308                         };
309
310                         vdd_gpu: DCDC_REG2 {
311                                 regulator-name = "vdd_gpu";
312                                 regulator-always-on;
313                                 regulator-boot-on;
314                                 regulator-min-microvolt = <800000>;
315                                 regulator-max-microvolt = <1250000>;
316                                 regulator-ramp-delay = <6001>;
317                                 regulator-state-mem {
318                                         regulator-on-in-suspend;
319                                         regulator-suspend-microvolt = <1000000>;
320                                 };
321                         };
322
323                         vcc_ddr: DCDC_REG3 {
324                                 regulator-name = "vcc_ddr";
325                                 regulator-always-on;
326                                 regulator-boot-on;
327                                 regulator-state-mem {
328                                         regulator-on-in-suspend;
329                                 };
330                         };
331
332                         vcc_io: DCDC_REG4 {
333                                 regulator-name = "vcc_io";
334                                 regulator-always-on;
335                                 regulator-boot-on;
336                                 regulator-min-microvolt = <3300000>;
337                                 regulator-max-microvolt = <3300000>;
338                                 regulator-state-mem {
339                                         regulator-on-in-suspend;
340                                         regulator-suspend-microvolt = <3300000>;
341                                 };
342                         };
343
344                         vcca_codec: LDO_REG1 {
345                                 regulator-name = "vcca_codec";
346                                 regulator-always-on;
347                                 regulator-boot-on;
348                                 regulator-min-microvolt = <3300000>;
349                                 regulator-max-microvolt = <3300000>;
350                                 regulator-state-mem {
351                                         regulator-on-in-suspend;
352                                         regulator-suspend-microvolt = <3300000>;
353                                 };
354                         };
355
356                         vcc_tp: LDO_REG2 {
357                                 regulator-name = "vcc_tp";
358                                 regulator-always-on;
359                                 regulator-boot-on;
360                                 regulator-min-microvolt = <3000000>;
361                                 regulator-max-microvolt = <3000000>;
362                                 regulator-state-mem {
363                                         regulator-on-in-suspend;
364                                         regulator-suspend-microvolt = <3000000>;
365                                 };
366                         };
367
368                         vdd_10: LDO_REG3 {
369                                 regulator-name = "vdd_10";
370                                 regulator-always-on;
371                                 regulator-boot-on;
372                                 regulator-min-microvolt = <1000000>;
373                                 regulator-max-microvolt = <1000000>;
374                                 regulator-state-mem {
375                                         regulator-on-in-suspend;
376                                         regulator-suspend-microvolt = <1000000>;
377                                 };
378                         };
379
380                         vcc18_lcd: LDO_REG4 {
381                                 regulator-name = "vcc18_lcd";
382                                 regulator-always-on;
383                                 regulator-boot-on;
384                                 regulator-min-microvolt = <1800000>;
385                                 regulator-max-microvolt = <1800000>;
386                                 regulator-state-mem {
387                                         regulator-on-in-suspend;
388                                         regulator-suspend-microvolt = <1800000>;
389                                 };
390                         };
391
392                         vccio_pmu: LDO_REG5 {
393                                 regulator-name = "vccio_pmu";
394                                 regulator-always-on;
395                                 regulator-boot-on;
396                                 regulator-min-microvolt = <1800000>;
397                                 regulator-max-microvolt = <1800000>;
398                                 regulator-state-mem {
399                                         regulator-on-in-suspend;
400                                         regulator-suspend-microvolt = <1800000>;
401                                 };
402                         };
403
404                         vdd10_lcd: LDO_REG6 {
405                                 regulator-name = "vdd10_lcd";
406                                 regulator-always-on;
407                                 regulator-boot-on;
408                                 regulator-min-microvolt = <1000000>;
409                                 regulator-max-microvolt = <1000000>;
410                                 regulator-state-mem {
411                                         regulator-on-in-suspend;
412                                         regulator-suspend-microvolt = <1000000>;
413                                 };
414                         };
415
416                         vcc_18: LDO_REG7 {
417                                 regulator-name = "vcc_18";
418                                 regulator-always-on;
419                                 regulator-boot-on;
420                                 regulator-min-microvolt = <1800000>;
421                                 regulator-max-microvolt = <1800000>;
422                                 regulator-state-mem {
423                                         regulator-on-in-suspend;
424                                         regulator-suspend-microvolt = <1800000>;
425                                 };
426                         };
427
428                         vccio_wl: LDO_REG8 {
429                                 regulator-name = "vccio_wl";
430                                 regulator-always-on;
431                                 regulator-boot-on;
432                                 regulator-min-microvolt = <1800000>;
433                                 regulator-max-microvolt = <3300000>;
434                                 regulator-state-mem {
435                                         regulator-on-in-suspend;
436                                         regulator-suspend-microvolt = <3300000>;
437                                 };
438                         };
439
440                         vccio_sd: LDO_REG9 {
441                                 regulator-name = "vccio_sd";
442                                 regulator-always-on;
443                                 regulator-boot-on;
444                                 regulator-min-microvolt = <1800000>;
445                                 regulator-max-microvolt = <3300000>;
446                                 regulator-state-mem {
447                                         regulator-on-in-suspend;
448                                         regulator-suspend-microvolt = <3300000>;
449                                 };
450                         };
451
452                         vcc_sd: SWITCH_REG {
453                                 regulator-name = "vcc_sd";
454                                 regulator-always-on;
455                                 regulator-boot-on;
456                                 regulator-state-mem {
457                                         regulator-on-in-suspend;
458                                 };
459                         };
460                 };
461         };
462 };
463
464 &i2c1 {
465         status = "okay";
466
467         rt5640: rt5640@1c {
468                 #sound-dai-cells = <0>;
469                 compatible = "realtek,rt5640";
470                 reg = <0x1c>;
471                 clocks = <&cru SCLK_I2S_8CH_OUT>;
472                 clock-names = "mclk";
473                 realtek,in1-differential;
474         };
475 };
476
477 &i2s_8ch {
478         status = "okay";
479         rockchip,i2s-broken-burst-len;
480         rockchip,playback-channels = <8>;
481         rockchip,capture-channels = <2>;
482         #sound-dai-cells = <0>;
483 };
484
485 &pwm0 {
486         status = "okay";
487 };
488
489 &uart2 {
490         status = "okay";
491 };
492
493 &fb {
494         status = "okay";
495         rockchip,disp-mode = <DUAL>;
496         rockchip,uboot-logo-on = <0>;
497 };
498
499 &rk_screen {
500         status = "okay";
501         #include <dt-bindings/display/screen-timing/lcd-b101ew05.dtsi>
502 };
503
504 &lvds {
505         pinctrl-names = "lcdc", "sleep";
506         pinctrl-0 = <&lcdc_lcdc>;
507         pinctrl-1 = <&lcdc_gpio>;
508         status = "disabled";
509 };
510
511 &vop_lite {
512         status = "okay";
513         rockchip,prop = <EXTEND>;
514         rockchip,mirror = <NO_MIRROR>;
515         rockchip,cabc_mode = <0>;
516         rockchip,fb-win-map = <FB_DEFAULT_ORDER>;
517 };
518
519 &vopl_mmu {
520         status = "okay";
521 };
522
523 &vop_big {
524         status = "okay";
525         rockchip,prop = <PRMRY>;
526         backlight = <&backlight>;
527         rockchip,mirror = <NO_MIRROR>;
528         rockchip,cabc_mode = <0>;
529         rockchip,fb-win-map = <FB_DEFAULT_ORDER>;
530         power_ctr: power_ctr {
531                 rockchip,debug = <0>;
532                 lcd_en: lcd-en {
533                         rockchip,power_type = <GPIO>;
534                         gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; /* GPIO_B4 = 12 */
535                         rockchip,delay = <10>;
536                 };
537
538                 lcd_cs: lcd-cs {
539                         rockchip,power_type = <GPIO>;
540                         gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>; /* GPIO_D0 = 24 */
541                         rockchip,delay = <10>;
542                 };
543
544                 /* lcd_rst: lcd-rst {
545                  *      rockchip,power_type = <GPIO>;
546                  *      gpios = <&gpio3 GPIO_D6 GPIO_ACTIVE_HIGH>;
547                  *      rockchip,delay = <5>;
548                  * };
549                  */
550         };
551 };
552
553 &vopb_mmu {
554         status = "okay";
555 };
556
557 &pinctrl {
558         pmic {
559                 pmic_int_l: pmic-int-l {
560                         rockchip,pins = <0 2 RK_FUNC_GPIO &pcfg_pull_up>;
561                 };
562         };
563 };
564
565 &gmac {
566         phy_regulator = "vcc_phy";
567         phy-mode = "rgmii";
568         clock_in_out = "input";
569         snps,reset-gpio = <&gpio2 15 0>;
570         snps,reset-active-low;
571         snps,reset-delays-us = <0 10000 1000000>;
572         assigned-clocks = <&cru SCLK_MAC>;
573         assigned-clock-parents = <&ext_gmac>;
574         pinctrl-names = "default";
575         pinctrl-0 = <&rgmii_pins>;
576         tx_delay = <0x30>;
577         rx_delay = <0x10>;
578         status = "okay";
579 };