1270866Simp/*
2270866Simp * Copyright 2013 Lothar Wa��mann <LW@KARO-electronics.de>
3270866Simp *
4270866Simp * The code contained herein is licensed under the GNU General Public
5270866Simp * License. You may obtain a copy of the GNU General Public License
6270866Simp * Version 2 at the following locations:
7270866Simp *
8270866Simp * http://www.opensource.org/licenses/gpl-license.html
9270866Simp * http://www.gnu.org/copyleft/gpl.html
10270866Simp */
11270866Simp
12270866Simp/dts-v1/;
13270866Simp#include "imx53-tx53.dtsi"
14270866Simp#include <dt-bindings/input/input.h>
15270866Simp#include <dt-bindings/pwm/pwm.h>
16270866Simp
17270866Simp/ {
18270866Simp	model = "Ka-Ro electronics TX53 module (LCD)";
19270866Simp	compatible = "karo,tx53", "fsl,imx53";
20270866Simp
21270866Simp	aliases {
22270866Simp		display = &display;
23270866Simp	};
24270866Simp
25270866Simp	soc {
26270866Simp		display: display@di0 {
27270866Simp			compatible = "fsl,imx-parallel-display";
28270866Simp			interface-pix-fmt = "rgb24";
29270866Simp			pinctrl-names = "default";
30270866Simp			pinctrl-0 = <&pinctrl_rgb24_vga1>;
31270866Simp			status = "okay";
32270866Simp
33270866Simp			port {
34270866Simp				display0_in: endpoint {
35270866Simp					remote-endpoint = <&ipu_di0_disp0>;
36270866Simp				};
37270866Simp			};
38270866Simp
39270866Simp			display-timings {
40270866Simp				VGA {
41270866Simp					clock-frequency = <25200000>;
42270866Simp					hactive = <640>;
43270866Simp					vactive = <480>;
44270866Simp					hback-porch = <48>;
45270866Simp					hsync-len = <96>;
46270866Simp					hfront-porch = <16>;
47270866Simp					vback-porch = <31>;
48270866Simp					vsync-len = <2>;
49270866Simp					vfront-porch = <12>;
50270866Simp					hsync-active = <0>;
51270866Simp					vsync-active = <0>;
52270866Simp					de-active = <1>;
53270866Simp					pixelclk-active = <0>;
54270866Simp				};
55270866Simp
56270866Simp				ETV570 {
57270866Simp					clock-frequency = <25200000>;
58270866Simp					hactive = <640>;
59270866Simp					vactive = <480>;
60270866Simp					hback-porch = <114>;
61270866Simp					hsync-len = <30>;
62270866Simp					hfront-porch = <16>;
63270866Simp					vback-porch = <32>;
64270866Simp					vsync-len = <3>;
65270866Simp					vfront-porch = <10>;
66270866Simp					hsync-active = <0>;
67270866Simp					vsync-active = <0>;
68270866Simp					de-active = <1>;
69270866Simp					pixelclk-active = <0>;
70270866Simp				};
71270866Simp
72270866Simp				ET0350 {
73270866Simp					clock-frequency = <6413760>;
74270866Simp					hactive = <320>;
75270866Simp					vactive = <240>;
76270866Simp					hback-porch = <34>;
77270866Simp					hsync-len = <34>;
78270866Simp					hfront-porch = <20>;
79270866Simp					vback-porch = <15>;
80270866Simp					vsync-len = <3>;
81270866Simp					vfront-porch = <4>;
82270866Simp					hsync-active = <0>;
83270866Simp					vsync-active = <0>;
84270866Simp					de-active = <1>;
85270866Simp					pixelclk-active = <0>;
86270866Simp				};
87270866Simp
88270866Simp				ET0430 {
89270866Simp					clock-frequency = <9009000>;
90270866Simp					hactive = <480>;
91270866Simp					vactive = <272>;
92270866Simp					hback-porch = <2>;
93270866Simp					hsync-len = <41>;
94270866Simp					hfront-porch = <2>;
95270866Simp					vback-porch = <2>;
96270866Simp					vsync-len = <10>;
97270866Simp					vfront-porch = <2>;
98270866Simp					hsync-active = <0>;
99270866Simp					vsync-active = <0>;
100270866Simp					de-active = <1>;
101270866Simp					pixelclk-active = <1>;
102270866Simp				};
103270866Simp
104270866Simp				ET0500 {
105270866Simp					clock-frequency = <33264000>;
106270866Simp					hactive = <800>;
107270866Simp					vactive = <480>;
108270866Simp					hback-porch = <88>;
109270866Simp					hsync-len = <128>;
110270866Simp					hfront-porch = <40>;
111270866Simp					vback-porch = <33>;
112270866Simp					vsync-len = <2>;
113270866Simp					vfront-porch = <10>;
114270866Simp					hsync-active = <0>;
115270866Simp					vsync-active = <0>;
116270866Simp					de-active = <1>;
117270866Simp					pixelclk-active = <0>;
118270866Simp				};
119270866Simp
120270866Simp				ET0700 { /* same as ET0500 */
121270866Simp					clock-frequency = <33264000>;
122270866Simp					hactive = <800>;
123270866Simp					vactive = <480>;
124270866Simp					hback-porch = <88>;
125270866Simp					hsync-len = <128>;
126270866Simp					hfront-porch = <40>;
127270866Simp					vback-porch = <33>;
128270866Simp					vsync-len = <2>;
129270866Simp					vfront-porch = <10>;
130270866Simp					hsync-active = <0>;
131270866Simp					vsync-active = <0>;
132270866Simp					de-active = <1>;
133270866Simp					pixelclk-active = <0>;
134270866Simp				};
135270866Simp
136270866Simp				ETQ570 {
137270866Simp					clock-frequency = <6596040>;
138270866Simp					hactive = <320>;
139270866Simp					vactive = <240>;
140270866Simp					hback-porch = <38>;
141270866Simp					hsync-len = <30>;
142270866Simp					hfront-porch = <30>;
143270866Simp					vback-porch = <16>;
144270866Simp					vsync-len = <3>;
145270866Simp					vfront-porch = <4>;
146270866Simp					hsync-active = <0>;
147270866Simp					vsync-active = <0>;
148270866Simp					de-active = <1>;
149270866Simp					pixelclk-active = <0>;
150270866Simp				};
151270866Simp			};
152270866Simp		};
153270866Simp	};
154270866Simp
155270866Simp	backlight: backlight {
156270866Simp		compatible = "pwm-backlight";
157270866Simp		pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
158270866Simp		power-supply = <&reg_3v3>;
159270866Simp		brightness-levels = <
160270866Simp			  0  1  2  3  4  5  6  7  8  9
161270866Simp			 10 11 12 13 14 15 16 17 18 19
162270866Simp			 20 21 22 23 24 25 26 27 28 29
163270866Simp			 30 31 32 33 34 35 36 37 38 39
164270866Simp			 40 41 42 43 44 45 46 47 48 49
165270866Simp			 50 51 52 53 54 55 56 57 58 59
166270866Simp			 60 61 62 63 64 65 66 67 68 69
167270866Simp			 70 71 72 73 74 75 76 77 78 79
168270866Simp			 80 81 82 83 84 85 86 87 88 89
169270866Simp			 90 91 92 93 94 95 96 97 98 99
170270866Simp			100
171270866Simp		>;
172270866Simp		default-brightness-level = <50>;
173270866Simp	};
174270866Simp
175270866Simp	regulators {
176270866Simp		reg_lcd_pwr: regulator@5 {
177270866Simp			compatible = "regulator-fixed";
178270866Simp			reg = <5>;
179270866Simp			regulator-name = "LCD POWER";
180270866Simp			regulator-min-microvolt = <3300000>;
181270866Simp			regulator-max-microvolt = <3300000>;
182270866Simp			gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
183270866Simp			enable-active-high;
184270866Simp			regulator-boot-on;
185270866Simp		};
186270866Simp
187270866Simp		reg_lcd_reset: regulator@6 {
188270866Simp			compatible = "regulator-fixed";
189270866Simp			reg = <6>;
190270866Simp			regulator-name = "LCD RESET";
191270866Simp			regulator-min-microvolt = <3300000>;
192270866Simp			regulator-max-microvolt = <3300000>;
193270866Simp			gpio = <&gpio3 29 GPIO_ACTIVE_HIGH>;
194270866Simp			enable-active-high;
195270866Simp			regulator-boot-on;
196270866Simp		};
197270866Simp	};
198270866Simp};
199270866Simp
200270866Simp&i2c3 {
201270866Simp	pinctrl-names = "default";
202270866Simp	pinctrl-0 = <&pinctrl_i2c3>;
203270866Simp	status = "okay";
204270866Simp
205270866Simp	sgtl5000: codec@0a {
206270866Simp		compatible = "fsl,sgtl5000";
207270866Simp		reg = <0x0a>;
208270866Simp		VDDA-supply = <&reg_2v5>;
209270866Simp		VDDIO-supply = <&reg_3v3>;
210270866Simp		clocks = <&mclk>;
211270866Simp	};
212270866Simp
213270866Simp	polytouch: edt-ft5x06@38 {
214270866Simp		compatible = "edt,edt-ft5x06";
215270866Simp		reg = <0x38>;
216270866Simp		pinctrl-names = "default";
217270866Simp		pinctrl-0 = <&pinctrl_edt_ft5x06_1>;
218270866Simp		interrupt-parent = <&gpio6>;
219270866Simp		interrupts = <15 0>;
220270866Simp		reset-gpios = <&gpio2 22 GPIO_ACTIVE_LOW>;
221270866Simp		wake-gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>;
222270866Simp	};
223270866Simp
224270866Simp	touchscreen: tsc2007@48 {
225270866Simp		compatible = "ti,tsc2007";
226270866Simp		reg = <0x48>;
227270866Simp		pinctrl-names = "default";
228270866Simp		pinctrl-0 = <&pinctrl_tsc2007>;
229270866Simp		interrupt-parent = <&gpio3>;
230270866Simp		interrupts = <26 0>;
231270866Simp		gpios = <&gpio3 26 GPIO_ACTIVE_LOW>;
232270866Simp		ti,x-plate-ohms = <660>;
233270866Simp		linux,wakeup;
234270866Simp	};
235270866Simp};
236270866Simp
237270866Simp&iomuxc {
238270866Simp	imx53-tx53-x03x {
239270866Simp		pinctrl_edt_ft5x06_1: edt-ft5x06grp-1 {
240270866Simp			fsl,pins = <
241270866Simp				MX53_PAD_NANDF_CS2__GPIO6_15 0x1f0 /* Interrupt */
242270866Simp				MX53_PAD_EIM_A16__GPIO2_22   0x04 /* Reset */
243270866Simp				MX53_PAD_EIM_A17__GPIO2_21   0x04 /* Wake */
244270866Simp			>;
245270866Simp		};
246270866Simp
247270866Simp		pinctrl_kpp: kppgrp {
248270866Simp			fsl,pins = <
249270866Simp				MX53_PAD_GPIO_9__KPP_COL_6 0x1f4
250270866Simp				MX53_PAD_GPIO_4__KPP_COL_7 0x1f4
251270866Simp				MX53_PAD_KEY_COL2__KPP_COL_2 0x1f4
252270866Simp				MX53_PAD_KEY_COL3__KPP_COL_3 0x1f4
253270866Simp				MX53_PAD_GPIO_2__KPP_ROW_6 0x1f4
254270866Simp				MX53_PAD_GPIO_5__KPP_ROW_7 0x1f4
255270866Simp				MX53_PAD_KEY_ROW2__KPP_ROW_2 0x1f4
256270866Simp				MX53_PAD_KEY_ROW3__KPP_ROW_3 0x1f4
257270866Simp			>;
258270866Simp		};
259270866Simp
260270866Simp		pinctrl_rgb24_vga1: rgb24-vgagrp1 {
261270866Simp			fsl,pins = <
262270866Simp				MX53_PAD_DI0_DISP_CLK__IPU_DI0_DISP_CLK		0x5
263270866Simp				MX53_PAD_DI0_PIN15__IPU_DI0_PIN15		0x5
264270866Simp				MX53_PAD_DI0_PIN2__IPU_DI0_PIN2			0x5
265270866Simp				MX53_PAD_DI0_PIN3__IPU_DI0_PIN3			0x5
266270866Simp				MX53_PAD_DISP0_DAT0__IPU_DISP0_DAT_0		0x5
267270866Simp				MX53_PAD_DISP0_DAT1__IPU_DISP0_DAT_1		0x5
268270866Simp				MX53_PAD_DISP0_DAT2__IPU_DISP0_DAT_2		0x5
269270866Simp				MX53_PAD_DISP0_DAT3__IPU_DISP0_DAT_3		0x5
270270866Simp				MX53_PAD_DISP0_DAT4__IPU_DISP0_DAT_4		0x5
271270866Simp				MX53_PAD_DISP0_DAT5__IPU_DISP0_DAT_5		0x5
272270866Simp				MX53_PAD_DISP0_DAT6__IPU_DISP0_DAT_6		0x5
273270866Simp				MX53_PAD_DISP0_DAT7__IPU_DISP0_DAT_7		0x5
274270866Simp				MX53_PAD_DISP0_DAT8__IPU_DISP0_DAT_8		0x5
275270866Simp				MX53_PAD_DISP0_DAT9__IPU_DISP0_DAT_9		0x5
276270866Simp				MX53_PAD_DISP0_DAT10__IPU_DISP0_DAT_10		0x5
277270866Simp				MX53_PAD_DISP0_DAT11__IPU_DISP0_DAT_11		0x5
278270866Simp				MX53_PAD_DISP0_DAT12__IPU_DISP0_DAT_12		0x5
279270866Simp				MX53_PAD_DISP0_DAT13__IPU_DISP0_DAT_13		0x5
280270866Simp				MX53_PAD_DISP0_DAT14__IPU_DISP0_DAT_14		0x5
281270866Simp				MX53_PAD_DISP0_DAT15__IPU_DISP0_DAT_15		0x5
282270866Simp				MX53_PAD_DISP0_DAT16__IPU_DISP0_DAT_16		0x5
283270866Simp				MX53_PAD_DISP0_DAT17__IPU_DISP0_DAT_17		0x5
284270866Simp				MX53_PAD_DISP0_DAT18__IPU_DISP0_DAT_18		0x5
285270866Simp				MX53_PAD_DISP0_DAT19__IPU_DISP0_DAT_19		0x5
286270866Simp				MX53_PAD_DISP0_DAT20__IPU_DISP0_DAT_20		0x5
287270866Simp				MX53_PAD_DISP0_DAT21__IPU_DISP0_DAT_21		0x5
288270866Simp				MX53_PAD_DISP0_DAT22__IPU_DISP0_DAT_22		0x5
289270866Simp				MX53_PAD_DISP0_DAT23__IPU_DISP0_DAT_23		0x5
290270866Simp			>;
291270866Simp		};
292270866Simp
293270866Simp		pinctrl_tsc2007: tsc2007grp {
294270866Simp			fsl,pins = <
295270866Simp				MX53_PAD_EIM_D26__GPIO3_26 0x1f0 /* Interrupt */
296270866Simp			>;
297270866Simp		};
298270866Simp	};
299270866Simp};
300270866Simp
301270866Simp&ipu_di0_disp0 {
302270866Simp	remote-endpoint = <&display0_in>;
303270866Simp};
304270866Simp
305270866Simp&kpp {
306270866Simp	pinctrl-names = "default";
307270866Simp	pinctrl-0 = <&pinctrl_kpp>;
308270866Simp	/* sample keymap */
309270866Simp	/* row/col 0,1 are mapped to KPP row/col 6,7 */
310270866Simp	linux,keymap = <
311270866Simp		MATRIX_KEY(6, 6, KEY_POWER)
312270866Simp		MATRIX_KEY(6, 7, KEY_KP0)
313270866Simp		MATRIX_KEY(6, 2, KEY_KP1)
314270866Simp		MATRIX_KEY(6, 3, KEY_KP2)
315270866Simp		MATRIX_KEY(7, 6, KEY_KP3)
316270866Simp		MATRIX_KEY(7, 7, KEY_KP4)
317270866Simp		MATRIX_KEY(7, 2, KEY_KP5)
318270866Simp		MATRIX_KEY(7, 3, KEY_KP6)
319270866Simp		MATRIX_KEY(2, 6, KEY_KP7)
320270866Simp		MATRIX_KEY(2, 7, KEY_KP8)
321270866Simp		MATRIX_KEY(2, 2, KEY_KP9)
322270866Simp	>;
323270866Simp	status = "okay";
324270866Simp};
325