1/*
2 * Copyright 2013 Lothar Wa��mann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx53-tx53.dtsi"
14#include <dt-bindings/input/input.h>
15#include <dt-bindings/interrupt-controller/irq.h>
16#include <dt-bindings/pwm/pwm.h>
17
18/ {
19	model = "Ka-Ro electronics TX53 module (LCD)";
20	compatible = "karo,tx53", "fsl,imx53";
21
22	aliases {
23		display = &display;
24	};
25
26	soc {
27		display: display@di0 {
28			compatible = "fsl,imx-parallel-display";
29			interface-pix-fmt = "rgb24";
30			pinctrl-names = "default";
31			pinctrl-0 = <&pinctrl_rgb24_vga1>;
32			status = "okay";
33
34			port {
35				display0_in: endpoint {
36					remote-endpoint = <&ipu_di0_disp0>;
37				};
38			};
39
40			display-timings {
41				VGA {
42					clock-frequency = <25200000>;
43					hactive = <640>;
44					vactive = <480>;
45					hback-porch = <48>;
46					hsync-len = <96>;
47					hfront-porch = <16>;
48					vback-porch = <31>;
49					vsync-len = <2>;
50					vfront-porch = <12>;
51					hsync-active = <0>;
52					vsync-active = <0>;
53					de-active = <1>;
54					pixelclk-active = <0>;
55				};
56
57				ETV570 {
58					clock-frequency = <25200000>;
59					hactive = <640>;
60					vactive = <480>;
61					hback-porch = <114>;
62					hsync-len = <30>;
63					hfront-porch = <16>;
64					vback-porch = <32>;
65					vsync-len = <3>;
66					vfront-porch = <10>;
67					hsync-active = <0>;
68					vsync-active = <0>;
69					de-active = <1>;
70					pixelclk-active = <0>;
71				};
72
73				ET0350 {
74					clock-frequency = <6413760>;
75					hactive = <320>;
76					vactive = <240>;
77					hback-porch = <34>;
78					hsync-len = <34>;
79					hfront-porch = <20>;
80					vback-porch = <15>;
81					vsync-len = <3>;
82					vfront-porch = <4>;
83					hsync-active = <0>;
84					vsync-active = <0>;
85					de-active = <1>;
86					pixelclk-active = <0>;
87				};
88
89				ET0430 {
90					clock-frequency = <9009000>;
91					hactive = <480>;
92					vactive = <272>;
93					hback-porch = <2>;
94					hsync-len = <41>;
95					hfront-porch = <2>;
96					vback-porch = <2>;
97					vsync-len = <10>;
98					vfront-porch = <2>;
99					hsync-active = <0>;
100					vsync-active = <0>;
101					de-active = <1>;
102					pixelclk-active = <1>;
103				};
104
105				ET0500 {
106					clock-frequency = <33264000>;
107					hactive = <800>;
108					vactive = <480>;
109					hback-porch = <88>;
110					hsync-len = <128>;
111					hfront-porch = <40>;
112					vback-porch = <33>;
113					vsync-len = <2>;
114					vfront-porch = <10>;
115					hsync-active = <0>;
116					vsync-active = <0>;
117					de-active = <1>;
118					pixelclk-active = <0>;
119				};
120
121				ET0700 { /* same as ET0500 */
122					clock-frequency = <33264000>;
123					hactive = <800>;
124					vactive = <480>;
125					hback-porch = <88>;
126					hsync-len = <128>;
127					hfront-porch = <40>;
128					vback-porch = <33>;
129					vsync-len = <2>;
130					vfront-porch = <10>;
131					hsync-active = <0>;
132					vsync-active = <0>;
133					de-active = <1>;
134					pixelclk-active = <0>;
135				};
136
137				ETQ570 {
138					clock-frequency = <6596040>;
139					hactive = <320>;
140					vactive = <240>;
141					hback-porch = <38>;
142					hsync-len = <30>;
143					hfront-porch = <30>;
144					vback-porch = <16>;
145					vsync-len = <3>;
146					vfront-porch = <4>;
147					hsync-active = <0>;
148					vsync-active = <0>;
149					de-active = <1>;
150					pixelclk-active = <0>;
151				};
152			};
153		};
154	};
155
156	backlight: backlight {
157		compatible = "pwm-backlight";
158		pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
159		power-supply = <&reg_3v3>;
160		brightness-levels = <
161			  0  1  2  3  4  5  6  7  8  9
162			 10 11 12 13 14 15 16 17 18 19
163			 20 21 22 23 24 25 26 27 28 29
164			 30 31 32 33 34 35 36 37 38 39
165			 40 41 42 43 44 45 46 47 48 49
166			 50 51 52 53 54 55 56 57 58 59
167			 60 61 62 63 64 65 66 67 68 69
168			 70 71 72 73 74 75 76 77 78 79
169			 80 81 82 83 84 85 86 87 88 89
170			 90 91 92 93 94 95 96 97 98 99
171			100
172		>;
173		default-brightness-level = <50>;
174	};
175
176	regulators {
177		reg_lcd_pwr: regulator@5 {
178			compatible = "regulator-fixed";
179			reg = <5>;
180			regulator-name = "LCD POWER";
181			regulator-min-microvolt = <3300000>;
182			regulator-max-microvolt = <3300000>;
183			gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
184			enable-active-high;
185			regulator-boot-on;
186		};
187
188		reg_lcd_reset: regulator@6 {
189			compatible = "regulator-fixed";
190			reg = <6>;
191			regulator-name = "LCD RESET";
192			regulator-min-microvolt = <3300000>;
193			regulator-max-microvolt = <3300000>;
194			gpio = <&gpio3 29 GPIO_ACTIVE_HIGH>;
195			enable-active-high;
196			regulator-boot-on;
197		};
198	};
199};
200
201&i2c3 {
202	pinctrl-names = "default";
203	pinctrl-0 = <&pinctrl_i2c3>;
204	status = "okay";
205
206	sgtl5000: codec@0a {
207		compatible = "fsl,sgtl5000";
208		reg = <0x0a>;
209		VDDA-supply = <&reg_2v5>;
210		VDDIO-supply = <&reg_3v3>;
211		clocks = <&mclk>;
212	};
213
214	polytouch: edt-ft5x06@38 {
215		compatible = "edt,edt-ft5x06";
216		reg = <0x38>;
217		pinctrl-names = "default";
218		pinctrl-0 = <&pinctrl_edt_ft5x06_1>;
219		interrupt-parent = <&gpio6>;
220		interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
221		reset-gpios = <&gpio2 22 GPIO_ACTIVE_LOW>;
222		wake-gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>;
223	};
224
225	touchscreen: tsc2007@48 {
226		compatible = "ti,tsc2007";
227		reg = <0x48>;
228		pinctrl-names = "default";
229		pinctrl-0 = <&pinctrl_tsc2007>;
230		interrupt-parent = <&gpio3>;
231		interrupts = <26 0>;
232		gpios = <&gpio3 26 GPIO_ACTIVE_LOW>;
233		ti,x-plate-ohms = <660>;
234		linux,wakeup;
235	};
236};
237
238&iomuxc {
239	imx53-tx53-x03x {
240		pinctrl_edt_ft5x06_1: edt-ft5x06grp-1 {
241			fsl,pins = <
242				MX53_PAD_NANDF_CS2__GPIO6_15 0x1f0 /* Interrupt */
243				MX53_PAD_EIM_A16__GPIO2_22   0x04 /* Reset */
244				MX53_PAD_EIM_A17__GPIO2_21   0x04 /* Wake */
245			>;
246		};
247
248		pinctrl_kpp: kppgrp {
249			fsl,pins = <
250				MX53_PAD_GPIO_9__KPP_COL_6 0x1f4
251				MX53_PAD_GPIO_4__KPP_COL_7 0x1f4
252				MX53_PAD_KEY_COL2__KPP_COL_2 0x1f4
253				MX53_PAD_KEY_COL3__KPP_COL_3 0x1f4
254				MX53_PAD_GPIO_2__KPP_ROW_6 0x1f4
255				MX53_PAD_GPIO_5__KPP_ROW_7 0x1f4
256				MX53_PAD_KEY_ROW2__KPP_ROW_2 0x1f4
257				MX53_PAD_KEY_ROW3__KPP_ROW_3 0x1f4
258			>;
259		};
260
261		pinctrl_rgb24_vga1: rgb24-vgagrp1 {
262			fsl,pins = <
263				MX53_PAD_DI0_DISP_CLK__IPU_DI0_DISP_CLK		0x5
264				MX53_PAD_DI0_PIN15__IPU_DI0_PIN15		0x5
265				MX53_PAD_DI0_PIN2__IPU_DI0_PIN2			0x5
266				MX53_PAD_DI0_PIN3__IPU_DI0_PIN3			0x5
267				MX53_PAD_DISP0_DAT0__IPU_DISP0_DAT_0		0x5
268				MX53_PAD_DISP0_DAT1__IPU_DISP0_DAT_1		0x5
269				MX53_PAD_DISP0_DAT2__IPU_DISP0_DAT_2		0x5
270				MX53_PAD_DISP0_DAT3__IPU_DISP0_DAT_3		0x5
271				MX53_PAD_DISP0_DAT4__IPU_DISP0_DAT_4		0x5
272				MX53_PAD_DISP0_DAT5__IPU_DISP0_DAT_5		0x5
273				MX53_PAD_DISP0_DAT6__IPU_DISP0_DAT_6		0x5
274				MX53_PAD_DISP0_DAT7__IPU_DISP0_DAT_7		0x5
275				MX53_PAD_DISP0_DAT8__IPU_DISP0_DAT_8		0x5
276				MX53_PAD_DISP0_DAT9__IPU_DISP0_DAT_9		0x5
277				MX53_PAD_DISP0_DAT10__IPU_DISP0_DAT_10		0x5
278				MX53_PAD_DISP0_DAT11__IPU_DISP0_DAT_11		0x5
279				MX53_PAD_DISP0_DAT12__IPU_DISP0_DAT_12		0x5
280				MX53_PAD_DISP0_DAT13__IPU_DISP0_DAT_13		0x5
281				MX53_PAD_DISP0_DAT14__IPU_DISP0_DAT_14		0x5
282				MX53_PAD_DISP0_DAT15__IPU_DISP0_DAT_15		0x5
283				MX53_PAD_DISP0_DAT16__IPU_DISP0_DAT_16		0x5
284				MX53_PAD_DISP0_DAT17__IPU_DISP0_DAT_17		0x5
285				MX53_PAD_DISP0_DAT18__IPU_DISP0_DAT_18		0x5
286				MX53_PAD_DISP0_DAT19__IPU_DISP0_DAT_19		0x5
287				MX53_PAD_DISP0_DAT20__IPU_DISP0_DAT_20		0x5
288				MX53_PAD_DISP0_DAT21__IPU_DISP0_DAT_21		0x5
289				MX53_PAD_DISP0_DAT22__IPU_DISP0_DAT_22		0x5
290				MX53_PAD_DISP0_DAT23__IPU_DISP0_DAT_23		0x5
291			>;
292		};
293
294		pinctrl_tsc2007: tsc2007grp {
295			fsl,pins = <
296				MX53_PAD_EIM_D26__GPIO3_26 0x1f0 /* Interrupt */
297			>;
298		};
299	};
300};
301
302&ipu_di0_disp0 {
303	remote-endpoint = <&display0_in>;
304};
305
306&kpp {
307	pinctrl-names = "default";
308	pinctrl-0 = <&pinctrl_kpp>;
309	/* sample keymap */
310	/* row/col 0,1 are mapped to KPP row/col 6,7 */
311	linux,keymap = <
312		MATRIX_KEY(6, 6, KEY_POWER)
313		MATRIX_KEY(6, 7, KEY_KP0)
314		MATRIX_KEY(6, 2, KEY_KP1)
315		MATRIX_KEY(6, 3, KEY_KP2)
316		MATRIX_KEY(7, 6, KEY_KP3)
317		MATRIX_KEY(7, 7, KEY_KP4)
318		MATRIX_KEY(7, 2, KEY_KP5)
319		MATRIX_KEY(7, 3, KEY_KP6)
320		MATRIX_KEY(2, 6, KEY_KP7)
321		MATRIX_KEY(2, 7, KEY_KP8)
322		MATRIX_KEY(2, 2, KEY_KP9)
323	>;
324	status = "okay";
325};
326