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 BAS board";
14 	compatible = "ply,plybas", "fsl,imx6dl";
15 
16 	chosen {
17 		stdout-path = &uart4;
18 	};
19 
20 	gpio_keys {
21 		compatible = "gpio-keys";
22 		autorepeat;
23 
24 		button-start {
25 			label = "START";
26 			linux,code = <31>;
27 			gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
28 		};
29 
30 		button-clean {
31 			label = "CLEAN";
32 			linux,code = <46>;
33 			gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
34 		};
35 	};
36 
37 	leds {
38 		compatible = "gpio-leds";
39 		pinctrl-names = "default";
40 		pinctrl-0 = <&pinctrl_leds>;
41 
42 		led-0 {
43 			label = "debug0";
44 			gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
45 		};
46 
47 		led-1 {
48 			label = "debug1";
49 			gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
50 		};
51 
52 		led-2 {
53 			label = "light_tower1";
54 			gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
55 			linux,default-trigger = "heartbeat";
56 		};
57 
58 		led-3 {
59 			label = "light_tower2";
60 			gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
61 		};
62 
63 		led-4 {
64 			label = "light_tower3";
65 			gpios = <&gpio4 24 GPIO_ACTIVE_HIGH>;
66 		};
67 
68 		led-5 {
69 			label = "light_tower4";
70 			gpios = <&gpio4 25 GPIO_ACTIVE_HIGH>;
71 		};
72 	};
73 
74 	clk50m_phy: phy-clock {
75 		compatible = "fixed-clock";
76 		#clock-cells = <0>;
77 		clock-frequency = <50000000>;
78 		clock-output-names = "enet_ref_pad";
79 	};
80 
81 	reg_5v0: regulator-5v0 {
82 		compatible = "regulator-fixed";
83 		regulator-name = "5v0";
84 		regulator-min-microvolt = <5000000>;
85 		regulator-max-microvolt = <5000000>;
86 	};
87 };
88 
89 &can1 {
90 	pinctrl-names = "default";
91 	pinctrl-0 = <&pinctrl_can1>;
92 	xceiver-supply = <&reg_5v0>;
93 	status = "okay";
94 };
95 
96 &can2 {
97 	pinctrl-names = "default";
98 	pinctrl-0 = <&pinctrl_can2>;
99 	xceiver-supply = <&reg_5v0>;
100 	status = "okay";
101 };
102 
103 &clks {
104 	clocks = <&clk50m_phy>;
105 	clock-names = "enet_ref_pad";
106 	assigned-clocks = <&clks IMX6QDL_CLK_ENET_REF_SEL>;
107 	assigned-clock-parents = <&clk50m_phy>;
108 };
109 
110 &ecspi1 {
111 	cs-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
112 	pinctrl-names = "default";
113 	pinctrl-0 = <&pinctrl_ecspi1>;
114 	status = "okay";
115 
116 	flash@0 {
117 		compatible = "jedec,spi-nor";
118 		reg = <0>;
119 		spi-max-frequency = <20000000>;
120 	};
121 };
122 
123 &fec {
124 	pinctrl-names = "default";
125 	pinctrl-0 = <&pinctrl_enet>;
126 	phy-mode = "rmii";
127 	phy-handle = <&rgmii_phy>;
128 	status = "okay";
129 
130 	mdio {
131 		#address-cells = <1>;
132 		#size-cells = <0>;
133 
134 		/* Microchip KSZ8081RNA PHY */
135 		rgmii_phy: ethernet-phy@0 {
136 			reg = <0>;
137 			interrupts-extended = <&gpio4 30 IRQ_TYPE_LEVEL_LOW>;
138 			reset-gpios = <&gpio4 26 GPIO_ACTIVE_LOW>;
139 			reset-assert-us = <10000>;
140 			reset-deassert-us = <300>;
141 		};
142 	};
143 };
144 
145 &gpio1 {
146 	gpio-line-names =
147 		"", "SD1_CD", "", "", "", "", "", "",
148 		"DEBUG_0", "DEBUG_1", "", "", "", "", "", "",
149 		"", "", "", "", "", "", "", "",
150 		"", "", "", "", "", "", "", "";
151 };
152 
153 &gpio3 {
154 	gpio-line-names =
155 		"", "", "", "", "", "", "", "",
156 		"", "", "", "", "", "", "", "",
157 		"", "", "", "ECSPI1_SS1", "", "USB_EXT_PWR", "", "",
158 		"", "", "", "", "", "", "", "";
159 };
160 
161 &gpio4 {
162 	gpio-line-names =
163 		"", "", "", "", "", "", "", "",
164 		"", "", "", "", "CAN1_SR", "CAN2_SR", "", "",
165 		"LED_DI0_DEBUG_0", "LED_DI0_DEBUG_1", "IMX6_IN12", "IMX6_HMI",
166 			"IMX6_IN11", "IMX6_BUZZER", "IMX6_LED1", "IMX6_LED2",
167 		"IMX6_LED3", "IMX6_LED4", "ETH_RESET", "IMX6_ANA_OUT_SD",
168 			"IMX6_ANA_OUT_ERR", "IMX6_ANA_OUT", "ETH_INTRP", "";
169 };
170 
171 &gpio5 {
172 	gpio-line-names =
173 		"", "", "", "", "", "IMX6_RELAY1", "IMX6_RELAY2", "",
174 		"IMX6_IN1", "IMX6_IN2", "IMX6_IN3", "IMX6_IN4", "IMX6_IN5",
175 			"IMX6_IN6", "IMX6_IN7", "IMX6_IN8",
176 		"IMX6_IN9", "IMX6_IN10", "", "", "", "", "", "",
177 		"", "", "", "", "", "", "", "";
178 };
179 
180 &i2c1 {
181 	clock-frequency = <100000>;
182 	pinctrl-names = "default";
183 	pinctrl-0 = <&pinctrl_i2c1>;
184 	status = "okay";
185 
186 	/* additional i2c devices are added automatically by the boot loader */
187 };
188 
189 &i2c3 {
190 	clock-frequency = <100000>;
191 	pinctrl-names = "default";
192 	pinctrl-0 = <&pinctrl_i2c3>;
193 	status = "okay";
194 
195 	temperature-sensor@70 {
196 		compatible = "ti,tmp103";
197 		reg = <0x70>;
198 	};
199 
200 	rtc@51 {
201 		compatible = "nxp,pcf8563";
202 		reg = <0x51>;
203 	};
204 };
205 
206 &pwm1 {
207 	pinctrl-names = "default";
208 	pinctrl-0 = <&pinctrl_pwm1>;
209 	status = "okay";
210 };
211 
212 &uart1 {
213 	pinctrl-names = "default";
214 	pinctrl-0 = <&pinctrl_uart1>;
215 	status = "okay";
216 };
217 
218 &uart2 {
219 	pinctrl-names = "default";
220 	pinctrl-0 = <&pinctrl_uart2>;
221 	uart-has-rtscts;
222 	linux,rs485-enabled-at-boot-time;
223 	rs485-rts-delay = <0 20>;
224 	status = "okay";
225 };
226 
227 &uart4 {
228 	pinctrl-names = "default";
229 	pinctrl-0 = <&pinctrl_uart4>;
230 	status = "okay";
231 };
232 
233 &usbotg {
234 	pinctrl-names = "default";
235 	pinctrl-0 = <&pinctrl_usbotg>;
236 	phy_type = "utmi";
237 	dr_mode = "host";
238 	over-current-active-low;
239 	status = "okay";
240 };
241 
242 &usbphynop1 {
243 	status = "disabled";
244 };
245 
246 &usbphynop2 {
247 	status = "disabled";
248 };
249 
250 &iomuxc {
251 	pinctrl_can1: can1grp {
252 		fsl,pins = <
253 			MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX		0x1b000
254 			MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX		0x3008
255 			/* CAN1_SR */
256 			MX6QDL_PAD_KEY_COL3__GPIO4_IO12			0x13008
257 		>;
258 	};
259 
260 	pinctrl_can2: can2grp {
261 		fsl,pins = <
262 			MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX		0x1b000
263 			MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX		0x3008
264 			/* CAN2_SR */
265 			MX6QDL_PAD_KEY_ROW3__GPIO4_IO13			0x13008
266 		>;
267 	};
268 
269 	pinctrl_ecspi1: ecspi1grp {
270 		fsl,pins = <
271 			MX6QDL_PAD_EIM_D17__ECSPI1_MISO			0x1b000
272 			MX6QDL_PAD_EIM_D18__ECSPI1_MOSI			0x3008
273 			MX6QDL_PAD_EIM_D16__ECSPI1_SCLK			0x3008
274 			/* CS */
275 			MX6QDL_PAD_EIM_D19__GPIO3_IO19			0x3008
276 		>;
277 	};
278 
279 	pinctrl_enet: enetgrp {
280 		fsl,pins = <
281 			/* MX6QDL_ENET_PINGRP4 */
282 			MX6QDL_PAD_ENET_MDC__ENET_MDC			0x1b0b0
283 			MX6QDL_PAD_ENET_MDIO__ENET_MDIO			0x1b0b0
284 			MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0		0x1b0b0
285 			MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1		0x1b0b0
286 			MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER		0x1b0b0
287 			MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN		0x1b0b0
288 			MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0		0x1b0b0
289 			MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1		0x1b0b0
290 			MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN		0x1b0b0
291 
292 			MX6QDL_PAD_GPIO_16__ENET_REF_CLK		0x1b0b0
293 			/* Phy reset */
294 			MX6QDL_PAD_DISP0_DAT5__GPIO4_IO26		0x1b0b0
295 			/* nINTRP */
296 			MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30		0x1b0b0
297 		>;
298 	};
299 
300 	pinctrl_i2c1: i2c1grp {
301 		fsl,pins = <
302 			MX6QDL_PAD_CSI0_DAT8__I2C1_SDA			0x4001f8b1
303 			MX6QDL_PAD_CSI0_DAT9__I2C1_SCL			0x4001f8b1
304 		>;
305 	};
306 
307 	pinctrl_i2c3: i2c3grp {
308 		fsl,pins = <
309 			MX6QDL_PAD_GPIO_5__I2C3_SCL			0x4001b8b1
310 			MX6QDL_PAD_GPIO_6__I2C3_SDA			0x4001b8b1
311 		>;
312 	};
313 
314 	pinctrl_leds: ledsgrp {
315 		fsl,pins = <
316 			/* DEBUG_0 */
317 			MX6QDL_PAD_GPIO_8__GPIO1_IO08			0x1b0b0
318 			/* DEBUG_1 */
319 			MX6QDL_PAD_GPIO_9__GPIO1_IO09			0x1b0b0
320 
321 			/* LED1 (lighttower) */
322 			MX6QDL_PAD_DISP0_DAT1__GPIO4_IO22		0x13070
323 			/* LED2 (lighttower) */
324 			MX6QDL_PAD_DISP0_DAT2__GPIO4_IO23		0x13070
325 			/* LED3 (lighttower) */
326 			MX6QDL_PAD_DISP0_DAT3__GPIO4_IO24		0x13070
327 			/* LED4 (lighttower) */
328 			MX6QDL_PAD_DISP0_DAT4__GPIO4_IO25		0x13070
329 		>;
330 	};
331 
332 	pinctrl_pwm1: pwm1grp {
333 		fsl,pins = <
334 			MX6QDL_PAD_DISP0_DAT8__PWM1_OUT			0x1b0b0
335 		>;
336 	};
337 
338 	/* YaCO AUX Uart */
339 	pinctrl_uart1: uart1grp {
340 		fsl,pins = <
341 			MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA		0x1b0b1
342 			MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA		0x1b0b1
343 		>;
344 	};
345 
346 	pinctrl_uart2: uart2grp {
347 		fsl,pins = <
348 			MX6QDL_PAD_EIM_D26__UART2_TX_DATA		0x1b0b1
349 			MX6QDL_PAD_EIM_D27__UART2_RX_DATA		0x1b0b1
350 			MX6QDL_PAD_EIM_D28__UART2_DTE_CTS_B		0x130b1
351 		>;
352 	};
353 
354 	pinctrl_uart4: uart4grp {
355 		fsl,pins = <
356 			MX6QDL_PAD_KEY_COL0__UART4_TX_DATA		0x1b0b1
357 			MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA		0x1b0b1
358 		>;
359 	};
360 
361 	pinctrl_usbotg: usbotggrp {
362 		fsl,pins = <
363 			MX6QDL_PAD_EIM_D21__USB_OTG_OC			0x1b0b0
364 			/* power enable, high active */
365 			MX6QDL_PAD_EIM_D22__GPIO3_IO22			0x1b0b0
366 		>;
367 	};
368 
369 	pinctrl_usdhc1: usdhc1grp {
370 		fsl,pins = <
371 			MX6QDL_PAD_SD1_CMD__SD1_CMD			0x170f9
372 			MX6QDL_PAD_SD1_CLK__SD1_CLK			0x100f9
373 			MX6QDL_PAD_SD1_DAT0__SD1_DATA0			0x170f9
374 			MX6QDL_PAD_SD1_DAT1__SD1_DATA1			0x170f9
375 			MX6QDL_PAD_SD1_DAT2__SD1_DATA2			0x170f9
376 			MX6QDL_PAD_SD1_DAT3__SD1_DATA3			0x170f9
377 			MX6QDL_PAD_GPIO_1__GPIO1_IO01			0x1b0b0
378 		>;
379 	};
380 
381 	pinctrl_usdhc3: usdhc3grp {
382 		fsl,pins = <
383 			MX6QDL_PAD_SD3_CMD__SD3_CMD			0x17099
384 			MX6QDL_PAD_SD3_CLK__SD3_CLK			0x10099
385 			MX6QDL_PAD_SD3_DAT0__SD3_DATA0			0x17099
386 			MX6QDL_PAD_SD3_DAT1__SD3_DATA1			0x17099
387 			MX6QDL_PAD_SD3_DAT2__SD3_DATA2			0x17099
388 			MX6QDL_PAD_SD3_DAT3__SD3_DATA3			0x17099
389 			MX6QDL_PAD_SD3_DAT4__SD3_DATA4			0x17099
390 			MX6QDL_PAD_SD3_DAT5__SD3_DATA5			0x17099
391 			MX6QDL_PAD_SD3_DAT6__SD3_DATA6			0x17099
392 			MX6QDL_PAD_SD3_DAT7__SD3_DATA7			0x17099
393 			MX6QDL_PAD_SD3_RST__SD3_RESET			0x1b0b1
394 		>;
395 	};
396 };
397