2 * Copyright 2012 Shawn Guo <shawn.guo@linaro.org>
3 * Copyright 2013-2017 Lothar Waßmann <LW@KARO-electronics.de>
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
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.
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.
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
30 * The above copyright notice and this permission notice shall be
31 * included in all copies or substantial portions of the Software.
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.
45 #include <dt-bindings/gpio/gpio.h>
46 #include <dt-bindings/interrupt-controller/irq.h>
49 model = "Ka-Ro electronics TX28 module";
50 compatible = "karo,tx28", "fsl,imx28";
59 lcdif_23bit_pins = &tx28_lcdif_23bit_pins;
60 lcdif_24bit_pins = &lcdif_24bit_pins_a;
61 reg_can_xcvr = ®_can_xcvr;
69 device_type = "memory";
70 reg = <0x40000000 0>; /* will be filled in by U-Boot */
74 compatible = "w1-gpio";
75 gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
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>;
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>;
97 reg_2p5v: regulator-2p5v {
98 compatible = "regulator-fixed";
99 regulator-name = "2P5V";
100 regulator-min-microvolt = <2500000>;
101 regulator-max-microvolt = <2500000>;
105 reg_3p3v: regulator-3p3v {
106 compatible = "regulator-fixed";
107 regulator-name = "3P3V";
108 regulator-min-microvolt = <3300000>;
109 regulator-max-microvolt = <3300000>;
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>;
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>;
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>;
145 compatible = "fixed-clock";
147 clock-frequency = <26000000>;
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>;
159 compatible = "gpio-leds";
163 gpios = <&gpio4 10 GPIO_ACTIVE_HIGH>;
164 linux,default-trigger = "heartbeat";
169 compatible = "pwm-backlight";
170 pwms = <&pwm 0 500000>;
172 * a silly way to create a 1:1 relationship between the
173 * PWM value and the actual duty cycle
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
186 default-brightness-level = <50>;
189 matrix_keypad: matrix-keypad {
190 compatible = "gpio-matrix-keypad";
192 &gpio5 0 GPIO_ACTIVE_HIGH
193 &gpio5 1 GPIO_ACTIVE_HIGH
194 &gpio5 2 GPIO_ACTIVE_HIGH
195 &gpio5 3 GPIO_ACTIVE_HIGH
198 &gpio5 4 GPIO_ACTIVE_HIGH
199 &gpio5 5 GPIO_ACTIVE_HIGH
200 &gpio5 6 GPIO_ACTIVE_HIGH
201 &gpio5 7 GPIO_ACTIVE_HIGH
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 */
219 debounce-delay-ms = <100>;
220 col-scan-delay-us = <5000>;
225 compatible = "spi-gpio";
226 #address-cells = <1>;
228 pinctrl-names = "default";
229 pinctrl-0 = <&tx28_spi_gpio_pins>;
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>;
236 &gpio2 27 GPIO_ACTIVE_LOW
237 &gpio3 8 GPIO_ACTIVE_LOW
238 &gpio3 9 GPIO_ACTIVE_LOW
240 /* enable this and disable ssp3 below, if you need full duplex SPI transfer */
245 /* 2nd TX-Std UART - (A)UART1 */
247 pinctrl-names = "default";
248 pinctrl-0 = <&auart1_pins_a>;
252 /* 3rd TX-Std UART - (A)UART3 */
254 pinctrl-names = "default";
255 pinctrl-0 = <&auart3_pins_a>;
260 pinctrl-names = "default";
261 pinctrl-0 = <&can0_pins_a>;
262 xceiver-supply = <®_can_xcvr>;
267 pinctrl-names = "default";
268 pinctrl-0 = <&can1_pins_a>;
269 xceiver-supply = <®_can_xcvr>;
277 /* 1st TX-Std UART - (D)UART */
279 pinctrl-names = "default";
280 pinctrl-0 = <&duart_4pins_a>;
285 pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
291 pinctrl-names = "default";
292 pinctrl-0 = <&i2c0_pins_a>;
293 clock-frequency = <400000>;
296 sgtl5000: sgtl5000@a {
297 compatible = "fsl,sgtl5000";
299 VDDA-supply = <®_2p5v>;
300 VDDIO-supply = <®_3p3v>;
305 compatible = "nxp,pca9554";
307 pinctrl-names = "default";
308 pinctrl-0 = <&tx28_pca9554_pins>;
309 interrupt-parent = <&gpio3>;
310 interrupts = <28 IRQ_TYPE_NONE>;
313 interrupt-controller;
314 #interrupt-cells = <2>;
317 polytouch: edt-ft5x06@38 {
318 compatible = "edt,edt-ft5x06";
320 pinctrl-names = "default";
321 pinctrl-0 = <&tx28_edt_ft5x06_pins>;
322 interrupt-parent = <&gpio2>;
323 interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
324 reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
325 wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
329 touchscreen: tsc2007@48 {
330 compatible = "ti,tsc2007";
332 pinctrl-names = "default";
333 pinctrl-0 = <&tx28_tsc2007_pins>;
334 interrupt-parent = <&gpio3>;
335 interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
336 pendown-gpio = <&gpio3 20 GPIO_ACTIVE_LOW>;
337 ti,x-plate-ohms = /bits/ 16 <660>;
341 compatible = "mxim,ds1339";
343 trickle-resistor-ohms = <250>;
344 trickle-diode-disable;
349 pinctrl-names = "default";
350 pinctrl-0 = <&lcdif_24bit_pins_a &lcdif_sync_pins_a &tx28_lcdif_ctrl_pins>;
351 lcd-supply = <®_lcd>;
352 display = <&display0>;
356 bits-per-pixel = <32>;
359 native-mode = <&timing5>;
362 clock-frequency = <25175000>;
374 pixelclk-active = <1>;
378 panel-name = "ETV570";
379 clock-frequency = <25175000>;
391 pixelclk-active = <1>;
395 panel-name = "ET0350";
396 clock-frequency = <6500000>;
408 pixelclk-active = <1>;
412 panel-name = "ET0430";
413 clock-frequency = <9000000>;
425 pixelclk-active = <1>;
429 panel-name = "ET0500", "ET0700";
430 clock-frequency = <33260000>;
442 pixelclk-active = <1>;
446 panel-name = "ETQ570";
447 clock-frequency = <6400000>;
459 pixelclk-active = <1>;
466 fsl,lradc-touchscreen-wires = <4>;
472 pinctrl-names = "default", "gpio_mode";
473 pinctrl-0 = <&mac0_pins_a>;
474 pinctrl-1 = <&tx28_mac0_pins_gpio>;
480 pinctrl-names = "default";
481 pinctrl-0 = <&mac1_pins_a>;
482 /* not enabled by default */
494 pinctrl-names = "default";
495 pinctrl-0 = <&pwm0_pins_a>;
500 pinctrl-names = "default";
501 pinctrl-0 = <&hog_pins_a>;
506 MX28_PAD_ENET0_RXD3__GPIO_4_10 /* module LED */
508 fsl,drive-strength = <MXS_DRIVE_4mA>;
509 fsl,voltage = <MXS_VOLTAGE_HIGH>;
510 fsl,pull-up = <MXS_PULL_DISABLE>;
513 tx28_edt_ft5x06_pins: tx28-edt-ft5x06-pins@0 {
516 MX28_PAD_SSP0_DATA6__GPIO_2_6 /* RESET */
517 MX28_PAD_SSP0_DATA5__GPIO_2_5 /* IRQ */
518 MX28_PAD_ENET0_RXD2__GPIO_4_9 /* WAKE */
520 fsl,drive-strength = <MXS_DRIVE_4mA>;
521 fsl,voltage = <MXS_VOLTAGE_HIGH>;
522 fsl,pull-up = <MXS_PULL_DISABLE>;
525 tx28_flexcan_xcvr_pins: tx28-flexcan-xcvr-pins@0 {
528 MX28_PAD_LCD_D00__GPIO_1_0
530 fsl,drive-strength = <MXS_DRIVE_4mA>;
531 fsl,voltage = <MXS_VOLTAGE_HIGH>;
532 fsl,pull-up = <MXS_PULL_DISABLE>;
535 tx28_lcdif_23bit_pins: tx28-lcdif-23bit@0 {
538 /* LCD_D00 may be used as Flexcan Transceiver Enable on STK5-V5 */
539 MX28_PAD_LCD_D01__LCD_D1
540 MX28_PAD_LCD_D02__LCD_D2
541 MX28_PAD_LCD_D03__LCD_D3
542 MX28_PAD_LCD_D04__LCD_D4
543 MX28_PAD_LCD_D05__LCD_D5
544 MX28_PAD_LCD_D06__LCD_D6
545 MX28_PAD_LCD_D07__LCD_D7
546 MX28_PAD_LCD_D08__LCD_D8
547 MX28_PAD_LCD_D09__LCD_D9
548 MX28_PAD_LCD_D10__LCD_D10
549 MX28_PAD_LCD_D11__LCD_D11
550 MX28_PAD_LCD_D12__LCD_D12
551 MX28_PAD_LCD_D13__LCD_D13
552 MX28_PAD_LCD_D14__LCD_D14
553 MX28_PAD_LCD_D15__LCD_D15
554 MX28_PAD_LCD_D16__LCD_D16
555 MX28_PAD_LCD_D17__LCD_D17
556 MX28_PAD_LCD_D18__LCD_D18
557 MX28_PAD_LCD_D19__LCD_D19
558 MX28_PAD_LCD_D20__LCD_D20
559 MX28_PAD_LCD_D21__LCD_D21
560 MX28_PAD_LCD_D22__LCD_D22
561 MX28_PAD_LCD_D23__LCD_D23
563 fsl,drive-strength = <MXS_DRIVE_4mA>;
564 fsl,voltage = <MXS_VOLTAGE_HIGH>;
565 fsl,pull-up = <MXS_PULL_DISABLE>;
568 tx28_lcdif_ctrl_pins: tx28-lcdif-ctrl@0 {
571 MX28_PAD_LCD_ENABLE__GPIO_1_31 /* Enable */
572 MX28_PAD_LCD_RESET__GPIO_3_30 /* Reset */
574 fsl,drive-strength = <MXS_DRIVE_4mA>;
575 fsl,voltage = <MXS_VOLTAGE_HIGH>;
576 fsl,pull-up = <MXS_PULL_DISABLE>;
579 tx28_mac0_pins_gpio: tx28-mac0-gpio-pins@0 {
582 MX28_PAD_ENET0_MDC__GPIO_4_0
583 MX28_PAD_ENET0_MDIO__GPIO_4_1
584 MX28_PAD_ENET0_RX_EN__GPIO_4_2
585 MX28_PAD_ENET0_RXD0__GPIO_4_3
586 MX28_PAD_ENET0_RXD1__GPIO_4_4
587 MX28_PAD_ENET0_TX_EN__GPIO_4_6
588 MX28_PAD_ENET0_TXD0__GPIO_4_7
589 MX28_PAD_ENET0_TXD1__GPIO_4_8
590 MX28_PAD_ENET_CLK__GPIO_4_16
592 fsl,drive-strength = <MXS_DRIVE_4mA>;
593 fsl,voltage = <MXS_VOLTAGE_HIGH>;
594 fsl,pull-up = <MXS_PULL_DISABLE>;
597 tx28_pca9554_pins: tx28-pca9554-pins@0 {
600 MX28_PAD_PWM3__GPIO_3_28
602 fsl,drive-strength = <MXS_DRIVE_4mA>;
603 fsl,voltage = <MXS_VOLTAGE_HIGH>;
604 fsl,pull-up = <MXS_PULL_DISABLE>;
607 tx28_spi_gpio_pins: spi-gpiogrp@0 {
610 MX28_PAD_AUART2_RX__GPIO_3_8
611 MX28_PAD_AUART2_TX__GPIO_3_9
612 MX28_PAD_SSP3_SCK__GPIO_2_24
613 MX28_PAD_SSP3_MOSI__GPIO_2_25
614 MX28_PAD_SSP3_MISO__GPIO_2_26
615 MX28_PAD_SSP3_SS0__GPIO_2_27
617 fsl,drive-strength = <MXS_DRIVE_8mA>;
618 fsl,voltage = <MXS_VOLTAGE_HIGH>;
619 fsl,pull-up = <MXS_PULL_DISABLE>;
622 tx28_tsc2007_pins: tx28-tsc2007-pins@0 {
625 MX28_PAD_SAIF0_MCLK__GPIO_3_20 /* TSC2007 IRQ */
627 fsl,drive-strength = <MXS_DRIVE_4mA>;
628 fsl,voltage = <MXS_VOLTAGE_HIGH>;
629 fsl,pull-up = <MXS_PULL_DISABLE>;
633 tx28_usbphy0_pins: tx28-usbphy0-pins@0 {
636 MX28_PAD_GPMI_CE2N__GPIO_0_18 /* USBOTG_VBUSEN */
637 MX28_PAD_GPMI_CE3N__GPIO_0_19 /* USBOTH_OC */
639 fsl,drive-strength = <MXS_DRIVE_12mA>;
640 fsl,voltage = <MXS_VOLTAGE_HIGH>;
641 fsl,pull-up = <MXS_PULL_DISABLE>;
644 tx28_usbphy1_pins: tx28-usbphy1-pins@0 {
647 MX28_PAD_SPDIF__GPIO_3_27 /* USBH_VBUSEN */
648 MX28_PAD_JTAG_RTCK__GPIO_4_20 /* USBH_OC */
650 fsl,drive-strength = <MXS_DRIVE_12mA>;
651 fsl,voltage = <MXS_VOLTAGE_HIGH>;
652 fsl,pull-up = <MXS_PULL_DISABLE>;
657 pinctrl-names = "default";
658 pinctrl-0 = <&saif0_pins_b>;
664 pinctrl-names = "default";
665 pinctrl-0 = <&saif1_pins_a>;
670 compatible = "fsl,imx28-mmc";
671 pinctrl-names = "default", "special";
672 pinctrl-0 = <&mmc0_4bit_pins_a
680 compatible = "fsl,imx28-spi";
681 pinctrl-names = "default";
682 pinctrl-0 = <&spi3_pins_a>;
683 clock-frequency = <57600000>;
688 vbus-supply = <®_usb0_vbus>;
689 disable-over-current;
690 dr_mode = "peripheral";
695 vbus-supply = <®_usb1_vbus>;
696 disable-over-current;
702 pinctrl-names = "default";
703 pinctrl-0 = <&tx28_usbphy0_pins>;
709 pinctrl-names = "default";
710 pinctrl-0 = <&tx28_usbphy1_pins>;