1 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2 /*
3  * Copyright (c) 2016 Protonic Holland
4  * Copyright (c) 2020 Oleksij Rempel <kernel@pengutronix.de>, Pengutronix
5  */
6 
7 /dts-v1/;
8 #include "imx6dl.dtsi"
9 #include "imx6qdl-vicut1.dtsi"
10 
11 / {
12 	model = "Kverneland TGO";
13 	compatible = "kvg,victgo", "fsl,imx6dl";
14 
15 	gpio-keys {
16 		compatible = "gpio-keys";
17 		pinctrl-names = "default";
18 		pinctrl-0 = <&pinctrl_gpiokeys>;
19 		autorepeat;
20 
21 		key-power {
22 			label = "Power Button";
23 			gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
24 			linux,code = <KEY_POWER>;
25 			wakeup-source;
26 		};
27 
28 		key-enter {
29 			label = "Rotary Key";
30 			gpios = <&gpio2 05 GPIO_ACTIVE_LOW>;
31 			linux,code = <KEY_ENTER>;
32 			wakeup-source;
33 		};
34 	};
35 
36 	iio-hwmon {
37 		compatible = "iio-hwmon";
38 		io-channels = <&vdiv_vaccu>, <&vdiv_hitch_pos>;
39 	};
40 
41 	panel {
42 		compatible = "lg,lb070wv8";
43 		backlight = <&backlight_lcd>;
44 		power-supply = <&reg_3v3>;
45 
46 		port {
47 			panel_in: endpoint {
48 				remote-endpoint = <&lvds0_out>;
49 			};
50 		};
51 	};
52 
53 	clk50m_phy: phy-clock {
54 		compatible = "fixed-clock";
55 		#clock-cells = <0>;
56 		clock-frequency = <50000000>;
57 		clock-output-names = "enet_ref_pad";
58 	};
59 
60 	rotary-encoder {
61 		compatible = "rotary-encoder";
62 		pinctrl-0 = <&pinctrl_rotary_ch>;
63 		gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>,
64 			<&gpio2 4 GPIO_ACTIVE_HIGH>;
65 		linux,axis = <REL_WHEEL>;
66 		rotary-encoder,steps-per-period = <4>;
67 		rotary-encoder,relative-axis;
68 		rotary-encoder,rollover;
69 		wakeup-source;
70 	};
71 
72 	thermal-zones {
73 		chassis-thermal {
74 			polling-delay = <20000>;
75 			polling-delay-passive = <0>;
76 			thermal-sensors = <&tsens0>;
77 
78 			trips {
79 				alert {
80 					temperature = <105000>; /* millicelsius */
81 					hysteresis = <2000>; /* millicelsius */
82 					type = "passive";
83 				};
84 			};
85 		};
86 
87 		touch-thermal0 {
88 			polling-delay = <20000>;
89 			polling-delay-passive = <0>;
90 			thermal-sensors = <&touch_temp0>;
91 
92 			trips {
93 				alert {
94 					temperature = <105000>; /* millicelsius */
95 					hysteresis = <2000>; /* millicelsius */
96 					type = "passive";
97 				};
98 			};
99 		};
100 
101 		touch-thermal1 {
102 			polling-delay = <20000>;
103 			polling-delay-passive = <0>;
104 			thermal-sensors = <&touch_temp1>;
105 
106 			trips {
107 				alert {
108 					temperature = <105000>; /* millicelsius */
109 					hysteresis = <2000>; /* millicelsius */
110 					type = "passive";
111 				};
112 			};
113 		};
114 	};
115 
116 	touchscreen {
117 		compatible = "resistive-adc-touch";
118 		io-channels = <&adc_ts 1>, <&adc_ts 3>, <&adc_ts 4>,
119                               <&adc_ts 5>;
120 		io-channel-names = "y", "z1", "z2", "x";
121 		touchscreen-min-pressure = <64687>;
122 		touchscreen-inverted-y;
123 		touchscreen-x-plate-ohms = <300>;
124 		touchscreen-y-plate-ohms = <800>;
125 	};
126 
127 	touch_temp0: touch-temperature-sensor0 {
128 		compatible = "generic-adc-thermal";
129 		#thermal-sensor-cells = <0>;
130 		io-channels = <&adc_ts 0>;
131 		io-channel-names = "sensor-channel";
132 		temperature-lookup-table = <    (-40000) 736
133 						85000 474>;
134 	};
135 
136 	touch_temp1: touch-temperature-sensor1 {
137 		compatible = "generic-adc-thermal";
138 		#thermal-sensor-cells = <0>;
139 		io-channels = <&adc_ts 7>;
140 		io-channel-names = "sensor-channel";
141 		temperature-lookup-table = <    (-40000) 826
142 						85000 609>;
143 	};
144 
145 	vdiv_vaccu: voltage-divider-vaccu {
146 		compatible = "voltage-divider";
147 		io-channels = <&adc_ts 2>;
148 		output-ohms = <2500>;
149 		full-ohms = <64000>;
150 		#io-channel-cells = <0>;
151 	};
152 
153 	vdiv_hitch_pos: voltage-divider-hitch-pos {
154 		compatible = "voltage-divider";
155 		io-channels = <&adc_ts 6>;
156 		output-ohms = <3300>;
157 		full-ohms = <13300>;
158 		#io-channel-cells = <0>;
159 	};
160 };
161 
162 &clks {
163 	clocks = <&clk50m_phy>;
164 	clock-names = "enet_ref_pad";
165 	assigned-clocks = <&clks IMX6QDL_CLK_ENET_REF_SEL>;
166 	assigned-clock-parents = <&clk50m_phy>;
167 };
168 
169 &ecspi2 {
170 	cs-gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
171 	pinctrl-names = "default";
172 	pinctrl-0 = <&pinctrl_ecspi2>;
173 	status = "okay";
174 
175 	adc_ts: adc@0 {
176 		compatible = "ti,tsc2046e-adc";
177 		reg = <0>;
178 		pinctrl-0 = <&pinctrl_touchscreen>;
179 		pinctrl-names = "default";
180 		spi-max-frequency = <1000000>;
181 		interrupts-extended = <&gpio5 8 IRQ_TYPE_LEVEL_LOW>;
182 		#io-channel-cells = <1>;
183 
184 		#address-cells = <1>;
185 		#size-cells = <0>;
186 
187 		channel@1 {
188 			reg = <1>;
189 			settling-time-us = <700>;
190 			oversampling-ratio = <5>;
191 		};
192 
193 		channel@3 {
194 			reg = <3>;
195 			settling-time-us = <700>;
196 			oversampling-ratio = <5>;
197 		};
198 
199 		channel@4 {
200 			reg = <4>;
201 			settling-time-us = <700>;
202 			oversampling-ratio = <5>;
203 		};
204 
205 		channel@5 {
206 			reg = <5>;
207 			settling-time-us = <700>;
208 			oversampling-ratio = <5>;
209 		};
210 	};
211 };
212 
213 &fec {
214 	pinctrl-names = "default";
215 	pinctrl-0 = <&pinctrl_enet>;
216 	phy-mode = "rmii";
217 	phy-handle = <&rmii_phy>;
218 	status = "okay";
219 
220 	mdio {
221 		#address-cells = <1>;
222 		#size-cells = <0>;
223 
224 		/* Microchip KSZ8081RNA PHY */
225 		rmii_phy: ethernet-phy@0 {
226 			reg = <0>;
227 			interrupts-extended = <&gpio4 30 IRQ_TYPE_LEVEL_LOW>;
228 			reset-gpios = <&gpio4 26 GPIO_ACTIVE_LOW>;
229 			reset-assert-us = <10000>;
230 			reset-deassert-us = <300>;
231 		};
232 	};
233 };
234 
235 &gpio1 {
236 	gpio-line-names =
237 		"CAN1_TERM", "SD1_CD", "ITU656_RESET", "CAM1_MIRROR",
238 			"CAM2_MIRROR", "", "", "SMBALERT",
239 		"DEBUG_0", "DEBUG_1", "", "", "", "", "", "",
240 		"SD1_DATA0", "SD1_DATA1", "SD1_CMD", "SD1_DATA2", "SD1_CLK",
241 			"SD1_DATA3", "ETH_MDIO", "",
242 		"", "", "", "", "", "", "", "ETH_MDC";
243 };
244 
245 &gpio4 {
246 	gpio-line-names =
247 		"", "", "", "", "", "", "UART4_TXD", "UART4_RXD",
248 		"UART5_TXD", "UART5_RXD", "CAN1_TX", "CAN1_RX", "CAN1_SR",
249 			"CAN2_SR", "CAN2_TX", "CAN2_RX",
250 		"", "", "DIP1_FB", "", "VCAM_EN", "ON1_CTRL", "ON2_CTRL",
251 			"HITCH_IN_OUT",
252 		"LIGHT_ON", "", "ETH_RESET", "CONTACT_IN", "BL_EN",
253 			"BL_PWM", "ETH_INT", "ISB_LED";
254 };
255 
256 &gpio5 {
257 	gpio-line-names =
258 		"", "", "", "", "", "", "", "",
259 		"TSC_PENIRQ", "TSC_BUSY", "ECSPI2_MOSI", "ECSPI2_MISO",
260 			"ECSPI2_SS0", "ECSPI2_SCLK", "", "",
261 		"", "", "ITU656_CLK", "I2S_MCLK", "ITU656_PDN", "AUDIO_RESET",
262 			"I2S_BITCLK", "I2S_DOUT",
263 		"I2S_LRCLK", "I2S_DIN", "I2C1_SDA", "I2C1_SCL", "YACO_AUX_RX",
264 			"YACO_AUX_TX", "ITU656_D0", "ITU656_D1";
265 };
266 
267 &gpio6 {
268 	gpio-line-names =
269 		"ITU656_D2", "ITU656_D3", "ITU656_D4", "ITU656_D5",
270 			"ITU656_D6", "ITU656_D7", "", "",
271 		"", "", "", "", "", "", "", "",
272 		"", "", "", "", "", "", "", "",
273 		"", "", "", "", "", "", "", "";
274 };
275 
276 &i2c1 {
277 	keypad@70 {
278 		compatible = "holtek,ht16k33";
279 		pinctrl-names = "default";
280 		pinctrl-0 = <&pinctrl_keypad>;
281 		reg = <0x70>;
282 		refresh-rate-hz = <20>;
283 		debounce-delay-ms = <50>;
284 		interrupts-extended = <&gpio4 5 (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING)>;
285 		keypad,num-rows = <12>;
286 		keypad,num-columns = <3>;
287 		linux,keymap = <
288 			MATRIX_KEY(2, 0, KEY_F6)
289 			MATRIX_KEY(3, 0, KEY_F8)
290 			MATRIX_KEY(4, 0, KEY_F10)
291 			MATRIX_KEY(5, 0, KEY_F4)
292 			MATRIX_KEY(6, 0, KEY_F2)
293 			MATRIX_KEY(2, 1, KEY_F5)
294 			MATRIX_KEY(3, 1, KEY_F7)
295 			MATRIX_KEY(4, 1, KEY_F9)
296 			MATRIX_KEY(5, 1, KEY_F3)
297 			MATRIX_KEY(6, 1, KEY_F1)
298 		      >;
299 	};
300 };
301 
302 &iomuxc {
303 	pinctrl_ecspi2: ecspi2grp {
304 		fsl,pins = <
305 			MX6QDL_PAD_DISP0_DAT16__ECSPI2_MOSI		0x100b1
306 			MX6QDL_PAD_DISP0_DAT17__ECSPI2_MISO		0x100b1
307 			MX6QDL_PAD_DISP0_DAT18__GPIO5_IO12		0x100b1
308 			MX6QDL_PAD_DISP0_DAT19__ECSPI2_SCLK		0x100b1
309 		>;
310 	};
311 
312 	pinctrl_enet: enetgrp {
313 		fsl,pins = <
314 			/* MX6QDL_ENET_PINGRP4 */
315 			MX6QDL_PAD_ENET_MDC__ENET_MDC			0x1b0b0
316 			MX6QDL_PAD_ENET_MDIO__ENET_MDIO			0x1b0b0
317 			MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0		0x1b0b0
318 			MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1		0x1b0b0
319 			MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER		0x1b0b0
320 			MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN		0x1b0b0
321 			MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0		0x1b0b0
322 			MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1		0x1b0b0
323 			MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN		0x1b0b0
324 			MX6QDL_PAD_GPIO_16__ENET_REF_CLK		0x1b0b0
325 			/* Phy reset */
326 			MX6QDL_PAD_DISP0_DAT5__GPIO4_IO26		0x1b0b0
327 			/* nINTRP */
328 			MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30		0x1b0b0
329 		>;
330 	};
331 
332 	pinctrl_gpiokeys: gpiokeygrp {
333 		fsl,pins = <
334 			/* ROTARY_BTN */
335 			MX6QDL_PAD_NANDF_D5__GPIO2_IO05			0x1b0b0
336 			/* nON_SWITCH */
337 			MX6QDL_PAD_EIM_CS0__GPIO2_IO23			0x1b0b0
338 		>;
339 	};
340 
341 	pinctrl_keypad: keypadgrp {
342 		fsl,pins = <
343 			MX6QDL_PAD_GPIO_19__GPIO4_IO05			0x1b0b0
344 		>;
345 	};
346 
347 	pinctrl_rotary_ch: rotarychgrp {
348 		fsl,pins = <
349 			MX6QDL_PAD_NANDF_D3__GPIO2_IO03			0x1b0b0
350 			MX6QDL_PAD_NANDF_D4__GPIO2_IO04			0x1b0b0
351 		>;
352 	};
353 
354 	pinctrl_touchscreen: touchscreengrp {
355 		fsl,pins = <
356 			MX6QDL_PAD_DISP0_DAT14__GPIO5_IO08		0x1b0b0
357 			MX6QDL_PAD_DISP0_DAT15__GPIO5_IO09		0x1b0b0
358 		>;
359 	};
360 };
361