ARM: dts: OMAP3-N900: Add tpa6130a2 support
[firefly-linux-kernel-4.4.55.git] / arch / arm / boot / dts / omap3-n900.dts
1 /*
2  * Copyright (C) 2013 Pavel Machek <pavel@ucw.cz>
3  * Copyright 2013 Aaro Koskinen <aaro.koskinen@iki.fi>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 (or later) as
7  * published by the Free Software Foundation.
8  */
9
10 /dts-v1/;
11
12 #include "omap34xx-hs.dtsi"
13
14 / {
15         model = "Nokia N900";
16         compatible = "nokia,omap3-n900", "ti,omap3";
17
18         cpus {
19                 cpu@0 {
20                         cpu0-supply = <&vcc>;
21                 };
22         };
23
24         memory {
25                 device_type = "memory";
26                 reg = <0x80000000 0x10000000>; /* 256 MB */
27         };
28
29         gpio_keys {
30                 compatible = "gpio-keys";
31
32                 camera_lens_cover {
33                         label = "Camera Lens Cover";
34                         gpios = <&gpio4 14 GPIO_ACTIVE_LOW>; /* 110 */
35                         linux,input-type = <5>; /* EV_SW */
36                         linux,code = <0x09>; /* SW_CAMERA_LENS_COVER */
37                         gpio-key,wakeup;
38                 };
39
40                 camera_focus {
41                         label = "Camera Focus";
42                         gpios = <&gpio3 4 GPIO_ACTIVE_LOW>; /* 68 */
43                         linux,code = <0x210>; /* KEY_CAMERA_FOCUS */
44                         gpio-key,wakeup;
45                 };
46
47                 camera_capture {
48                         label = "Camera Capture";
49                         gpios = <&gpio3 5 GPIO_ACTIVE_LOW>; /* 69 */
50                         linux,code = <0xd4>; /* KEY_CAMERA */
51                         gpio-key,wakeup;
52                 };
53
54                 lock_button {
55                         label = "Lock Button";
56                         gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; /* 113 */
57                         linux,code = <0x98>; /* KEY_SCREENLOCK */
58                         gpio-key,wakeup;
59                 };
60
61                 keypad_slide {
62                         label = "Keypad Slide";
63                         gpios = <&gpio3 7 GPIO_ACTIVE_LOW>; /* 71 */
64                         linux,input-type = <5>; /* EV_SW */
65                         linux,code = <0x0a>; /* SW_KEYPAD_SLIDE */
66                         gpio-key,wakeup;
67                 };
68
69                 proximity_sensor {
70                         label = "Proximity Sensor";
71                         gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>; /* 89 */
72                         linux,input-type = <5>; /* EV_SW */
73                         linux,code = <0x0b>; /* SW_FRONT_PROXIMITY */
74                 };
75         };
76
77 };
78
79 &omap3_pmx_core {
80         pinctrl-names = "default";
81
82         uart2_pins: pinmux_uart2_pins {
83                 pinctrl-single,pins = <
84                         0x14a (PIN_INPUT | MUX_MODE0)           /* uart2_rx */
85                         0x148 (PIN_OUTPUT | MUX_MODE0)          /* uart2_tx */
86                 >;
87         };
88
89         uart3_pins: pinmux_uart3_pins {
90                 pinctrl-single,pins = <
91                         0x16e (PIN_INPUT | MUX_MODE0)           /* uart3_rx */
92                         0x170 (PIN_OUTPUT | MUX_MODE0)          /* uart3_tx */
93                 >;
94         };
95
96         i2c1_pins: pinmux_i2c1_pins {
97                 pinctrl-single,pins = <
98                         0x18a (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c1_scl */
99                         0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c1_sda */
100                 >;
101         };
102
103         i2c2_pins: pinmux_i2c2_pins {
104                 pinctrl-single,pins = <
105                         0x18e (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c2_scl */
106                         0x190 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c2_sda */
107                 >;
108         };
109
110         i2c3_pins: pinmux_i2c3_pins {
111                 pinctrl-single,pins = <
112                         0x192 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c3_scl */
113                         0x194 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c3_sda */
114                 >;
115         };
116
117         mmc1_pins: pinmux_mmc1_pins {
118                 pinctrl-single,pins = <
119                         0x114 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_clk */
120                         0x116 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_cmd */
121                         0x118 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat0 */
122                         0x11a (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat1 */
123                         0x11c (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat2 */
124                         0x11e (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat3 */
125                 >;
126         };
127
128         mmc2_pins: pinmux_mmc2_pins {
129                 pinctrl-single,pins = <
130                         0x128 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_clk */
131                         0x12a (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_cmd */
132                         0x12c (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat0 */
133                         0x12e (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat1 */
134                         0x130 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat2 */
135                         0x132 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat3 */
136                         0x134 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat4 */
137                         0x136 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat5 */
138                         0x138 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat6 */
139                         0x13a (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat7 */
140                 >;
141         };
142
143         display_pins: pinmux_display_pins {
144                 pinctrl-single,pins = <
145                         0x0d4 (PIN_OUTPUT | MUX_MODE4)          /* RX51_LCD_RESET_GPIO */
146                 >;
147         };
148 };
149
150 &i2c1 {
151         pinctrl-names = "default";
152         pinctrl-0 = <&i2c1_pins>;
153
154         clock-frequency = <2200000>;
155
156         twl: twl@48 {
157                 reg = <0x48>;
158                 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
159                 interrupt-parent = <&intc>;
160         };
161 };
162
163 #include "twl4030.dtsi"
164 #include "twl4030_omap3.dtsi"
165
166 &vaux1 {
167         regulator-name = "V28";
168         regulator-min-microvolt = <2800000>;
169         regulator-max-microvolt = <2800000>;
170         regulator-always-on; /* due battery cover sensor */
171 };
172
173 &vaux2 {
174         regulator-name = "VCSI";
175         regulator-min-microvolt = <1800000>;
176         regulator-max-microvolt = <1800000>;
177 };
178
179 &vaux3 {
180         regulator-name = "VMMC2_30";
181         regulator-min-microvolt = <2800000>;
182         regulator-max-microvolt = <3000000>;
183 };
184
185 &vaux4 {
186         regulator-name = "VCAM_ANA_28";
187         regulator-min-microvolt = <2800000>;
188         regulator-max-microvolt = <2800000>;
189 };
190
191 &vmmc1 {
192         regulator-name = "VMMC1";
193         regulator-min-microvolt = <1850000>;
194         regulator-max-microvolt = <3150000>;
195 };
196
197 &vmmc2 {
198         regulator-name = "V28_A";
199         regulator-min-microvolt = <2800000>;
200         regulator-max-microvolt = <3000000>;
201         regulator-always-on; /* due VIO leak to AIC34 VDDs */
202 };
203
204 &vpll1 {
205         regulator-name = "VPLL";
206         regulator-min-microvolt = <1800000>;
207         regulator-max-microvolt = <1800000>;
208         regulator-always-on;
209 };
210
211 &vpll2 {
212         regulator-name = "VSDI_CSI";
213         regulator-min-microvolt = <1800000>;
214         regulator-max-microvolt = <1800000>;
215         regulator-always-on;
216 };
217
218 &vsim {
219         regulator-name = "VMMC2_IO_18";
220         regulator-min-microvolt = <1800000>;
221         regulator-max-microvolt = <1800000>;
222 };
223
224 &vio {
225         regulator-name = "VIO";
226         regulator-min-microvolt = <1800000>;
227         regulator-max-microvolt = <1800000>;
228
229 };
230
231 &vintana1 {
232         regulator-name = "VINTANA1";
233         /* fixed to 1500000 */
234         regulator-always-on;
235 };
236
237 &vintana2 {
238         regulator-name = "VINTANA2";
239         regulator-min-microvolt = <2750000>;
240         regulator-max-microvolt = <2750000>;
241         regulator-always-on;
242 };
243
244 &vintdig {
245         regulator-name = "VINTDIG";
246         /* fixed to 1500000 */
247         regulator-always-on;
248 };
249
250 &twl {
251         twl_audio: audio {
252                 compatible = "ti,twl4030-audio";
253                 ti,enable-vibra = <1>;
254         };
255 };
256
257 &twl_keypad {
258         linux,keymap = < 0x00000010 /* KEY_Q */
259                          0x00010018 /* KEY_O */
260                          0x00020019 /* KEY_P */
261                          0x00030033 /* KEY_COMMA */
262                          0x0004000e /* KEY_BACKSPACE */
263                          0x0006001e /* KEY_A */
264                          0x0007001f /* KEY_S */
265
266                          0x01000011 /* KEY_W */
267                          0x01010020 /* KEY_D */
268                          0x01020021 /* KEY_F */
269                          0x01030022 /* KEY_G */
270                          0x01040023 /* KEY_H */
271                          0x01050024 /* KEY_J */
272                          0x01060025 /* KEY_K */
273                          0x01070026 /* KEY_L */
274
275                          0x02000012 /* KEY_E */
276                          0x02010034 /* KEY_DOT */
277                          0x02020067 /* KEY_UP */
278                          0x0203001c /* KEY_ENTER */
279                          0x0205002c /* KEY_Z */
280                          0x0206002d /* KEY_X */
281                          0x0207002e /* KEY_C */
282                          0x02080043 /* KEY_F9 */
283
284                          0x03000013 /* KEY_R */
285                          0x0301002f /* KEY_V */
286                          0x03020030 /* KEY_B */
287                          0x03030031 /* KEY_N */
288                          0x03040032 /* KEY_M */
289                          0x03050039 /* KEY_SPACE */
290                          0x03060039 /* KEY_SPACE */
291                          0x03070069 /* KEY_LEFT */
292
293                          0x04000014 /* KEY_T */
294                          0x0401006c /* KEY_DOWN */
295                          0x0402006a /* KEY_RIGHT */
296                          0x0404001d /* KEY_LEFTCTRL */
297                          0x04050064 /* KEY_RIGHTALT */
298                          0x0406002a /* KEY_LEFTSHIFT */
299                          0x04080044 /* KEY_F10 */
300
301                          0x05000015 /* KEY_Y */
302                          0x05080057 /* KEY_F11 */
303
304                          0x06000016 /* KEY_U */
305
306                          0x07000017 /* KEY_I */
307                          0x07010041 /* KEY_F7 */
308                          0x07020042 /* KEY_F8 */
309                          >;
310 };
311
312 &twl_gpio {
313         ti,pullups      = <0x0>;
314         ti,pulldowns    = <0x03ff3f>; /* BIT(0..5) | BIT(8..17) */
315 };
316
317 &i2c2 {
318         pinctrl-names = "default";
319         pinctrl-0 = <&i2c2_pins>;
320
321         clock-frequency = <100000>;
322
323         tlv320aic3x: tlv320aic3x@18 {
324                 compatible = "ti,tlv320aic3x";
325                 reg = <0x18>;
326                 gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
327                 ai3x-gpio-func = <
328                         0 /* AIC3X_GPIO1_FUNC_DISABLED */
329                         5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
330                 >;
331
332                 AVDD-supply = <&vmmc2>;
333                 DRVDD-supply = <&vmmc2>;
334                 IOVDD-supply = <&vio>;
335                 DVDD-supply = <&vio>;
336         };
337
338         tlv320aic3x_aux: tlv320aic3x@19 {
339                 compatible = "ti,tlv320aic3x";
340                 reg = <0x19>;
341                 gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
342
343                 AVDD-supply = <&vmmc2>;
344                 DRVDD-supply = <&vmmc2>;
345                 IOVDD-supply = <&vio>;
346                 DVDD-supply = <&vio>;
347         };
348
349         tsl2563: tsl2563@29 {
350                 compatible = "amstaos,tsl2563";
351                 reg = <0x29>;
352
353                 amstaos,cover-comp-gain = <16>;
354         };
355
356         lp5523: lp5523@32 {
357                 compatible = "national,lp5523";
358                 reg = <0x32>;
359                 clock-mode = /bits/ 8 <0>; /* LP55XX_CLOCK_AUTO */
360                 enable-gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */
361
362                 chan0 {
363                         chan-name = "lp5523:kb1";
364                         led-cur = /bits/ 8 <50>;
365                         max-cur = /bits/ 8 <100>;
366                 };
367
368                 chan1 {
369                         chan-name = "lp5523:kb2";
370                         led-cur = /bits/ 8 <50>;
371                         max-cur = /bits/ 8 <100>;
372                 };
373
374                 chan2 {
375                         chan-name = "lp5523:kb3";
376                         led-cur = /bits/ 8 <50>;
377                         max-cur = /bits/ 8 <100>;
378                 };
379
380                 chan3 {
381                         chan-name = "lp5523:kb4";
382                         led-cur = /bits/ 8 <50>;
383                         max-cur = /bits/ 8 <100>;
384                 };
385
386                 chan4 {
387                         chan-name = "lp5523:b";
388                         led-cur = /bits/ 8 <50>;
389                         max-cur = /bits/ 8 <100>;
390                 };
391
392                 chan5 {
393                         chan-name = "lp5523:g";
394                         led-cur = /bits/ 8 <50>;
395                         max-cur = /bits/ 8 <100>;
396                 };
397
398                 chan6 {
399                         chan-name = "lp5523:r";
400                         led-cur = /bits/ 8 <50>;
401                         max-cur = /bits/ 8 <100>;
402                 };
403
404                 chan7 {
405                         chan-name = "lp5523:kb5";
406                         led-cur = /bits/ 8 <50>;
407                         max-cur = /bits/ 8 <100>;
408                 };
409
410                 chan8 {
411                         chan-name = "lp5523:kb6";
412                         led-cur = /bits/ 8 <50>;
413                         max-cur = /bits/ 8 <100>;
414                 };
415         };
416
417         bq27200: bq27200@55 {
418                 compatible = "ti,bq27200";
419                 reg = <0x55>;
420         };
421
422         tpa6130a2: tpa6130a2@60 {
423                 compatible = "ti,tpa6130a2";
424                 reg = <0x60>;
425
426                 Vdd-supply = <&vmmc2>;
427
428                 power-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>; /* 98 */
429         };
430 };
431
432 &i2c3 {
433         pinctrl-names = "default";
434         pinctrl-0 = <&i2c3_pins>;
435
436         clock-frequency = <400000>;
437 };
438
439 &mmc1 {
440         pinctrl-names = "default";
441         pinctrl-0 = <&mmc1_pins>;
442         vmmc-supply = <&vmmc1>;
443         bus-width = <4>;
444         cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */
445 };
446
447 /* most boards use vaux3, only some old versions use vmmc2 instead */
448 &mmc2 {
449         pinctrl-names = "default";
450         pinctrl-0 = <&mmc2_pins>;
451         vmmc-supply = <&vaux3>;
452         vmmc_aux-supply = <&vsim>;
453         bus-width = <8>;
454         non-removable;
455 };
456
457 &mmc3 {
458         status = "disabled";
459 };
460
461 &gpmc {
462         ranges = <0 0 0x04000000 0x10000000>; /* 256MB */
463
464         /* gpio-irq for dma: 65 */
465
466         onenand@0,0 {
467                 #address-cells = <1>;
468                 #size-cells = <1>;
469                 reg = <0 0 0x10000000>;
470
471                 gpmc,sync-read;
472                 gpmc,sync-write;
473                 gpmc,burst-length = <16>;
474                 gpmc,burst-read;
475                 gpmc,burst-wrap;
476                 gpmc,burst-write;
477                 gpmc,device-width = <2>; /* GPMC_DEVWIDTH_16BIT */
478                 gpmc,mux-add-data = <2>; /* GPMC_MUX_AD */
479                 gpmc,cs-on-ns = <0>;
480                 gpmc,cs-rd-off-ns = <87>;
481                 gpmc,cs-wr-off-ns = <87>;
482                 gpmc,adv-on-ns = <0>;
483                 gpmc,adv-rd-off-ns = <10>;
484                 gpmc,adv-wr-off-ns = <10>;
485                 gpmc,oe-on-ns = <15>;
486                 gpmc,oe-off-ns = <87>;
487                 gpmc,we-on-ns = <0>;
488                 gpmc,we-off-ns = <87>;
489                 gpmc,rd-cycle-ns = <112>;
490                 gpmc,wr-cycle-ns = <112>;
491                 gpmc,access-ns = <81>;
492                 gpmc,page-burst-access-ns = <15>;
493                 gpmc,bus-turnaround-ns = <0>;
494                 gpmc,cycle2cycle-delay-ns = <0>;
495                 gpmc,wait-monitoring-ns = <0>;
496                 gpmc,clk-activation-ns = <5>;
497                 gpmc,wr-data-mux-bus-ns = <30>;
498                 gpmc,wr-access-ns = <81>;
499                 gpmc,sync-clk-ps = <15000>;
500
501                 /*
502                  * MTD partition table corresponding to Nokia's
503                  * Maemo 5 (Fremantle) release.
504                  */
505                 partition@0 {
506                         label = "bootloader";
507                         reg = <0x00000000 0x00020000>;
508                         read-only;
509                 };
510                 partition@1 {
511                         label = "config";
512                         reg = <0x00020000 0x00060000>;
513                 };
514                 partition@2 {
515                         label = "log";
516                         reg = <0x00080000 0x00040000>;
517                 };
518                 partition@3 {
519                         label = "kernel";
520                         reg = <0x000c0000 0x00200000>;
521                 };
522                 partition@4 {
523                         label = "initfs";
524                         reg = <0x002c0000 0x00200000>;
525                 };
526                 partition@5 {
527                         label = "rootfs";
528                         reg = <0x004c0000 0x0fb40000>;
529                 };
530         };
531 };
532
533 &mcspi1 {
534         /*
535          * For some reason, touchscreen is necessary for screen to work at
536          * all on real hw. It works well without it on emulator.
537          *
538          * Also... order in the device tree actually matters here.
539          */
540         tsc2005@0 {
541                 compatible = "tsc2005";
542                 spi-max-frequency = <6000000>;
543                 reg = <0>;
544         };
545         mipid@2 {
546                 compatible = "acx565akm";
547                 spi-max-frequency = <6000000>;
548                 reg = <2>;
549
550                 pinctrl-names = "default";
551                 pinctrl-0 = <&display_pins>;
552         };
553 };
554
555 &usb_otg_hs {
556         interface-type = <0>;
557         usb-phy = <&usb2_phy>;
558         phys = <&usb2_phy>;
559         phy-names = "usb2-phy";
560         mode = <2>;
561         power = <50>;
562 };
563
564 &uart1 {
565         status = "disabled";
566 };
567
568 &uart2 {
569         pinctrl-names = "default";
570         pinctrl-0 = <&uart2_pins>;
571 };
572
573 &uart3 {
574         pinctrl-names = "default";
575         pinctrl-0 = <&uart3_pins>;
576 };