1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (C) 2021 PHYTEC Messtechnik GmbH
4 * Author: Alexander Bauer <a.bauer@phytec.de>
5 */
6
7/dts-v1/;
8#include "imx6ull.dtsi"
9#include "imx6ull-phytec-phycore-som.dtsi"
10
11/ {
12	aliases {
13		rtc0 = &i2c_rtc;
14		rtc1 = &snvs_rtc;
15	};
16
17	gpio_keys: gpio-keys {
18		compatible = "gpio-key";
19		pinctrl-names = "default";
20		pinctrl-0 = <&pinctrl_gpio_keys>;
21
22		key {
23			label = "KEY-A";
24			gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
25			linux,code = <KEY_A>;
26			wakeup-source;
27		};
28	};
29
30	reg_adc1_vref_3v3: regulator-vref-3v3 {
31		compatible = "regulator-fixed";
32		regulator-name = "vref-3v3";
33		regulator-min-microvolt = <3300000>;
34		regulator-max-microvolt = <3300000>;
35	};
36
37	reg_s25fl064_hold: regulator-s25fl064-hold {
38		pinctrl-names = "default";
39		pinctrl-0 = <&pinctrl_s25fl064_hold>;
40		compatible = "regulator-fixed";
41		regulator-name = "s25fl064_hold";
42		regulator-min-microvolt = <3300000>;
43		regulator-max-microvolt = <3300000>;
44		gpio = <&gpio3 17 GPIO_ACTIVE_HIGH>;
45		enable-active-high;
46		regulator-always-on;
47	};
48
49	reg_usb_hub_vbus: regulator-hub-otg1-vbus {
50		pinctrl-names = "default";
51		pinctrl-0 = <&pinctrl_usbhubpwr>;
52		compatible = "regulator-fixed";
53		regulator-name = "usb_hub_vbus";
54		regulator-min-microvolt = <3300000>;
55		regulator-max-microvolt = <3300000>;
56		gpio = <&gpio5 5 GPIO_ACTIVE_HIGH>;
57		enable-active-high;
58		regulator-always-on;
59	};
60
61	reg_usb_otg1_vbus: regulator-usb-otg1-vbus {
62		pinctrl-names = "default";
63		pinctrl-0 = <&pinctrl_usbotg1pwr>;
64		compatible = "regulator-fixed";
65		regulator-name = "usb_otg1_vbus";
66		regulator-min-microvolt = <3300000>;
67		regulator-max-microvolt = <3300000>;
68		gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>;
69		enable-active-high;
70		regulator-always-on;
71	};
72
73	user_leds: user-leds {
74		compatible = "gpio-leds";
75		pinctrl-names = "default";
76		pinctrl-0 = <&pinctrl_user_leds>,
77			    <&pinctrl_user_leds_snvs>;
78
79		user-led1 {
80			label = "yellow";
81			gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
82			linux,default-trigger = "off";
83		};
84
85		user-led2 {
86			label = "red";
87			gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
88			linux,default-trigger = "off";
89		};
90	};
91};
92
93&can1 {
94	pinctrl-names = "default";
95	pinctrl-0 = <&pinctrl_flexcan1>;
96	status = "okay";
97};
98
99&can2 {
100	pinctrl-names = "default";
101	pinctrl-0 = <&pinctrl_flexcan2>;
102	status = "okay";
103};
104
105&ecspi1 {
106	#address-cells = <1>;
107	#size-cells = <0>;
108	pinctrl-names = "default";
109	pinctrl-0 = <&pinctrl_ecspi1>,
110		    <&pinctrl_ecspi1_cs>;
111	cs-gpios = <&gpio3 26 GPIO_ACTIVE_LOW>,
112		   <&gpio3 10 GPIO_ACTIVE_LOW>,
113		   <&gpio3 11 GPIO_ACTIVE_LOW>;
114	status = "okay";
115
116	tpm_tis: tpm@1 {
117		pinctrl-names = "default";
118		pinctrl-0 = <&pinctrl_tpm>;
119		compatible = "tcg,tpm_tis-spi";
120		reg = <1>;
121		spi-max-frequency = <20000000>;
122		interrupt-parent = <&gpio5>;
123		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
124	};
125
126	s25fl064: flash@2 {
127		#address-cells = <1>;
128		#size-cells = <1>;
129		compatible = " jedec,spi-nor";
130		reg = <2>;
131		spi-max-frequency = <40000000>;
132		m25p,fast-read;
133		status = "disabled";
134	};
135};
136
137&ecspi3 {
138	pinctrl-names = "default";
139	pinctrl-0 = <&pinctrl_ecspi3>;
140	cs-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
141	dmas = <&sdma 7 8 0>,
142	       <&sdma 8 8 0>;
143	dma-names = "rx", "tx";
144	status = "okay";
145};
146
147&ethphy1 {
148	status = "okay";
149};
150
151&fec1 {
152	status = "okay";
153};
154
155&fec2 {
156	pinctrl-names = "default";
157	pinctrl-0 = <&pinctrl_enet2>;
158	phy-mode = "rmii";
159	phy-handle = <&ethphy2>;
160	status = "okay";
161};
162
163&i2c1 {
164	status = "okay";
165
166	tmp102: tmp@49 {
167		compatible = "ti,tmp102";
168		reg = <0x49>;
169		pinctrl-names = "default";
170		pinctrl-0 = <&pinctrl_tempsense>;
171		interrupt-parent = <&gpio5>;
172		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
173		#thermal-sensor-cells = <1>;
174	};
175
176	i2c_rtc: rtc@68 {
177		pinctrl-names = "default";
178		pinctrl-0 = <&pinctrl_rtc_int>;
179		compatible = "microcrystal,rv4162";
180		reg = <0x68>;
181		interrupt-parent = <&gpio5>;
182		interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
183	};
184};
185
186&i2c2 {
187	pinctrl-names = "default", "gpio";
188	pinctrl-0 = <&pinctrl_i2c2>;
189	pinctrl-1 = <&pinctrl_i2c2_gpio>;
190	sda-gpios = <&gpio1 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
191	scl-gpios = <&gpio1 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
192	status = "okay";
193};
194
195&i2c3 {
196	pinctrl-names = "default", "gpio";
197	pinctrl-0 = <&pinctrl_i2c3>;
198	pinctrl-1 = <&pinctrl_i2c3_gpio>;
199	sda-gpios = <&gpio3 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
200	scl-gpios = <&gpio3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
201	status = "okay";
202};
203
204&i2c4 {
205	pinctrl-names = "default", "gpio";
206	pinctrl-0 = <&pinctrl_i2c4>;
207	pinctrl-1 = <&pinctrl_i2c4_gpio>;
208	sda-gpios = <&gpio3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
209	scl-gpios = <&gpio3 8 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
210	status = "okay";
211};
212
213&mdio {
214	ethphy2: ethernet-phy@2 {
215		reg = <2>;
216		micrel,led-mode = <1>;
217		clocks = <&clks IMX6UL_CLK_ENET2_REF>;
218		clock-names = "rmii-ref";
219		status = "okay";
220	};
221};
222
223&pwm3 {
224	pinctrl-names = "default";
225	pinctrl-0 = <&pinctrl_pwm3>;
226	status = "okay";
227};
228
229&pwm6 {
230	pinctrl-names = "default";
231	pinctrl-0 = <&pinctrl_pwm6>;
232	status = "okay";
233};
234
235&pwm7 {
236	pinctrl-names = "default";
237	pinctrl-0 = <&pinctrl_pwm7>;
238	status = "okay";
239};
240
241&pwm8 {
242	pinctrl-names = "default";
243	pinctrl-0 = <&pinctrl_pwm8>;
244	status = "okay";
245};
246
247&uart3 {
248	pinctrl-names = "default";
249	pinctrl-0 = <&pinctrl_uart3>;
250	status = "okay";
251};
252
253/* UART4 * RS485  */
254&uart4 {
255	pinctrl-names = "default";
256	pinctrl-0 = <&pinctrl_uart4>;
257	rts-gpios = <&gpio3 2 GPIO_ACTIVE_HIGH>;
258	linux,rs485-enabled-at-boot-time;
259	status = "okay";
260};
261
262/* UART5 * RS232  */
263&uart5 {
264	pinctrl-names = "default";
265	pinctrl-0 = <&pinctrl_uart5>;
266	uart-has-rtscts;
267	status = "okay";
268};
269
270&uart7 {
271	pinctrl-names = "default";
272	pinctrl-0 = <&pinctrl_uart7>;
273	status = "okay";
274};
275
276/* USB */
277&usbotg1 {
278	pinctrl-names = "default";
279	pinctrl-0 = <&pinctrl_usb_otg1>;
280	vbus-supply = <&reg_usb_otg1_vbus>;
281	dr_mode = "host";
282	disable-over-current;
283	status = "okay";
284};
285
286&usbotg2 {
287	vbus-supply = <&reg_usb_hub_vbus>;
288	disable-over-current;
289	dr_mode = "host";
290	status = "okay";
291};
292
293&usdhc1 {
294	pinctrl-names = "default", "state_100mhz", "state_200mhz";
295	pinctrl-0 = <&pinctrl_usdhc1>;
296	pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
297	pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
298	cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
299	no-1-8-v;
300	keep-power-in-suspend;
301	wakeup-source;
302	status = "okay";
303};
304
305&usdhc2 {
306	status = "disabled";
307};
308
309&iomuxc_snvs {
310	pinctrl_rtc_int: rtcintgrp {
311		fsl,pins = <
312			MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01	0x17059
313		>;
314	};
315
316	pinctrl_stmpe: stmpegrp {
317		fsl,pins = <
318			MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03	0x17059
319		>;
320	};
321
322	pinctrl_tempsense: tempsensegrp {
323		fsl,pins = <
324			MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00	0x17059
325		>;
326	};
327
328	pinctrl_tpm: tpmgrp {
329		fsl,pins = <
330			MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02	0x17059
331		>;
332	};
333
334	pinctrl_usbhubpwr: usbhubpwrgrp {
335		fsl,pins = <
336			MX6ULL_PAD_SNVS_TAMPER5__GPIO5_IO05	0x17059
337		>;
338	};
339
340	pinctrl_user_leds_snvs: user_ledsgrp {
341		fsl,pins = <
342			MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09	0x79
343		>;
344	};
345};
346
347&iomuxc {
348	pinctrl_gpio: gpiogrp {
349		fsl,pins = <
350			MX6UL_PAD_CSI_DATA05__GPIO4_IO26	0x17059  /* nUART_MUX_RS232 */
351			MX6UL_PAD_CSI_DATA04__GPIO4_IO25	0x17059  /* nUART_MUX_DUAL_RX_TX */
352		>;
353	};
354
355	pinctrl_gpio_keys: gpiokeysgrp {
356		fsl,pins = <
357			MX6UL_PAD_UART1_CTS_B__GPIO1_IO18	0x79
358		>;
359	};
360
361	pinctrl_ecspi3: ecspi3grp {
362		fsl,pins = <
363			MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK	0x100b1
364			MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO	0x100b1
365			MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI	0x100b1
366			MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20	0x10b0
367		>;
368	};
369
370	pinctrl_ecspi1: ecspi1grp {
371		fsl,pins = <
372			MX6UL_PAD_LCD_DATA20__ECSPI1_SCLK	0x100b1
373			MX6UL_PAD_LCD_DATA23__ECSPI1_MISO	0x100b1
374			MX6UL_PAD_LCD_DATA22__ECSPI1_MOSI	0x100b1
375		>;
376	};
377
378	pinctrl_ecspi1_cs: ecspi1csgrp {
379		fsl,pins = <
380			MX6UL_PAD_LCD_DATA21__GPIO3_IO26	0x10b0
381			MX6UL_PAD_LCD_DATA05__GPIO3_IO10	0x10b0
382			MX6UL_PAD_LCD_DATA06__GPIO3_IO11	0x10b0
383		>;
384	};
385
386
387	pinctrl_enet2: enet2grp {
388		fsl,pins = <
389			MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN	0x1b0b0
390			MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER	0x1b0b0
391			MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00	0x1b0b0
392			MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01	0x1b0b0
393			MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN	0x1b010
394			MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00	0x1b010
395			MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01	0x1b010
396			MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2	0x4001b010
397		>;
398	};
399
400	pinctrl_flexcan1: flexcan1grp {
401		fsl,pins = <
402			MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX	0x0b0b0
403			MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX	0x0b0b0
404		>;
405	};
406
407	pinctrl_flexcan2: flexcan2grp {
408		fsl,pins = <
409			MX6UL_PAD_LCD_DATA10__FLEXCAN2_TX	0x0b0b0
410			MX6UL_PAD_LCD_DATA11__FLEXCAN2_RX	0x0b0b0
411		>;
412	};
413
414	princtrl_flexcan2_en: flexcan2engrp {
415		fsl,pins = <
416			MX6UL_PAD_UART1_CTS_B__GPIO1_IO18	0x17059
417		>;
418	};
419
420	pinctrl_i2c2: i2c2grp {
421		fsl,pins = <
422			MX6UL_PAD_GPIO1_IO00__I2C2_SCL	0xb0
423			MX6UL_PAD_GPIO1_IO01__I2C2_SDA	0xb0
424		>;
425	};
426
427	pinctrl_i2c2_gpio: i2c2gpiogrp {
428		fsl,pins = <
429			MX6UL_PAD_GPIO1_IO00__GPIO1_IO00	0xb0
430			MX6UL_PAD_GPIO1_IO01__GPIO1_IO01	0xb0
431		>;
432	};
433
434	pinctrl_i2c3: i2c3grp {
435		fsl,pins = <
436			MX6UL_PAD_LCD_DATA01__I2C3_SCL	0xb0
437			MX6UL_PAD_LCD_DATA00__I2C3_SDA	0xb0
438		>;
439	};
440
441	pinctrl_i2c3_gpio: i2c3gpiogrp {
442		fsl,pins = <
443			MX6UL_PAD_LCD_DATA01__GPIO3_IO06	0xb0
444			MX6UL_PAD_LCD_DATA00__GPIO3_IO05	0xb0
445		>;
446	};
447
448	pinctrl_i2c4: i2c4grp {
449		fsl,pins = <
450			MX6UL_PAD_LCD_DATA03__I2C4_SCL	0xb0
451			MX6UL_PAD_LCD_DATA02__I2C4_SDA	0xb0
452		>;
453	};
454
455	pinctrl_i2c4_gpio: i2c4gpiogrp {
456		fsl,pins = <
457			MX6UL_PAD_LCD_DATA03__GPIO3_IO08	0xb0
458			MX6UL_PAD_LCD_DATA02__GPIO3_IO07	0xb0
459		>;
460	};
461
462	pinctrl_pwm3: pwm3grp {
463		fsl,pins = <
464			MX6UL_PAD_GPIO1_IO04__PWM3_OUT	0x0b0b0
465		>;
466	};
467
468	pinctrl_pwm6: pwm6grp {
469		fsl,pins = <
470			MX6UL_PAD_JTAG_TDI__PWM6_OUT	0x0b0b0
471		>;
472	};
473
474	pinctrl_pwm7: pwm7grp {
475		fsl,pins = <
476			MX6UL_PAD_JTAG_TCK__PWM7_OUT	0x0b0b0
477		>;
478	};
479
480	pinctrl_pwm8: pwm8grp {
481		fsl,pins = <
482			MX6UL_PAD_JTAG_TRST_B__PWM8_OUT	0x0b0b0
483		>;
484	};
485
486	pinctrl_s25fl064_hold: s25fl064holdgrp {
487		fsl,pins = <
488			MX6UL_PAD_LCD_DATA12__GPIO3_IO17	0x100b1
489		>;
490	};
491
492	pinctrl_sai2: sai2grp {
493		fsl,pins = <
494			MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK	0x17088
495			MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC	0x17088
496			MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA	0x11088
497			MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA	0x11088
498			MX6UL_PAD_JTAG_TMS__SAI2_MCLK		0x17088
499		>;
500	};
501
502	pinctrl_uart3: uart3grp {
503		fsl,pins = <
504			MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX	0x1b0b1
505			MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX	0x1b0b1
506		>;
507	};
508
509	pinctrl_uart4: uart4grp {
510		fsl,pins = <
511			MX6UL_PAD_LCD_CLK__UART4_DCE_TX		0x1b0b1
512			MX6UL_PAD_LCD_ENABLE__UART4_DCE_RX	0x1b0b1
513			MX6UL_PAD_LCD_HSYNC__GPIO3_IO02	0x1b0b1
514		>;
515	};
516
517	pinctrl_uart5: uart5grp {
518		fsl,pins = <
519			MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX	0x1b0b1
520			MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX	0x1b0b1
521		>;
522	};
523
524	pinctrl_uart7: uart7grp {
525		fsl,pins = <
526			MX6UL_PAD_LCD_DATA16__UART7_DCE_TX	0x1b0b1
527			MX6UL_PAD_LCD_DATA17__UART7_DCE_RX	0x1b0b1
528		>;
529	};
530
531	pinctrl_usb_otg1: usbotg1grp {
532		fsl,pins = <
533			MX6UL_PAD_CSI_DATA06__GPIO4_IO27	0x80
534		>;
535	};
536
537	pinctrl_usbotg1pwr: usbotg1pwrgrp {
538		fsl,pins = <
539			MX6UL_PAD_CSI_DATA07__GPIO4_IO28	0x17059
540		>;
541	};
542
543	pinctrl_usdhc1: usdhc1grp {
544		fsl,pins = <
545			MX6UL_PAD_SD1_CMD__USDHC1_CMD		0x17059
546			MX6UL_PAD_SD1_CLK__USDHC1_CLK		0x10059
547			MX6UL_PAD_SD1_DATA0__USDHC1_DATA0	0x17059
548			MX6UL_PAD_SD1_DATA1__USDHC1_DATA1	0x17059
549			MX6UL_PAD_SD1_DATA2__USDHC1_DATA2	0x17059
550			MX6UL_PAD_SD1_DATA3__USDHC1_DATA3	0x17059
551			MX6UL_PAD_UART1_RTS_B__GPIO1_IO19	0x17059
552		>;
553	};
554
555	pinctrl_usdhc1_100mhz: usdhc1100mhzgrp {
556		fsl,pins = <
557			MX6UL_PAD_SD1_CMD__USDHC1_CMD		0x170b9
558			MX6UL_PAD_SD1_CLK__USDHC1_CLK		0x100b9
559			MX6UL_PAD_SD1_DATA0__USDHC1_DATA0	0x170b9
560			MX6UL_PAD_SD1_DATA1__USDHC1_DATA1	0x170b9
561			MX6UL_PAD_SD1_DATA2__USDHC1_DATA2	0x170b9
562			MX6UL_PAD_SD1_DATA3__USDHC1_DATA3	0x170b9
563		>;
564	};
565
566	pinctrl_usdhc1_200mhz: usdhc1200mhzgrp {
567		fsl,pins = <
568			MX6UL_PAD_SD1_CMD__USDHC1_CMD		0x170f9
569			MX6UL_PAD_SD1_CLK__USDHC1_CLK		0x100f9
570			MX6UL_PAD_SD1_DATA0__USDHC1_DATA0	0x170f9
571			MX6UL_PAD_SD1_DATA1__USDHC1_DATA1	0x170f9
572			MX6UL_PAD_SD1_DATA2__USDHC1_DATA2	0x170f9
573			MX6UL_PAD_SD1_DATA3__USDHC1_DATA3	0x170f9
574		>;
575	};
576
577	pinctrl_user_leds: userledsgrp {
578		fsl,pins = <
579			MX6UL_PAD_GPIO1_IO03__GPIO1_IO03	0x79
580		>;
581	};
582};
583