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