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 reg = <0x40000000 0>; /* will be filled in by U-Boot */
73 compatible = "w1-gpio";
74 gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
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>;
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>;
96 reg_2p5v: regulator-2p5v {
97 compatible = "regulator-fixed";
98 regulator-name = "2P5V";
99 regulator-min-microvolt = <2500000>;
100 regulator-max-microvolt = <2500000>;
104 reg_3p3v: regulator-3p3v {
105 compatible = "regulator-fixed";
106 regulator-name = "3P3V";
107 regulator-min-microvolt = <3300000>;
108 regulator-max-microvolt = <3300000>;
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>;
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>;
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>;
144 #address-cells = <1>;
147 compatible = "fixed-clock";
150 clock-frequency = <26000000>;
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>;
163 compatible = "gpio-leds";
167 gpios = <&gpio4 10 GPIO_ACTIVE_HIGH>;
168 linux,default-trigger = "heartbeat";
173 compatible = "pwm-backlight";
174 pwms = <&pwm 0 500000>;
176 * a silly way to create a 1:1 relationship between the
177 * PWM value and the actual duty cycle
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
190 default-brightness-level = <50>;
193 matrix_keypad: matrix-keypad {
194 compatible = "gpio-matrix-keypad";
196 &gpio5 0 GPIO_ACTIVE_HIGH
197 &gpio5 1 GPIO_ACTIVE_HIGH
198 &gpio5 2 GPIO_ACTIVE_HIGH
199 &gpio5 3 GPIO_ACTIVE_HIGH
202 &gpio5 4 GPIO_ACTIVE_HIGH
203 &gpio5 5 GPIO_ACTIVE_HIGH
204 &gpio5 6 GPIO_ACTIVE_HIGH
205 &gpio5 7 GPIO_ACTIVE_HIGH
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 */
223 debounce-delay-ms = <100>;
224 col-scan-delay-us = <5000>;
229 compatible = "spi-gpio";
230 #address-cells = <1>;
232 pinctrl-names = "default";
233 pinctrl-0 = <&tx28_spi_gpio_pins>;
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>;
240 &gpio2 27 GPIO_ACTIVE_LOW
241 &gpio3 8 GPIO_ACTIVE_LOW
242 &gpio3 9 GPIO_ACTIVE_LOW
244 /* enable this and disable ssp3 below, if you need full duplex SPI transfer */
248 compatible = "spidev";
250 spi-max-frequency = <57600000>;
254 compatible = "spidev";
256 spi-max-frequency = <57600000>;
260 compatible = "spidev";
262 spi-max-frequency = <57600000>;
267 /* 2nd TX-Std UART - (A)UART1 */
269 pinctrl-names = "default";
270 pinctrl-0 = <&auart1_pins_a>;
274 /* 3rd TX-Std UART - (A)UART3 */
276 pinctrl-names = "default";
277 pinctrl-0 = <&auart3_pins_a>;
282 pinctrl-names = "default";
283 pinctrl-0 = <&can0_pins_a>;
284 xceiver-supply = <®_can_xcvr>;
289 pinctrl-names = "default";
290 pinctrl-0 = <&can1_pins_a>;
291 xceiver-supply = <®_can_xcvr>;
299 /* 1st TX-Std UART - (D)UART */
301 pinctrl-names = "default";
302 pinctrl-0 = <&duart_4pins_a>;
307 pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
313 pinctrl-names = "default";
314 pinctrl-0 = <&i2c0_pins_a>;
315 clock-frequency = <400000>;
318 sgtl5000: sgtl5000@a {
319 compatible = "fsl,sgtl5000";
321 VDDA-supply = <®_2p5v>;
322 VDDIO-supply = <®_3p3v>;
327 compatible = "nxp,pca9554";
329 pinctrl-names = "default";
330 pinctrl-0 = <&tx28_pca9554_pins>;
331 interrupt-parent = <&gpio3>;
332 interrupts = <28 IRQ_TYPE_NONE>;
335 interrupt-controller;
336 #interrupt-cells = <2>;
339 polytouch: edt-ft5x06@38 {
340 compatible = "edt,edt-ft5x06";
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>;
350 touchscreen: tsc2007@48 {
351 compatible = "ti,tsc2007";
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>;
362 compatible = "mxim,ds1339";
364 trickle-resistor-ohms = <250>;
365 trickle-diode-disable;
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>;
377 bits-per-pixel = <32>;
380 native-mode = <&timing5>;
383 clock-frequency = <25175000>;
395 pixelclk-active = <1>;
399 panel-name = "ETV570";
400 clock-frequency = <25175000>;
412 pixelclk-active = <1>;
416 panel-name = "ET0350";
417 clock-frequency = <6500000>;
429 pixelclk-active = <1>;
433 panel-name = "ET0430";
434 clock-frequency = <9000000>;
446 pixelclk-active = <1>;
450 panel-name = "ET0500", "ET0700";
451 clock-frequency = <33260000>;
463 pixelclk-active = <1>;
467 panel-name = "ETQ570";
468 clock-frequency = <6400000>;
480 pixelclk-active = <1>;
487 fsl,lradc-touchscreen-wires = <4>;
493 pinctrl-names = "default", "gpio_mode";
494 pinctrl-0 = <&mac0_pins_a>;
495 pinctrl-1 = <&tx28_mac0_pins_gpio>;
501 pinctrl-names = "default";
502 pinctrl-0 = <&mac1_pins_a>;
503 /* not enabled by default */
515 pinctrl-names = "default";
516 pinctrl-0 = <&pwm0_pins_a>;
521 pinctrl-names = "default";
522 pinctrl-0 = <&hog_pins_a>;
527 MX28_PAD_ENET0_RXD3__GPIO_4_10 /* module LED */
529 fsl,drive-strength = <MXS_DRIVE_4mA>;
530 fsl,voltage = <MXS_VOLTAGE_HIGH>;
531 fsl,pull-up = <MXS_PULL_DISABLE>;
534 tx28_edt_ft5x06_pins: tx28-edt-ft5x06-pins@0 {
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 */
541 fsl,drive-strength = <MXS_DRIVE_4mA>;
542 fsl,voltage = <MXS_VOLTAGE_HIGH>;
543 fsl,pull-up = <MXS_PULL_DISABLE>;
546 tx28_flexcan_xcvr_pins: tx28-flexcan-xcvr-pins@0 {
549 MX28_PAD_LCD_D00__GPIO_1_0
551 fsl,drive-strength = <MXS_DRIVE_4mA>;
552 fsl,voltage = <MXS_VOLTAGE_HIGH>;
553 fsl,pull-up = <MXS_PULL_DISABLE>;
556 tx28_lcdif_23bit_pins: tx28-lcdif-23bit@0 {
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
584 fsl,drive-strength = <MXS_DRIVE_4mA>;
585 fsl,voltage = <MXS_VOLTAGE_HIGH>;
586 fsl,pull-up = <MXS_PULL_DISABLE>;
589 tx28_lcdif_ctrl_pins: tx28-lcdif-ctrl@0 {
592 MX28_PAD_LCD_ENABLE__GPIO_1_31 /* Enable */
593 MX28_PAD_LCD_RESET__GPIO_3_30 /* Reset */
595 fsl,drive-strength = <MXS_DRIVE_4mA>;
596 fsl,voltage = <MXS_VOLTAGE_HIGH>;
597 fsl,pull-up = <MXS_PULL_DISABLE>;
600 tx28_mac0_pins_gpio: tx28-mac0-gpio-pins@0 {
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
613 fsl,drive-strength = <MXS_DRIVE_4mA>;
614 fsl,voltage = <MXS_VOLTAGE_HIGH>;
615 fsl,pull-up = <MXS_PULL_DISABLE>;
618 tx28_pca9554_pins: tx28-pca9554-pins@0 {
621 MX28_PAD_PWM3__GPIO_3_28
623 fsl,drive-strength = <MXS_DRIVE_4mA>;
624 fsl,voltage = <MXS_VOLTAGE_HIGH>;
625 fsl,pull-up = <MXS_PULL_DISABLE>;
628 tx28_spi_gpio_pins: spi-gpiogrp@0 {
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
638 fsl,drive-strength = <MXS_DRIVE_8mA>;
639 fsl,voltage = <MXS_VOLTAGE_HIGH>;
640 fsl,pull-up = <MXS_PULL_DISABLE>;
643 tx28_tsc2007_pins: tx28-tsc2007-pins@0 {
646 MX28_PAD_SAIF0_MCLK__GPIO_3_20 /* TSC2007 IRQ */
648 fsl,drive-strength = <MXS_DRIVE_4mA>;
649 fsl,voltage = <MXS_VOLTAGE_HIGH>;
650 fsl,pull-up = <MXS_PULL_DISABLE>;
654 tx28_usbphy0_pins: tx28-usbphy0-pins@0 {
657 MX28_PAD_GPMI_CE2N__GPIO_0_18 /* USBOTG_VBUSEN */
658 MX28_PAD_GPMI_CE3N__GPIO_0_19 /* USBOTH_OC */
660 fsl,drive-strength = <MXS_DRIVE_12mA>;
661 fsl,voltage = <MXS_VOLTAGE_HIGH>;
662 fsl,pull-up = <MXS_PULL_DISABLE>;
665 tx28_usbphy1_pins: tx28-usbphy1-pins@0 {
668 MX28_PAD_SPDIF__GPIO_3_27 /* USBH_VBUSEN */
669 MX28_PAD_JTAG_RTCK__GPIO_4_20 /* USBH_OC */
671 fsl,drive-strength = <MXS_DRIVE_12mA>;
672 fsl,voltage = <MXS_VOLTAGE_HIGH>;
673 fsl,pull-up = <MXS_PULL_DISABLE>;
678 pinctrl-names = "default";
679 pinctrl-0 = <&saif0_pins_b>;
685 pinctrl-names = "default";
686 pinctrl-0 = <&saif1_pins_a>;
691 compatible = "fsl,imx28-mmc";
692 pinctrl-names = "default", "special";
693 pinctrl-0 = <&mmc0_4bit_pins_a
701 compatible = "fsl,imx28-spi";
702 pinctrl-names = "default";
703 pinctrl-0 = <&spi3_pins_a>;
704 clock-frequency = <57600000>;
708 compatible = "spidev";
710 spi-max-frequency = <57600000>;
714 compatible = "spidev";
716 spi-max-frequency = <57600000>;
720 compatible = "spidev";
722 spi-max-frequency = <57600000>;
727 vbus-supply = <®_usb0_vbus>;
728 disable-over-current;
729 dr_mode = "peripheral";
734 vbus-supply = <®_usb1_vbus>;
735 disable-over-current;
741 pinctrl-names = "default";
742 pinctrl-0 = <&tx28_usbphy0_pins>;
748 pinctrl-names = "default";
749 pinctrl-0 = <&tx28_usbphy1_pins>;