Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux...
[deliverable/linux.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 };
This page took 0.044839 seconds and 5 git commands to generate.