1*724ba675SRob Herring/*
2*724ba675SRob Herring * Copyright 2013-2017 Lothar Waßmann <LW@KARO-electronics.de>
3*724ba675SRob Herring *
4*724ba675SRob Herring * This file is dual-licensed: you can use it either under the terms
5*724ba675SRob Herring * of the GPL or the X11 license, at your option. Note that this dual
6*724ba675SRob Herring * licensing only applies to this file, and not this project as a
7*724ba675SRob Herring * whole.
8*724ba675SRob Herring *
9*724ba675SRob Herring *  a) This file is free software; you can redistribute it and/or
10*724ba675SRob Herring *     modify it under the terms of the GNU General Public License
11*724ba675SRob Herring *     version 2 as published by the Free Software Foundation.
12*724ba675SRob Herring *
13*724ba675SRob Herring *     This file is distributed in the hope that it will be useful,
14*724ba675SRob Herring *     but WITHOUT ANY WARRANTY; without even the implied warranty of
15*724ba675SRob Herring *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16*724ba675SRob Herring *     GNU General Public License for more details.
17*724ba675SRob Herring *
18*724ba675SRob Herring * Or, alternatively,
19*724ba675SRob Herring *
20*724ba675SRob Herring *  b) Permission is hereby granted, free of charge, to any person
21*724ba675SRob Herring *     obtaining a copy of this software and associated documentation
22*724ba675SRob Herring *     files (the "Software"), to deal in the Software without
23*724ba675SRob Herring *     restriction, including without limitation the rights to use,
24*724ba675SRob Herring *     copy, modify, merge, publish, distribute, sublicense, and/or
25*724ba675SRob Herring *     sell copies of the Software, and to permit persons to whom the
26*724ba675SRob Herring *     Software is furnished to do so, subject to the following
27*724ba675SRob Herring *     conditions:
28*724ba675SRob Herring *
29*724ba675SRob Herring *     The above copyright notice and this permission notice shall be
30*724ba675SRob Herring *     included in all copies or substantial portions of the Software.
31*724ba675SRob Herring *
32*724ba675SRob Herring *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
33*724ba675SRob Herring *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
34*724ba675SRob Herring *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
35*724ba675SRob Herring *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
36*724ba675SRob Herring *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
37*724ba675SRob Herring *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
38*724ba675SRob Herring *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
39*724ba675SRob Herring *     OTHER DEALINGS IN THE SOFTWARE.
40*724ba675SRob Herring */
41*724ba675SRob Herring
42*724ba675SRob Herring/dts-v1/;
43*724ba675SRob Herring#include "imx53-tx53.dtsi"
44*724ba675SRob Herring#include <dt-bindings/input/input.h>
45*724ba675SRob Herring#include <dt-bindings/interrupt-controller/irq.h>
46*724ba675SRob Herring#include <dt-bindings/pwm/pwm.h>
47*724ba675SRob Herring
48*724ba675SRob Herring/ {
49*724ba675SRob Herring	model = "Ka-Ro electronics TX53 module (LCD)";
50*724ba675SRob Herring	compatible = "karo,tx53", "fsl,imx53";
51*724ba675SRob Herring
52*724ba675SRob Herring	aliases {
53*724ba675SRob Herring		display = &display;
54*724ba675SRob Herring	};
55*724ba675SRob Herring
56*724ba675SRob Herring	display: disp0 {
57*724ba675SRob Herring		compatible = "fsl,imx-parallel-display";
58*724ba675SRob Herring		interface-pix-fmt = "rgb24";
59*724ba675SRob Herring		pinctrl-names = "default";
60*724ba675SRob Herring		pinctrl-0 = <&pinctrl_rgb24_vga1>;
61*724ba675SRob Herring		status = "okay";
62*724ba675SRob Herring
63*724ba675SRob Herring		port {
64*724ba675SRob Herring			display0_in: endpoint {
65*724ba675SRob Herring				remote-endpoint = <&ipu_di0_disp0>;
66*724ba675SRob Herring			};
67*724ba675SRob Herring		};
68*724ba675SRob Herring
69*724ba675SRob Herring		display-timings {
70*724ba675SRob Herring			VGA {
71*724ba675SRob Herring				clock-frequency = <25200000>;
72*724ba675SRob Herring				hactive = <640>;
73*724ba675SRob Herring				vactive = <480>;
74*724ba675SRob Herring				hback-porch = <48>;
75*724ba675SRob Herring				hsync-len = <96>;
76*724ba675SRob Herring				hfront-porch = <16>;
77*724ba675SRob Herring				vback-porch = <31>;
78*724ba675SRob Herring				vsync-len = <2>;
79*724ba675SRob Herring				vfront-porch = <12>;
80*724ba675SRob Herring				hsync-active = <0>;
81*724ba675SRob Herring				vsync-active = <0>;
82*724ba675SRob Herring				de-active = <1>;
83*724ba675SRob Herring				pixelclk-active = <0>;
84*724ba675SRob Herring			};
85*724ba675SRob Herring
86*724ba675SRob Herring			ETV570 {
87*724ba675SRob Herring				clock-frequency = <25200000>;
88*724ba675SRob Herring				hactive = <640>;
89*724ba675SRob Herring				vactive = <480>;
90*724ba675SRob Herring				hback-porch = <114>;
91*724ba675SRob Herring				hsync-len = <30>;
92*724ba675SRob Herring				hfront-porch = <16>;
93*724ba675SRob Herring				vback-porch = <32>;
94*724ba675SRob Herring				vsync-len = <3>;
95*724ba675SRob Herring				vfront-porch = <10>;
96*724ba675SRob Herring				hsync-active = <0>;
97*724ba675SRob Herring				vsync-active = <0>;
98*724ba675SRob Herring				de-active = <1>;
99*724ba675SRob Herring				pixelclk-active = <0>;
100*724ba675SRob Herring			};
101*724ba675SRob Herring
102*724ba675SRob Herring			ET0350 {
103*724ba675SRob Herring				clock-frequency = <6413760>;
104*724ba675SRob Herring				hactive = <320>;
105*724ba675SRob Herring				vactive = <240>;
106*724ba675SRob Herring				hback-porch = <34>;
107*724ba675SRob Herring				hsync-len = <34>;
108*724ba675SRob Herring				hfront-porch = <20>;
109*724ba675SRob Herring				vback-porch = <15>;
110*724ba675SRob Herring				vsync-len = <3>;
111*724ba675SRob Herring				vfront-porch = <4>;
112*724ba675SRob Herring				hsync-active = <0>;
113*724ba675SRob Herring				vsync-active = <0>;
114*724ba675SRob Herring				de-active = <1>;
115*724ba675SRob Herring				pixelclk-active = <0>;
116*724ba675SRob Herring			};
117*724ba675SRob Herring
118*724ba675SRob Herring			ET0430 {
119*724ba675SRob Herring				clock-frequency = <9009000>;
120*724ba675SRob Herring				hactive = <480>;
121*724ba675SRob Herring				vactive = <272>;
122*724ba675SRob Herring				hback-porch = <2>;
123*724ba675SRob Herring				hsync-len = <41>;
124*724ba675SRob Herring				hfront-porch = <2>;
125*724ba675SRob Herring				vback-porch = <2>;
126*724ba675SRob Herring				vsync-len = <10>;
127*724ba675SRob Herring				vfront-porch = <2>;
128*724ba675SRob Herring				hsync-active = <0>;
129*724ba675SRob Herring				vsync-active = <0>;
130*724ba675SRob Herring				de-active = <1>;
131*724ba675SRob Herring				pixelclk-active = <1>;
132*724ba675SRob Herring			};
133*724ba675SRob Herring
134*724ba675SRob Herring			ET0500 {
135*724ba675SRob Herring				clock-frequency = <33264000>;
136*724ba675SRob Herring				hactive = <800>;
137*724ba675SRob Herring				vactive = <480>;
138*724ba675SRob Herring				hback-porch = <88>;
139*724ba675SRob Herring				hsync-len = <128>;
140*724ba675SRob Herring				hfront-porch = <40>;
141*724ba675SRob Herring				vback-porch = <33>;
142*724ba675SRob Herring				vsync-len = <2>;
143*724ba675SRob Herring				vfront-porch = <10>;
144*724ba675SRob Herring				hsync-active = <0>;
145*724ba675SRob Herring				vsync-active = <0>;
146*724ba675SRob Herring				de-active = <1>;
147*724ba675SRob Herring				pixelclk-active = <0>;
148*724ba675SRob Herring			};
149*724ba675SRob Herring
150*724ba675SRob Herring			ET0700 { /* same as ET0500 */
151*724ba675SRob Herring				clock-frequency = <33264000>;
152*724ba675SRob Herring				hactive = <800>;
153*724ba675SRob Herring				vactive = <480>;
154*724ba675SRob Herring				hback-porch = <88>;
155*724ba675SRob Herring				hsync-len = <128>;
156*724ba675SRob Herring				hfront-porch = <40>;
157*724ba675SRob Herring				vback-porch = <33>;
158*724ba675SRob Herring				vsync-len = <2>;
159*724ba675SRob Herring				vfront-porch = <10>;
160*724ba675SRob Herring				hsync-active = <0>;
161*724ba675SRob Herring				vsync-active = <0>;
162*724ba675SRob Herring				de-active = <1>;
163*724ba675SRob Herring				pixelclk-active = <0>;
164*724ba675SRob Herring			};
165*724ba675SRob Herring
166*724ba675SRob Herring			ETQ570 {
167*724ba675SRob Herring				clock-frequency = <6596040>;
168*724ba675SRob Herring				hactive = <320>;
169*724ba675SRob Herring				vactive = <240>;
170*724ba675SRob Herring				hback-porch = <38>;
171*724ba675SRob Herring				hsync-len = <30>;
172*724ba675SRob Herring				hfront-porch = <30>;
173*724ba675SRob Herring				vback-porch = <16>;
174*724ba675SRob Herring				vsync-len = <3>;
175*724ba675SRob Herring				vfront-porch = <4>;
176*724ba675SRob Herring				hsync-active = <0>;
177*724ba675SRob Herring				vsync-active = <0>;
178*724ba675SRob Herring				de-active = <1>;
179*724ba675SRob Herring				pixelclk-active = <0>;
180*724ba675SRob Herring			};
181*724ba675SRob Herring		};
182*724ba675SRob Herring	};
183*724ba675SRob Herring
184*724ba675SRob Herring	backlight: backlight {
185*724ba675SRob Herring		compatible = "pwm-backlight";
186*724ba675SRob Herring		pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
187*724ba675SRob Herring		power-supply = <&reg_3v3>;
188*724ba675SRob Herring		brightness-levels = <
189*724ba675SRob Herring			  0  1  2  3  4  5  6  7  8  9
190*724ba675SRob Herring			 10 11 12 13 14 15 16 17 18 19
191*724ba675SRob Herring			 20 21 22 23 24 25 26 27 28 29
192*724ba675SRob Herring			 30 31 32 33 34 35 36 37 38 39
193*724ba675SRob Herring			 40 41 42 43 44 45 46 47 48 49
194*724ba675SRob Herring			 50 51 52 53 54 55 56 57 58 59
195*724ba675SRob Herring			 60 61 62 63 64 65 66 67 68 69
196*724ba675SRob Herring			 70 71 72 73 74 75 76 77 78 79
197*724ba675SRob Herring			 80 81 82 83 84 85 86 87 88 89
198*724ba675SRob Herring			 90 91 92 93 94 95 96 97 98 99
199*724ba675SRob Herring			100
200*724ba675SRob Herring		>;
201*724ba675SRob Herring		default-brightness-level = <50>;
202*724ba675SRob Herring	};
203*724ba675SRob Herring
204*724ba675SRob Herring	reg_lcd_pwr: regulator-lcd-pwr {
205*724ba675SRob Herring		compatible = "regulator-fixed";
206*724ba675SRob Herring		regulator-name = "LCD POWER";
207*724ba675SRob Herring		regulator-min-microvolt = <3300000>;
208*724ba675SRob Herring		regulator-max-microvolt = <3300000>;
209*724ba675SRob Herring		gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
210*724ba675SRob Herring		enable-active-high;
211*724ba675SRob Herring		regulator-boot-on;
212*724ba675SRob Herring	};
213*724ba675SRob Herring
214*724ba675SRob Herring	reg_lcd_reset: regulator-lcd-reset {
215*724ba675SRob Herring		compatible = "regulator-fixed";
216*724ba675SRob Herring		regulator-name = "LCD RESET";
217*724ba675SRob Herring		regulator-min-microvolt = <3300000>;
218*724ba675SRob Herring		regulator-max-microvolt = <3300000>;
219*724ba675SRob Herring		gpio = <&gpio3 29 GPIO_ACTIVE_HIGH>;
220*724ba675SRob Herring		enable-active-high;
221*724ba675SRob Herring		regulator-boot-on;
222*724ba675SRob Herring	};
223*724ba675SRob Herring};
224*724ba675SRob Herring
225*724ba675SRob Herring&i2c3 {
226*724ba675SRob Herring	pinctrl-names = "default";
227*724ba675SRob Herring	pinctrl-0 = <&pinctrl_i2c3>;
228*724ba675SRob Herring	status = "okay";
229*724ba675SRob Herring
230*724ba675SRob Herring	sgtl5000: codec@a {
231*724ba675SRob Herring		compatible = "fsl,sgtl5000";
232*724ba675SRob Herring		reg = <0x0a>;
233*724ba675SRob Herring		#sound-dai-cells = <0>;
234*724ba675SRob Herring		VDDA-supply = <&reg_2v5>;
235*724ba675SRob Herring		VDDIO-supply = <&reg_3v3>;
236*724ba675SRob Herring		clocks = <&mclk>;
237*724ba675SRob Herring	};
238*724ba675SRob Herring
239*724ba675SRob Herring	polytouch: edt-ft5x06@38 {
240*724ba675SRob Herring		compatible = "edt,edt-ft5x06";
241*724ba675SRob Herring		reg = <0x38>;
242*724ba675SRob Herring		pinctrl-names = "default";
243*724ba675SRob Herring		pinctrl-0 = <&pinctrl_edt_ft5x06_1>;
244*724ba675SRob Herring		interrupt-parent = <&gpio6>;
245*724ba675SRob Herring		interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
246*724ba675SRob Herring		reset-gpios = <&gpio2 22 GPIO_ACTIVE_LOW>;
247*724ba675SRob Herring		wake-gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>;
248*724ba675SRob Herring		wakeup-source;
249*724ba675SRob Herring	};
250*724ba675SRob Herring
251*724ba675SRob Herring	touchscreen: tsc2007@48 {
252*724ba675SRob Herring		compatible = "ti,tsc2007";
253*724ba675SRob Herring		reg = <0x48>;
254*724ba675SRob Herring		pinctrl-names = "default";
255*724ba675SRob Herring		pinctrl-0 = <&pinctrl_tsc2007>;
256*724ba675SRob Herring		interrupt-parent = <&gpio3>;
257*724ba675SRob Herring		interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
258*724ba675SRob Herring		gpios = <&gpio3 26 GPIO_ACTIVE_LOW>;
259*724ba675SRob Herring		ti,x-plate-ohms = <660>;
260*724ba675SRob Herring		wakeup-source;
261*724ba675SRob Herring	};
262*724ba675SRob Herring};
263*724ba675SRob Herring
264*724ba675SRob Herring&iomuxc {
265*724ba675SRob Herring	imx53-tx53-x03x {
266*724ba675SRob Herring		pinctrl_edt_ft5x06_1: edt-ft5x06grp-1 {
267*724ba675SRob Herring			fsl,pins = <
268*724ba675SRob Herring				MX53_PAD_NANDF_CS2__GPIO6_15 0x1f0 /* Interrupt */
269*724ba675SRob Herring				MX53_PAD_EIM_A16__GPIO2_22   0x04 /* Reset */
270*724ba675SRob Herring				MX53_PAD_EIM_A17__GPIO2_21   0x04 /* Wake */
271*724ba675SRob Herring			>;
272*724ba675SRob Herring		};
273*724ba675SRob Herring
274*724ba675SRob Herring		pinctrl_kpp: kppgrp {
275*724ba675SRob Herring			fsl,pins = <
276*724ba675SRob Herring				MX53_PAD_GPIO_9__KPP_COL_6 0x1f4
277*724ba675SRob Herring				MX53_PAD_GPIO_4__KPP_COL_7 0x1f4
278*724ba675SRob Herring				MX53_PAD_KEY_COL2__KPP_COL_2 0x1f4
279*724ba675SRob Herring				MX53_PAD_KEY_COL3__KPP_COL_3 0x1f4
280*724ba675SRob Herring				MX53_PAD_GPIO_2__KPP_ROW_6 0x1f4
281*724ba675SRob Herring				MX53_PAD_GPIO_5__KPP_ROW_7 0x1f4
282*724ba675SRob Herring				MX53_PAD_KEY_ROW2__KPP_ROW_2 0x1f4
283*724ba675SRob Herring				MX53_PAD_KEY_ROW3__KPP_ROW_3 0x1f4
284*724ba675SRob Herring			>;
285*724ba675SRob Herring		};
286*724ba675SRob Herring
287*724ba675SRob Herring		pinctrl_rgb24_vga1: rgb24-vgagrp1 {
288*724ba675SRob Herring			fsl,pins = <
289*724ba675SRob Herring				MX53_PAD_DI0_DISP_CLK__IPU_DI0_DISP_CLK		0x5
290*724ba675SRob Herring				MX53_PAD_DI0_PIN15__IPU_DI0_PIN15		0x5
291*724ba675SRob Herring				MX53_PAD_DI0_PIN2__IPU_DI0_PIN2			0x5
292*724ba675SRob Herring				MX53_PAD_DI0_PIN3__IPU_DI0_PIN3			0x5
293*724ba675SRob Herring				MX53_PAD_DISP0_DAT0__IPU_DISP0_DAT_0		0x5
294*724ba675SRob Herring				MX53_PAD_DISP0_DAT1__IPU_DISP0_DAT_1		0x5
295*724ba675SRob Herring				MX53_PAD_DISP0_DAT2__IPU_DISP0_DAT_2		0x5
296*724ba675SRob Herring				MX53_PAD_DISP0_DAT3__IPU_DISP0_DAT_3		0x5
297*724ba675SRob Herring				MX53_PAD_DISP0_DAT4__IPU_DISP0_DAT_4		0x5
298*724ba675SRob Herring				MX53_PAD_DISP0_DAT5__IPU_DISP0_DAT_5		0x5
299*724ba675SRob Herring				MX53_PAD_DISP0_DAT6__IPU_DISP0_DAT_6		0x5
300*724ba675SRob Herring				MX53_PAD_DISP0_DAT7__IPU_DISP0_DAT_7		0x5
301*724ba675SRob Herring				MX53_PAD_DISP0_DAT8__IPU_DISP0_DAT_8		0x5
302*724ba675SRob Herring				MX53_PAD_DISP0_DAT9__IPU_DISP0_DAT_9		0x5
303*724ba675SRob Herring				MX53_PAD_DISP0_DAT10__IPU_DISP0_DAT_10		0x5
304*724ba675SRob Herring				MX53_PAD_DISP0_DAT11__IPU_DISP0_DAT_11		0x5
305*724ba675SRob Herring				MX53_PAD_DISP0_DAT12__IPU_DISP0_DAT_12		0x5
306*724ba675SRob Herring				MX53_PAD_DISP0_DAT13__IPU_DISP0_DAT_13		0x5
307*724ba675SRob Herring				MX53_PAD_DISP0_DAT14__IPU_DISP0_DAT_14		0x5
308*724ba675SRob Herring				MX53_PAD_DISP0_DAT15__IPU_DISP0_DAT_15		0x5
309*724ba675SRob Herring				MX53_PAD_DISP0_DAT16__IPU_DISP0_DAT_16		0x5
310*724ba675SRob Herring				MX53_PAD_DISP0_DAT17__IPU_DISP0_DAT_17		0x5
311*724ba675SRob Herring				MX53_PAD_DISP0_DAT18__IPU_DISP0_DAT_18		0x5
312*724ba675SRob Herring				MX53_PAD_DISP0_DAT19__IPU_DISP0_DAT_19		0x5
313*724ba675SRob Herring				MX53_PAD_DISP0_DAT20__IPU_DISP0_DAT_20		0x5
314*724ba675SRob Herring				MX53_PAD_DISP0_DAT21__IPU_DISP0_DAT_21		0x5
315*724ba675SRob Herring				MX53_PAD_DISP0_DAT22__IPU_DISP0_DAT_22		0x5
316*724ba675SRob Herring				MX53_PAD_DISP0_DAT23__IPU_DISP0_DAT_23		0x5
317*724ba675SRob Herring			>;
318*724ba675SRob Herring		};
319*724ba675SRob Herring
320*724ba675SRob Herring		pinctrl_tsc2007: tsc2007grp {
321*724ba675SRob Herring			fsl,pins = <
322*724ba675SRob Herring				MX53_PAD_EIM_D26__GPIO3_26 0x1f0 /* Interrupt */
323*724ba675SRob Herring			>;
324*724ba675SRob Herring		};
325*724ba675SRob Herring	};
326*724ba675SRob Herring};
327*724ba675SRob Herring
328*724ba675SRob Herring&ipu_di0_disp0 {
329*724ba675SRob Herring	remote-endpoint = <&display0_in>;
330*724ba675SRob Herring};
331*724ba675SRob Herring
332*724ba675SRob Herring&kpp {
333*724ba675SRob Herring	pinctrl-names = "default";
334*724ba675SRob Herring	pinctrl-0 = <&pinctrl_kpp>;
335*724ba675SRob Herring	/* sample keymap */
336*724ba675SRob Herring	/* row/col 0,1 are mapped to KPP row/col 6,7 */
337*724ba675SRob Herring	linux,keymap = <
338*724ba675SRob Herring		MATRIX_KEY(6, 6, KEY_POWER)
339*724ba675SRob Herring		MATRIX_KEY(6, 7, KEY_KP0)
340*724ba675SRob Herring		MATRIX_KEY(6, 2, KEY_KP1)
341*724ba675SRob Herring		MATRIX_KEY(6, 3, KEY_KP2)
342*724ba675SRob Herring		MATRIX_KEY(7, 6, KEY_KP3)
343*724ba675SRob Herring		MATRIX_KEY(7, 7, KEY_KP4)
344*724ba675SRob Herring		MATRIX_KEY(7, 2, KEY_KP5)
345*724ba675SRob Herring		MATRIX_KEY(7, 3, KEY_KP6)
346*724ba675SRob Herring		MATRIX_KEY(2, 6, KEY_KP7)
347*724ba675SRob Herring		MATRIX_KEY(2, 7, KEY_KP8)
348*724ba675SRob Herring		MATRIX_KEY(2, 2, KEY_KP9)
349*724ba675SRob Herring	>;
350*724ba675SRob Herring	status = "okay";
351*724ba675SRob Herring};
352