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