1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2/*
3 * Copyright (c) 2014 Protonic Holland
4 * Copyright (c) 2020 Oleksij Rempel <kernel@pengutronix.de>, Pengutronix
5 */
6
7/dts-v1/;
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/leds/common.h>
10#include "imx6dl.dtsi"
11
12/ {
13	model = "Plymovent M2M board";
14	compatible = "ply,plym2m", "fsl,imx6dl";
15
16	chosen {
17		stdout-path = &uart4;
18	};
19
20	backlight: backlight {
21		compatible = "pwm-backlight";
22		pwms = <&pwm1 0 5000000 0>;
23		brightness-levels = <0 1000>;
24		num-interpolated-steps = <20>;
25		default-brightness-level = <19>;
26		power-supply = <&reg_12v0>;
27	};
28
29	display {
30		compatible = "fsl,imx-parallel-display";
31		pinctrl-0 = <&pinctrl_ipu1_disp>;
32		pinctrl-names = "default";
33		#address-cells = <1>;
34		#size-cells = <0>;
35
36		port@0 {
37			reg = <0>;
38
39			display_in: endpoint {
40				remote-endpoint = <&ipu1_di0_disp0>;
41			};
42		};
43
44		port@1 {
45			reg = <1>;
46
47			display_out: endpoint {
48				remote-endpoint = <&panel_in>;
49			};
50		};
51	};
52
53	iio-hwmon {
54		compatible = "iio-hwmon";
55		io-channels = <&vdiv_vaccu>;
56	};
57
58	leds {
59		compatible = "gpio-leds";
60		pinctrl-names = "default";
61		pinctrl-0 = <&pinctrl_leds>;
62
63		led-0 {
64			label = "debug0";
65			function = LED_FUNCTION_STATUS;
66			gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
67			linux,default-trigger = "heartbeat";
68		};
69	};
70
71	panel {
72		compatible = "edt,etm0700g0bdh6";
73		backlight = <&backlight>;
74		power-supply = <&reg_3v3>;
75
76		port {
77			panel_in: endpoint {
78				remote-endpoint = <&display_out>;
79			};
80		};
81	};
82
83	clk50m_phy: phy-clock {
84		compatible = "fixed-clock";
85		#clock-cells = <0>;
86		clock-frequency = <50000000>;
87		clock-output-names = "enet_ref_pad";
88	};
89
90	reg_3v3: regulator-3v3 {
91		compatible = "regulator-fixed";
92		regulator-name = "3v3";
93		regulator-min-microvolt = <3300000>;
94		regulator-max-microvolt = <3300000>;
95	};
96
97	reg_5v0: regulator-5v0 {
98		compatible = "regulator-fixed";
99		regulator-name = "5v0";
100		regulator-min-microvolt = <5000000>;
101		regulator-max-microvolt = <5000000>;
102	};
103
104	reg_12v0: regulator-12v0 {
105		compatible = "regulator-fixed";
106		regulator-name = "12v0";
107		regulator-min-microvolt = <12000000>;
108		regulator-max-microvolt = <12000000>;
109	};
110
111	thermal-zones {
112		chassis-thermal {
113			polling-delay = <20000>;
114			polling-delay-passive = <0>;
115			thermal-sensors = <&tsens0>;
116
117			trips {
118				alert {
119					temperature = <85000>; /* millicelsius */
120					hysteresis = <2000>; /* millicelsius */
121					type = "passive";
122				};
123			};
124		};
125
126		touch-thermal0 {
127			polling-delay = <20000>;
128			polling-delay-passive = <0>;
129			thermal-sensors = <&touch_temp0>;
130
131			trips {
132				alert {
133					temperature = <85000>; /* millicelsius */
134					hysteresis = <2000>; /* millicelsius */
135					type = "passive";
136				};
137			};
138		};
139
140		touch-thermal1 {
141			polling-delay = <20000>;
142			polling-delay-passive = <0>;
143			thermal-sensors = <&touch_temp1>;
144
145			trips {
146				alert {
147					temperature = <85000>; /* millicelsius */
148					hysteresis = <2000>; /* millicelsius */
149					type = "passive";
150				};
151			};
152		};
153	};
154
155	touchscreen {
156		compatible = "resistive-adc-touch";
157		io-channels = <&adc_ts 1>, <&adc_ts 3>, <&adc_ts 4>,
158                              <&adc_ts 5>;
159		io-channel-names = "y", "z1", "z2", "x";
160		touchscreen-min-pressure = <64687>;
161		touchscreen-inverted-x;
162		touchscreen-inverted-y;
163		touchscreen-x-plate-ohms = <300>;
164		touchscreen-y-plate-ohms = <800>;
165	};
166
167	touch_temp0: touch-temperature-sensor0 {
168		compatible = "generic-adc-thermal";
169		#thermal-sensor-cells = <0>;
170		io-channels = <&adc_ts 0>;
171		io-channel-names = "sensor-channel";
172		temperature-lookup-table = <    (-40000) 736
173						85000 474>;
174	};
175
176	touch_temp1: touch-temperature-sensor1 {
177		compatible = "generic-adc-thermal";
178		#thermal-sensor-cells = <0>;
179		io-channels = <&adc_ts 7>;
180		io-channel-names = "sensor-channel";
181		temperature-lookup-table = <    (-40000) 826
182						85000 609>;
183	};
184
185	vdiv_vaccu: voltage-divider-vaccu {
186		compatible = "voltage-divider";
187		io-channels = <&adc_ts 2>;
188		output-ohms = <2500>;
189		full-ohms = <64000>;
190		#io-channel-cells = <0>;
191	};
192};
193
194&can1 {
195	pinctrl-names = "default";
196	pinctrl-0 = <&pinctrl_can1>;
197	xceiver-supply = <&reg_5v0>;
198	status = "okay";
199};
200
201&clks {
202	clocks = <&clk50m_phy>;
203	clock-names = "enet_ref_pad";
204	assigned-clocks = <&clks IMX6QDL_CLK_ENET_REF_SEL>;
205	assigned-clock-parents = <&clk50m_phy>;
206};
207
208&ecspi1 {
209	cs-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
210	pinctrl-names = "default";
211	pinctrl-0 = <&pinctrl_ecspi1>;
212	status = "okay";
213
214	flash@0 {
215		compatible = "jedec,spi-nor";
216		reg = <0>;
217		spi-max-frequency = <20000000>;
218	};
219};
220
221&ecspi2 {
222	cs-gpios = <&gpio2 26 GPIO_ACTIVE_LOW>;
223	pinctrl-names = "default";
224	pinctrl-0 = <&pinctrl_ecspi2>;
225	status = "okay";
226
227	adc_ts: adc@0 {
228		compatible = "ti,tsc2046e-adc";
229		reg = <0>;
230		pinctrl-0 = <&pinctrl_tsc2046>;
231		pinctrl-names = "default";
232		spi-max-frequency = <1000000>;
233		interrupts-extended = <&gpio3 20 IRQ_TYPE_LEVEL_LOW>;
234		#io-channel-cells = <1>;
235
236		#address-cells = <1>;
237		#size-cells = <0>;
238
239		channel@0 {
240			reg = <0>;
241			settling-time-us = <300>;
242			oversampling-ratio = <5>;
243		};
244
245		channel@1 {
246			reg = <1>;
247			settling-time-us = <700>;
248			oversampling-ratio = <5>;
249		};
250
251		channel@2 {
252			reg = <2>;
253			settling-time-us = <300>;
254			oversampling-ratio = <5>;
255		};
256
257		channel@3 {
258			reg = <3>;
259			settling-time-us = <700>;
260			oversampling-ratio = <5>;
261		};
262
263		channel@4 {
264			reg = <4>;
265			settling-time-us = <700>;
266			oversampling-ratio = <5>;
267		};
268
269		channel@5 {
270			reg = <5>;
271			settling-time-us = <700>;
272			oversampling-ratio = <5>;
273		};
274
275		/* channel 6 is not connected */
276
277		channel@7 {
278			reg = <7>;
279			settling-time-us = <300>;
280			oversampling-ratio = <5>;
281		};
282	};
283};
284
285&fec {
286	pinctrl-names = "default";
287	pinctrl-0 = <&pinctrl_enet>;
288	phy-mode = "rmii";
289	phy-handle = <&rgmii_phy>;
290	status = "okay";
291
292	mdio {
293		#address-cells = <1>;
294		#size-cells = <0>;
295
296		/* Microchip KSZ8081RNA PHY */
297		rgmii_phy: ethernet-phy@0 {
298			reg = <0>;
299			interrupts-extended = <&gpio5 23 IRQ_TYPE_LEVEL_LOW>;
300			reset-gpios = <&gpio5 22 GPIO_ACTIVE_LOW>;
301			reset-assert-us = <10000>;
302			reset-deassert-us = <300>;
303		};
304	};
305};
306
307&gpio1 {
308	gpio-line-names =
309		"CAN1_TERM", "SD1_CD", "", "", "", "", "", "",
310		"DEBUG_0", "", "", "", "", "", "", "",
311		"", "", "", "", "", "", "", "",
312		"", "", "", "", "", "", "", "";
313};
314
315&gpio2 {
316	gpio-line-names =
317		"", "", "", "", "", "", "", "",
318		"", "", "", "", "", "", "", "",
319		"", "", "", "", "", "", "", "",
320		"", "", "ECSPI2_SS0", "", "", "", "TSC_BUSY", "";
321};
322
323&gpio3 {
324	gpio-line-names =
325		"", "", "", "", "", "", "", "",
326		"", "", "", "", "", "", "", "",
327		"", "", "", "ECSPI1_SS1", "TSC_PENIRQ", "", "", "",
328		"", "", "", "", "", "", "", "";
329};
330
331&gpio4 {
332	gpio-line-names =
333		"", "", "", "", "", "", "", "",
334		"", "", "", "", "CAN1_SR", "", "", "",
335		"", "", "", "", "", "", "", "",
336		"", "", "", "", "", "", "", "";
337};
338
339&gpio5 {
340	gpio-line-names =
341		"", "", "", "", "", "", "", "",
342		"", "", "", "", "", "", "", "",
343		"", "", "", "", "", "", "ETH_RESET", "ETH_INTRP",
344		"", "", "", "", "", "", "", "";
345};
346
347&i2c1 {
348	clock-frequency = <100000>;
349	pinctrl-names = "default";
350	pinctrl-0 = <&pinctrl_i2c1>;
351	status = "okay";
352
353	/* additional i2c devices are added automatically by the boot loader */
354};
355
356&i2c3 {
357	clock-frequency = <100000>;
358	pinctrl-names = "default";
359	pinctrl-0 = <&pinctrl_i2c3>;
360	status = "okay";
361
362	tsens0: temperature-sensor@70 {
363		compatible = "ti,tmp103";
364		reg = <0x70>;
365		#thermal-sensor-cells = <0>;
366	};
367};
368
369&ipu1_di0_disp0 {
370	remote-endpoint = <&display_in>;
371};
372
373&pwm1 {
374	pinctrl-names = "default";
375	pinctrl-0 = <&pinctrl_pwm1>;
376	status = "okay";
377};
378
379&uart4 {
380	pinctrl-names = "default";
381	pinctrl-0 = <&pinctrl_uart4>;
382	status = "okay";
383};
384
385&usbphynop1 {
386	status = "disabled";
387};
388
389&usbphynop2 {
390	status = "disabled";
391};
392
393&usbotg {
394	phy_type = "utmi";
395	dr_mode = "host";
396	disable-over-current;
397	status = "okay";
398};
399
400&usdhc1 {
401	pinctrl-names = "default";
402	pinctrl-0 = <&pinctrl_usdhc1>;
403	cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
404	no-1-8-v;
405	disable-wp;
406	cap-sd-highspeed;
407	no-mmc;
408	no-sdio;
409	status = "okay";
410};
411
412&usdhc3 {
413	pinctrl-names = "default";
414	pinctrl-0 = <&pinctrl_usdhc3>;
415	bus-width = <8>;
416	no-1-8-v;
417	non-removable;
418	no-sd;
419	no-sdio;
420	status = "okay";
421};
422
423&iomuxc {
424	pinctrl_can1: can1grp {
425		fsl,pins = <
426			MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX		0x1b000
427			MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX		0x3008
428			/* CAN1_SR */
429			MX6QDL_PAD_KEY_COL3__GPIO4_IO12			0x13008
430			/* CAN1_TERM */
431			MX6QDL_PAD_GPIO_0__GPIO1_IO00			0x1b088
432		>;
433	};
434
435	pinctrl_ecspi1: ecspi1grp {
436		fsl,pins = <
437			MX6QDL_PAD_EIM_D17__ECSPI1_MISO			0x1b000
438			MX6QDL_PAD_EIM_D18__ECSPI1_MOSI			0x3008
439			MX6QDL_PAD_EIM_D16__ECSPI1_SCLK			0x3008
440			/* CS */
441			MX6QDL_PAD_EIM_D19__GPIO3_IO19			0x3008
442		>;
443	};
444
445	pinctrl_ecspi2: ecspi2grp {
446		fsl,pins = <
447			MX6QDL_PAD_EIM_OE__ECSPI2_MISO			0x10000
448			MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK			0x3008
449			MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI			0x3008
450			/* CS */
451			MX6QDL_PAD_EIM_RW__GPIO2_IO26			0x3008
452		>;
453	};
454
455	pinctrl_enet: enetgrp {
456		fsl,pins = <
457			/* MX6QDL_ENET_PINGRP4 */
458			MX6QDL_PAD_ENET_MDC__ENET_MDC			0x1b0b0
459			MX6QDL_PAD_ENET_MDIO__ENET_MDIO			0x1b0b0
460			MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0		0x1b0b0
461			MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1		0x1b0b0
462			MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER		0x1b0b0
463			MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN		0x1b0b0
464			MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0		0x1b0b0
465			MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1		0x1b0b0
466			MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN		0x1b0b0
467
468			MX6QDL_PAD_GPIO_16__ENET_REF_CLK		0x1b0b0
469			/* Phy reset */
470			MX6QDL_PAD_CSI0_DAT4__GPIO5_IO22		0x1b0b0
471			/* nINTRP */
472			MX6QDL_PAD_CSI0_DAT5__GPIO5_IO23		0x1b0b0
473		>;
474	};
475
476	pinctrl_i2c1: i2c1grp {
477		fsl,pins = <
478			MX6QDL_PAD_CSI0_DAT8__I2C1_SDA			0x4001f8b1
479			MX6QDL_PAD_CSI0_DAT9__I2C1_SCL			0x4001f8b1
480		>;
481	};
482
483	pinctrl_i2c3: i2c3grp {
484		fsl,pins = <
485			MX6QDL_PAD_GPIO_5__I2C3_SCL			0x4001b8b1
486			MX6QDL_PAD_GPIO_6__I2C3_SDA			0x4001b8b1
487		>;
488	};
489
490	pinctrl_ipu1_disp: ipudisp1grp {
491		fsl,pins = <
492			/* DSE 0x30 => 25 Ohm, 0x20 => 37 Ohm, 0x10 => 75 Ohm */
493			MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK	0x30
494			MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15		0x30
495			MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02		0x30
496			MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03		0x30
497			MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00	0x30
498			MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01	0x30
499			MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02	0x30
500			MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03	0x30
501			MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04	0x30
502			MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05	0x30
503			MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06	0x30
504			MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07	0x30
505			MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08	0x30
506			MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09	0x30
507			MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10	0x30
508			MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11	0x30
509			MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12	0x30
510			MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13	0x30
511			MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14	0x30
512			MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15	0x30
513			MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16	0x30
514			MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17	0x30
515		>;
516	};
517
518	pinctrl_leds: ledsgrp {
519		fsl,pins = <
520			MX6QDL_PAD_GPIO_8__GPIO1_IO08			0x1b0b0
521		>;
522	};
523
524	pinctrl_pwm1: pwm1grp {
525		fsl,pins = <
526			MX6QDL_PAD_GPIO_9__PWM1_OUT			0x8
527		>;
528	};
529
530	pinctrl_tsc2046: tsc2046grp {
531		fsl,pins = <
532			/* TSC_PENIRQ */
533			MX6QDL_PAD_EIM_D20__GPIO3_IO20			0x1b0b1
534			/* TSC_BUSY */
535			MX6QDL_PAD_EIM_EB2__GPIO2_IO30			0x1b0b0
536		>;
537	};
538
539	pinctrl_uart4: uart4grp {
540		fsl,pins = <
541			MX6QDL_PAD_KEY_COL0__UART4_TX_DATA		0x1b0b1
542			MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA		0x1b0b1
543		>;
544	};
545
546	pinctrl_usdhc1: usdhc1grp {
547		fsl,pins = <
548			MX6QDL_PAD_SD1_CMD__SD1_CMD			0x170f9
549			MX6QDL_PAD_SD1_CLK__SD1_CLK			0x100f9
550			MX6QDL_PAD_SD1_DAT0__SD1_DATA0			0x170f9
551			MX6QDL_PAD_SD1_DAT1__SD1_DATA1			0x170f9
552			MX6QDL_PAD_SD1_DAT2__SD1_DATA2			0x170f9
553			MX6QDL_PAD_SD1_DAT3__SD1_DATA3			0x170f9
554			MX6QDL_PAD_GPIO_1__GPIO1_IO01			0x1b0b0
555		>;
556	};
557
558	pinctrl_usdhc3: usdhc3grp {
559		fsl,pins = <
560			MX6QDL_PAD_SD3_CMD__SD3_CMD			0x17099
561			MX6QDL_PAD_SD3_CLK__SD3_CLK			0x10099
562			MX6QDL_PAD_SD3_DAT0__SD3_DATA0			0x17099
563			MX6QDL_PAD_SD3_DAT1__SD3_DATA1			0x17099
564			MX6QDL_PAD_SD3_DAT2__SD3_DATA2			0x17099
565			MX6QDL_PAD_SD3_DAT3__SD3_DATA3			0x17099
566			MX6QDL_PAD_SD3_DAT4__SD3_DATA4			0x17099
567			MX6QDL_PAD_SD3_DAT5__SD3_DATA5			0x17099
568			MX6QDL_PAD_SD3_DAT6__SD3_DATA6			0x17099
569			MX6QDL_PAD_SD3_DAT7__SD3_DATA7			0x17099
570			MX6QDL_PAD_SD3_RST__SD3_RESET			0x1b0b1
571		>;
572	};
573};
574