Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.2.
  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};