Merge branch 'ast-updates' of ssh://people.freedesktop.org/~/linux into drm-next
[sfrench/cifs-2.6.git] / arch / arm / boot / dts / imx28-tx28.dts
1 /*
2  * Copyright 2012 Shawn Guo <shawn.guo@linaro.org>
3  * Copyright 2013 Lothar Waßmann <LW@KARO-electronics.de>
4  *
5  * The code contained herein is licensed under the GNU General Public
6  * License. You may obtain a copy of the GNU General Public License
7  * Version 2 at the following locations:
8  *
9  * http://www.opensource.org/licenses/gpl-license.html
10  * http://www.gnu.org/copyleft/gpl.html
11  */
12
13 /dts-v1/;
14 #include "imx28.dtsi"
15 #include <dt-bindings/gpio/gpio.h>
16
17 / {
18         model = "Ka-Ro electronics TX28 module";
19         compatible = "karo,tx28", "fsl,imx28";
20
21         aliases {
22                 can0 = &can0;
23                 can1 = &can1;
24                 display = &display;
25                 ds1339 = &ds1339;
26                 gpio5 = &gpio5;
27                 lcdif = &lcdif;
28                 lcdif_23bit_pins = &tx28_lcdif_23bit_pins;
29                 lcdif_24bit_pins = &lcdif_24bit_pins_a;
30                 stk5led = &user_led;
31                 usbotg = &usb0;
32         };
33
34         memory {
35                 reg = <0 0>; /* will be filled in by U-Boot */
36         };
37
38         onewire {
39                 compatible = "w1-gpio";
40                 gpios = <&gpio2 7 0>;
41                 status = "disabled";
42         };
43
44         regulators {
45                 compatible = "simple-bus";
46                 #address-cells = <1>;
47                 #size-cells = <0>;
48
49                 reg_usb0_vbus: regulator@0 {
50                         compatible = "regulator-fixed";
51                         reg = <0>;
52                         regulator-name = "usb0_vbus";
53                         regulator-min-microvolt = <5000000>;
54                         regulator-max-microvolt = <5000000>;
55                         gpio = <&gpio0 18 0>;
56                         enable-active-high;
57                 };
58
59                 reg_usb1_vbus: regulator@1 {
60                         compatible = "regulator-fixed";
61                         reg = <1>;
62                         regulator-name = "usb1_vbus";
63                         regulator-min-microvolt = <5000000>;
64                         regulator-max-microvolt = <5000000>;
65                         gpio = <&gpio3 27 0>;
66                         enable-active-high;
67                 };
68
69                 reg_2p5v: regulator@2 {
70                         compatible = "regulator-fixed";
71                         reg = <2>;
72                         regulator-name = "2P5V";
73                         regulator-min-microvolt = <2500000>;
74                         regulator-max-microvolt = <2500000>;
75                         regulator-always-on;
76                 };
77
78                 reg_3p3v: regulator@3 {
79                         compatible = "regulator-fixed";
80                         reg = <3>;
81                         regulator-name = "3P3V";
82                         regulator-min-microvolt = <3300000>;
83                         regulator-max-microvolt = <3300000>;
84                         regulator-always-on;
85                 };
86
87                 reg_can_xcvr: regulator@4 {
88                         compatible = "regulator-fixed";
89                         reg = <4>;
90                         regulator-name = "CAN XCVR";
91                         regulator-min-microvolt = <3300000>;
92                         regulator-max-microvolt = <3300000>;
93                         gpio = <&gpio1 0 0>;
94                         pinctrl-names = "default";
95                         pinctrl-0 = <&tx28_flexcan_xcvr_pins>;
96                 };
97
98                 reg_lcd: regulator@5 {
99                         compatible = "regulator-fixed";
100                         reg = <5>;
101                         regulator-name = "LCD POWER";
102                         regulator-min-microvolt = <3300000>;
103                         regulator-max-microvolt = <3300000>;
104                         gpio = <&gpio1 31 0>;
105                         enable-active-high;
106                 };
107
108                 reg_lcd_reset: regulator@6 {
109                         compatible = "regulator-fixed";
110                         reg = <6>;
111                         regulator-name = "LCD RESET";
112                         regulator-min-microvolt = <3300000>;
113                         regulator-max-microvolt = <3300000>;
114                         gpio = <&gpio3 30 0>;
115                         startup-delay-us = <300000>;
116                         enable-active-high;
117                         regulator-always-on;
118                         regulator-boot-on;
119                 };
120         };
121
122         clocks {
123                 #address-cells = <1>;
124                 #size-cells = <0>;
125                 mclk: clock@0 {
126                         compatible = "fixed-clock";
127                         reg = <0>;
128                         #clock-cells = <0>;
129                         clock-frequency = <27000000>;
130                 };
131         };
132
133         sound {
134                 compatible = "fsl,imx28-tx28-sgtl5000",
135                              "fsl,mxs-audio-sgtl5000";
136                 model = "imx28-tx28-sgtl5000";
137                 saif-controllers = <&saif0 &saif1>;
138                 audio-codec = <&sgtl5000>;
139         };
140
141         leds {
142                 compatible = "gpio-leds";
143
144                 user_led: user {
145                         label = "Heartbeat";
146                         gpios = <&gpio4 10 0>;
147                         linux,default-trigger = "heartbeat";
148                 };
149         };
150
151         backlight {
152                 compatible = "pwm-backlight";
153                 pwms = <&pwm 0 500000>;
154                 /*
155                  * a silly way to create a 1:1 relationship between the
156                  * PWM value and the actual duty cycle
157                  */
158                 brightness-levels = < 0  1  2  3  4  5  6  7  8  9
159                                      10 11 12 13 14 15 16 17 18 19
160                                      20 21 22 23 24 25 26 27 28 29
161                                      30 31 32 33 34 35 36 37 38 39
162                                      40 41 42 43 44 45 46 47 48 49
163                                      50 51 52 53 54 55 56 57 58 59
164                                      60 61 62 63 64 65 66 67 68 69
165                                      70 71 72 73 74 75 76 77 78 79
166                                      80 81 82 83 84 85 86 87 88 89
167                                      90 91 92 93 94 95 96 97 98 99
168                                     100>;
169                 default-brightness-level = <50>;
170         };
171
172         matrix_keypad: matrix-keypad@0 {
173                 compatible = "gpio-matrix-keypad";
174                 col-gpios = <
175                         &gpio5 0 0
176                         &gpio5 1 0
177                         &gpio5 2 0
178                         &gpio5 3 0
179                 >;
180                 row-gpios = <
181                         &gpio5 4 0
182                         &gpio5 5 0
183                         &gpio5 6 0
184                         &gpio5 7 0
185                 >;
186                 /* sample keymap */
187                 linux,keymap = <
188                         0x00000074 /* row 0, col 0, KEY_POWER */
189                         0x00010052 /* row 0, col 1, KEY_KP0 */
190                         0x0002004f /* row 0, col 2, KEY_KP1 */
191                         0x00030050 /* row 0, col 3, KEY_KP2 */
192                         0x01000051 /* row 1, col 0, KEY_KP3 */
193                         0x0101004b /* row 1, col 1, KEY_KP4 */
194                         0x0102004c /* row 1, col 2, KEY_KP5 */
195                         0x0103004d /* row 1, col 3, KEY_KP6 */
196                         0x02000047 /* row 2, col 0, KEY_KP7 */
197                         0x02010048 /* row 2, col 1, KEY_KP8 */
198                         0x02020049 /* row 2, col 2, KEY_KP9 */
199                 >;
200                 gpio-activelow;
201                 linux,wakeup;
202                 debounce-delay-ms = <100>;
203                 col-scan-delay-us = <5000>;
204                 linux,no-autorepeat;
205         };
206 };
207
208 /* 2nd TX-Std UART - (A)UART1  */
209 &auart1 {
210         pinctrl-names = "default";
211         pinctrl-0 = <&auart1_pins_a>;
212         status = "okay";
213 };
214
215 /* 3rd TX-Std UART - (A)UART3  */
216 &auart3 {
217         pinctrl-names = "default";
218         pinctrl-0 = <&auart3_pins_a>;
219         status = "okay";
220 };
221
222 &can0 {
223         pinctrl-names = "default";
224         pinctrl-0 = <&can0_pins_a>;
225         xceiver-supply = <&reg_can_xcvr>;
226         status = "okay";
227 };
228
229 &can1 {
230         pinctrl-names = "default";
231         pinctrl-0 = <&can1_pins_a>;
232         xceiver-supply = <&reg_can_xcvr>;
233         status = "okay";
234 };
235
236 &digctl {
237         status = "okay";
238 };
239
240 /* 1st TX-Std UART - (D)UART */
241 &duart {
242         pinctrl-names = "default";
243         pinctrl-0 = <&duart_4pins_a>;
244         status = "okay";
245 };
246
247 &gpmi {
248         pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
249         nand-on-flash-bbt;
250         status = "okay";
251 };
252
253 &i2c0 {
254         pinctrl-names = "default";
255         pinctrl-0 = <&i2c0_pins_a>;
256         clock-frequency = <400000>;
257         status = "okay";
258
259         sgtl5000: sgtl5000@0a {
260                 compatible = "fsl,sgtl5000";
261                 reg = <0x0a>;
262                 VDDA-supply = <&reg_2p5v>;
263                 VDDIO-supply = <&reg_3p3v>;
264                 clocks = <&mclk>;
265         };
266
267         gpio5: pca953x@20 {
268                 compatible = "nxp,pca9554";
269                 reg = <0x20>;
270                 pinctrl-names = "default";
271                 pinctrl-0 = <&tx28_pca9554_pins>;
272                 interrupt-parent = <&gpio3>;
273                 interrupts = <28 0>;
274                 gpio-controller;
275                 #gpio-cells = <2>;
276                 interrupt-controller;
277                 #interrupt-cells = <2>;
278         };
279
280         polytouch: edt-ft5x06@38 {
281                 compatible = "edt,edt-ft5x06";
282                 reg = <0x38>;
283                 pinctrl-names = "default";
284                 pinctrl-0 = <&tx28_edt_ft5x06_pins>;
285                 interrupt-parent = <&gpio2>;
286                 interrupts = <5 0>;
287                 reset-gpios = <&gpio2 6 1>;
288                 wake-gpios = <&gpio4 9 0>;
289         };
290
291         touchscreen: tsc2007@48 {
292                 compatible = "ti,tsc2007";
293                 reg = <0x48>;
294                 pinctrl-names = "default";
295                 pinctrl-0 = <&tx28_tsc2007_pins>;
296                 interrupt-parent = <&gpio3>;
297                 interrupts = <20 0>;
298                 pendown-gpio = <&gpio3 20 1>;
299                 ti,x-plate-ohms = /bits/ 16 <660>;
300         };
301
302         ds1339: rtc@68 {
303                 compatible = "mxim,ds1339";
304                 reg = <0x68>;
305         };
306 };
307
308 &lcdif {
309         pinctrl-names = "default";
310         pinctrl-0 = <&lcdif_24bit_pins_a &lcdif_sync_pins_a &tx28_lcdif_ctrl_pins>;
311         lcd-supply = <&reg_lcd>;
312         display = <&display>;
313         status = "okay";
314
315         display: display@0 {
316                 bits-per-pixel = <32>;
317                 bus-width = <24>;
318                 display-timings {
319                         native-mode = <&timing5>;
320                         timing0: timing0 {
321                                 panel-name = "VGA";
322                                 clock-frequency = <25175000>;
323                                 hactive = <640>;
324                                 vactive = <480>;
325                                 hback-porch = <48>;
326                                 hsync-len = <96>;
327                                 hfront-porch = <16>;
328                                 vback-porch = <33>;
329                                 vsync-len = <2>;
330                                 vfront-porch = <10>;
331                                 hsync-active = <0>;
332                                 vsync-active = <0>;
333                                 de-active = <1>;
334                                 pixelclk-active = <1>;
335                         };
336
337                         timing1: timing1 {
338                                 panel-name = "ETV570";
339                                 clock-frequency = <25175000>;
340                                 hactive = <640>;
341                                 vactive = <480>;
342                                 hback-porch = <114>;
343                                 hsync-len = <30>;
344                                 hfront-porch = <16>;
345                                 vback-porch = <32>;
346                                 vsync-len = <3>;
347                                 vfront-porch = <10>;
348                                 hsync-active = <0>;
349                                 vsync-active = <0>;
350                                 de-active = <1>;
351                                 pixelclk-active = <1>;
352                         };
353
354                         timing2: timing2 {
355                                 panel-name = "ET0350";
356                                 clock-frequency = <6500000>;
357                                 hactive = <320>;
358                                 vactive = <240>;
359                                 hback-porch = <34>;
360                                 hsync-len = <34>;
361                                 hfront-porch = <20>;
362                                 vback-porch = <15>;
363                                 vsync-len = <3>;
364                                 vfront-porch = <4>;
365                                 hsync-active = <0>;
366                                 vsync-active = <0>;
367                                 de-active = <1>;
368                                 pixelclk-active = <1>;
369                         };
370
371                         timing3: timing3 {
372                                 panel-name = "ET0430";
373                                 clock-frequency = <9000000>;
374                                 hactive = <480>;
375                                 vactive = <272>;
376                                 hback-porch = <2>;
377                                 hsync-len = <41>;
378                                 hfront-porch = <2>;
379                                 vback-porch = <2>;
380                                 vsync-len = <10>;
381                                 vfront-porch = <2>;
382                                 hsync-active = <0>;
383                                 vsync-active = <0>;
384                                 de-active = <1>;
385                                 pixelclk-active = <1>;
386                         };
387
388                         timing4: timing4 {
389                                 panel-name = "ET0500", "ET0700";
390                                 clock-frequency = <33260000>;
391                                 hactive = <800>;
392                                 vactive = <480>;
393                                 hback-porch = <88>;
394                                 hsync-len = <128>;
395                                 hfront-porch = <40>;
396                                 vback-porch = <33>;
397                                 vsync-len = <2>;
398                                 vfront-porch = <10>;
399                                 hsync-active = <0>;
400                                 vsync-active = <0>;
401                                 de-active = <1>;
402                                 pixelclk-active = <1>;
403                         };
404
405                         timing5: timing5 {
406                                 panel-name = "ETQ570";
407                                 clock-frequency = <6400000>;
408                                 hactive = <320>;
409                                 vactive = <240>;
410                                 hback-porch = <38>;
411                                 hsync-len = <30>;
412                                 hfront-porch = <30>;
413                                 vback-porch = <16>;
414                                 vsync-len = <3>;
415                                 vfront-porch = <4>;
416                                 hsync-active = <0>;
417                                 vsync-active = <0>;
418                                 de-active = <1>;
419                                 pixelclk-active = <1>;
420                         };
421                 };
422         };
423 };
424
425 &lradc {
426         fsl,lradc-touchscreen-wires = <4>;
427         status = "okay";
428 };
429
430 &mac0 {
431         phy-mode = "rmii";
432         pinctrl-names = "default", "gpio_mode";
433         pinctrl-0 = <&mac0_pins_a>;
434         pinctrl-1 = <&tx28_mac0_pins_gpio>;
435         status = "okay";
436 };
437
438 &mac1 {
439         phy-mode = "rmii";
440         pinctrl-names = "default";
441         pinctrl-0 = <&mac1_pins_a>;
442         /* not enabled by default */
443 };
444
445 &mxs_rtc {
446         status = "okay";
447 };
448
449 &ocotp {
450         status = "okay";
451 };
452
453 &pwm {
454         pinctrl-names = "default";
455         pinctrl-0 = <&pwm0_pins_a>;
456         status = "okay";
457 };
458
459 &pinctrl {
460         pinctrl-names = "default";
461         pinctrl-0 = <&hog_pins_a>;
462
463         hog_pins_a: hog@0 {
464                 reg = <0>;
465                 fsl,pinmux-ids = <
466                         MX28_PAD_ENET0_RXD3__GPIO_4_10 /* module LED */
467                 >;
468                 fsl,drive-strength = <MXS_DRIVE_4mA>;
469                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
470                 fsl,pull-up = <MXS_PULL_DISABLE>;
471         };
472
473         tx28_edt_ft5x06_pins: tx28-edt-ft5x06-pins {
474                 fsl,pinmux-ids = <
475                         MX28_PAD_SSP0_DATA6__GPIO_2_6 /* RESET */
476                         MX28_PAD_SSP0_DATA5__GPIO_2_5 /* IRQ */
477                         MX28_PAD_ENET0_RXD2__GPIO_4_9 /* WAKE */
478                 >;
479                 fsl,drive-strength = <MXS_DRIVE_4mA>;
480                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
481                 fsl,pull-up = <MXS_PULL_DISABLE>;
482         };
483
484         tx28_flexcan_xcvr_pins: tx28-flexcan-xcvr-pins {
485                 fsl,pinmux-ids = <
486                         MX28_PAD_LCD_D00__GPIO_1_0
487                 >;
488                 fsl,drive-strength = <MXS_DRIVE_4mA>;
489                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
490                 fsl,pull-up = <MXS_PULL_DISABLE>;
491         };
492
493         tx28_lcdif_23bit_pins: tx28-lcdif-23bit {
494                 fsl,pinmux-ids = <
495                         /* LCD_D00 may be used as Flexcan Transceiver Enable on STK5-V5 */
496                         MX28_PAD_LCD_D01__LCD_D1
497                         MX28_PAD_LCD_D02__LCD_D2
498                         MX28_PAD_LCD_D03__LCD_D3
499                         MX28_PAD_LCD_D04__LCD_D4
500                         MX28_PAD_LCD_D05__LCD_D5
501                         MX28_PAD_LCD_D06__LCD_D6
502                         MX28_PAD_LCD_D07__LCD_D7
503                         MX28_PAD_LCD_D08__LCD_D8
504                         MX28_PAD_LCD_D09__LCD_D9
505                         MX28_PAD_LCD_D10__LCD_D10
506                         MX28_PAD_LCD_D11__LCD_D11
507                         MX28_PAD_LCD_D12__LCD_D12
508                         MX28_PAD_LCD_D13__LCD_D13
509                         MX28_PAD_LCD_D14__LCD_D14
510                         MX28_PAD_LCD_D15__LCD_D15
511                         MX28_PAD_LCD_D16__LCD_D16
512                         MX28_PAD_LCD_D17__LCD_D17
513                         MX28_PAD_LCD_D18__LCD_D18
514                         MX28_PAD_LCD_D19__LCD_D19
515                         MX28_PAD_LCD_D20__LCD_D20
516                         MX28_PAD_LCD_D21__LCD_D21
517                         MX28_PAD_LCD_D22__LCD_D22
518                         MX28_PAD_LCD_D23__LCD_D23
519                 >;
520                 fsl,drive-strength = <MXS_DRIVE_4mA>;
521                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
522                 fsl,pull-up = <MXS_PULL_DISABLE>;
523         };
524
525         tx28_lcdif_ctrl_pins: tx28-lcdif-ctrl {
526                 fsl,pinmux-ids = <
527                         MX28_PAD_LCD_ENABLE__GPIO_1_31 /* Enable */
528                         MX28_PAD_LCD_RESET__GPIO_3_30  /* Reset */
529                 >;
530                 fsl,drive-strength = <MXS_DRIVE_4mA>;
531                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
532                 fsl,pull-up = <MXS_PULL_DISABLE>;
533         };
534
535         tx28_mac0_pins_gpio: tx28-mac0-gpio-pins {
536                 fsl,pinmux-ids = <
537                         MX28_PAD_ENET0_MDC__GPIO_4_0
538                         MX28_PAD_ENET0_MDIO__GPIO_4_1
539                         MX28_PAD_ENET0_RX_EN__GPIO_4_2
540                         MX28_PAD_ENET0_RXD0__GPIO_4_3
541                         MX28_PAD_ENET0_RXD1__GPIO_4_4
542                         MX28_PAD_ENET0_TX_EN__GPIO_4_6
543                         MX28_PAD_ENET0_TXD0__GPIO_4_7
544                         MX28_PAD_ENET0_TXD1__GPIO_4_8
545                         MX28_PAD_ENET_CLK__GPIO_4_16
546                 >;
547                 fsl,drive-strength = <MXS_DRIVE_4mA>;
548                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
549                 fsl,pull-up = <MXS_PULL_DISABLE>;
550         };
551
552         tx28_pca9554_pins: tx28-pca9554-pins {
553                 fsl,pinmux-ids = <
554                         MX28_PAD_PWM3__GPIO_3_28
555                 >;
556                 fsl,drive-strength = <MXS_DRIVE_4mA>;
557                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
558                 fsl,pull-up = <MXS_PULL_DISABLE>;
559         };
560
561         tx28_tsc2007_pins: tx28-tsc2007-pins {
562                 fsl,pinmux-ids = <
563                         MX28_PAD_SAIF0_MCLK__GPIO_3_20 /* TSC2007 IRQ */
564                 >;
565                 fsl,drive-strength = <MXS_DRIVE_4mA>;
566                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
567                 fsl,pull-up = <MXS_PULL_DISABLE>;
568         };
569
570
571         tx28_usbphy0_pins: tx28-usbphy0-pins {
572                 fsl,pinmux-ids = <
573                         MX28_PAD_GPMI_CE2N__GPIO_0_18 /* USBOTG_VBUSEN */
574                         MX28_PAD_GPMI_CE3N__GPIO_0_19 /* USBOTH_OC */
575                 >;
576                 fsl,drive-strength = <MXS_DRIVE_12mA>;
577                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
578                 fsl,pull-up = <MXS_PULL_DISABLE>;
579         };
580
581         tx28_usbphy1_pins: tx28-usbphy1-pins {
582                 fsl,pinmux-ids = <
583                         MX28_PAD_SPDIF__GPIO_3_27 /* USBH_VBUSEN */
584                         MX28_PAD_JTAG_RTCK__GPIO_4_20 /* USBH_OC */
585                 >;
586                 fsl,drive-strength = <MXS_DRIVE_12mA>;
587                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
588                 fsl,pull-up = <MXS_PULL_DISABLE>;
589         };
590 };
591
592 &saif0 {
593         pinctrl-names = "default";
594         pinctrl-0 = <&saif0_pins_b>;
595         fsl,saif-master;
596         status = "okay";
597 };
598
599 &saif1 {
600         pinctrl-names = "default";
601         pinctrl-0 = <&saif1_pins_a>;
602         status = "okay";
603 };
604
605 &ssp0 {
606         compatible = "fsl,imx28-mmc";
607         pinctrl-names = "default", "special";
608         pinctrl-0 = <&mmc0_4bit_pins_a
609                      &mmc0_cd_cfg
610                      &mmc0_sck_cfg>;
611         bus-width = <4>;
612         status = "okay";
613 };
614
615 &ssp3 {
616         compatible = "fsl,imx28-spi";
617         pinctrl-names = "default";
618         pinctrl-0 = <&spi3_pins_a>;
619         clock-frequency = <57600000>;
620         status = "okay";
621
622         spidev0: spi@0 {
623                 compatible = "spidev";
624                 reg = <0>;
625                 spi-max-frequency = <57600000>;
626         };
627
628         spidev1: spi@1 {
629                 compatible = "spidev";
630                 reg = <1>;
631                 spi-max-frequency = <57600000>;
632         };
633 };
634
635 &usb0 {
636         vbus-supply = <&reg_usb0_vbus>;
637         disable-over-current;
638         dr_mode = "peripheral";
639         status = "okay";
640 };
641
642 &usb1 {
643         vbus-supply = <&reg_usb1_vbus>;
644         disable-over-current;
645         dr_mode = "host";
646         status = "okay";
647 };
648
649 &usbphy0 {
650         pinctrl-names = "default";
651         pinctrl-0 = <&tx28_usbphy0_pins>;
652         phy_type = "utmi";
653         status = "okay";
654 };
655
656 &usbphy1 {
657         pinctrl-names = "default";
658         pinctrl-0 = <&tx28_usbphy1_pins>;
659         phy_type = "utmi";
660         status = "okay";
661 };