xref: /linux/arch/arm64/boot/dts/freescale/imx8mp-tx8p-ml81-moduline-display-106.dts (revision 55a42f78ffd386e01a5404419f8c5ded7db70a21)
1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright 2025 GOcontroll B.V.
4 * Author: Maud Spierings <maudspierings@gocontroll.com>
5 */
6
7/dts-v1/;
8
9#include "imx8mp-tx8p-ml81.dtsi"
10
11/ {
12	compatible = "gocontroll,moduline-display", "fsl,imx8mp";
13	chassis-type = "embedded";
14	hardware = "Moduline Display V1.06";
15	model = "GOcontroll Moduline Display baseboard";
16
17	aliases {
18		can0 = &flexcan1;
19		can1 = &flexcan2;
20		ethernet0 = &eqos;
21		ethernet1 = &fec;
22		mmc0 = &usdhc3;
23		mmc1 = &usdhc2;
24		rtc0 = &rtc_pcf; /* i2c rtc is the main rtc */
25		rtc1 = &snvs_rtc;
26		spi0 = &ecspi2; /* spidev number compatibility */
27		spi1 = &ecspi1; /* spidev number compatibility */
28	};
29
30	chosen {
31		stdout-path = "serial0:115200n8";
32	};
33
34	external-sensor-supply {
35		compatible = "regulator-output";
36		vout-supply = <&reg_5v0_sensor>;
37	};
38
39	flexcan1_phy: can-phy0 {
40		compatible = "ti,tcan1051", "ti,tcan1042";
41		#phy-cells = <0>;
42		pinctrl-0 = <&pinctrl_flexcan1_stby>;
43		pinctrl-names = "default";
44		max-bitrate = <5000000>;
45		standby-gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>;
46	};
47
48	flexcan2_phy: can-phy1 {
49		compatible = "ti,tcan1051", "ti,tcan1042";
50		#phy-cells = <0>;
51		pinctrl-0 = <&pinctrl_flexcan2_stby>;
52		pinctrl-names = "default";
53		max-bitrate = <5000000>;
54		standby-gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
55	};
56
57	reg_1v8_per: regulator-1v8-per {
58		compatible = "regulator-fixed";
59		pinctrl-0 = <&pinctrl_reg_1v8>;
60		pinctrl-names = "default";
61		power-supply = <&reg_3v3_per>;
62		regulator-max-microvolt = <1800000>;
63		regulator-min-microvolt = <1800000>;
64		regulator-name = "1v8-per";
65		gpio = <&gpio3 25 GPIO_ACTIVE_HIGH>;
66		enable-active-high;
67	};
68
69	reg_3v3_per: regulator-3v3-per {
70		compatible = "regulator-fixed";
71		power-supply = <&reg_6v4>;
72		regulator-always-on;
73		regulator-max-microvolt = <3300000>;
74		regulator-min-microvolt = <3300000>;
75		regulator-name = "3v3-per";
76	};
77
78	reg_5v0: regulator-5v0 {
79		compatible = "regulator-fixed";
80		power-supply = <&reg_6v4>;
81		regulator-always-on;
82		regulator-max-microvolt = <5000000>;
83		regulator-min-microvolt = <5000000>;
84		regulator-name = "5v0";
85	};
86
87	reg_5v0_sensor: regulator-5v0-sensor {
88		compatible = "regulator-fixed";
89		pinctrl-0 = <&pinctrl_reg_5v0_sensor>;
90		pinctrl-names = "default";
91		regulator-max-microvolt = <5000000>;
92		regulator-min-microvolt = <5000000>;
93		regulator-name = "5v0-supply-external-sensor";
94		gpio = <&gpio4 9 GPIO_ACTIVE_HIGH>;
95		enable-active-high;
96	};
97
98	reg_6v4: regulator-6v4 {
99		compatible = "regulator-fixed";
100		regulator-always-on;
101		regulator-max-microvolt = <6400000>;
102		regulator-min-microvolt = <6400000>;
103		regulator-name = "6v4";
104	};
105
106	sound {
107		compatible = "simple-audio-card";
108		simple-audio-card,bitclock-master = <&cpudai>;
109		simple-audio-card,format = "i2s";
110		simple-audio-card,frame-master = <&cpudai>;
111		simple-audio-card,name = "tas2505-audio";
112		simple-audio-card,routing = "Speaker", "DAC";
113		simple-audio-card,widgets = "Speaker", "Speaker External";
114
115		simple-audio-card,codec {
116			sound-dai = <&tas2505>;
117		};
118
119		cpudai: simple-audio-card,cpu {
120			sound-dai = <&sai6>;
121		};
122	};
123
124	wifi_powerseq: wifi-powerseq {
125		compatible = "mmc-pwrseq-simple";
126		pinctrl-0 = <&pinctrl_wl_reg>;
127		pinctrl-names = "default";
128		post-power-on-delay-ms = <100>;
129		power-off-delay-us = <500000>;
130		reset-gpios = <&gpio2 19 GPIO_ACTIVE_LOW>;
131	};
132};
133
134&ecspi1 {
135	cs-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>,
136		   <&gpio1 11 GPIO_ACTIVE_LOW>,
137		   <&gpio1 10 GPIO_ACTIVE_LOW>;
138	pinctrl-0 = <&pinctrl_ecspi1>;
139	pinctrl-names = "default";
140	status = "okay";
141
142	connector@0 {
143		compatible = "gocontroll,moduline-module-slot";
144		reg = <0>;
145		interrupt-parent = <&gpio4>;
146		interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
147		i2c-bus = <&i2c2>;
148		reset-gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
149		slot-number = <1>;
150		spi-max-frequency = <54000000>;
151		sync-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
152		vddhpp-supply = <&reg_6v4>;
153		vddp-supply = <&reg_5v0>;
154		vdd-supply = <&reg_3v3_per>;
155	};
156
157	connector@1 {
158		compatible = "gocontroll,moduline-module-slot";
159		reg = <1>;
160		interrupt-parent = <&gpio1>;
161		interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
162		i2c-bus = <&i2c2>;
163		reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
164		slot-number = <2>;
165		spi-max-frequency = <54000000>;
166		sync-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
167		vddhpp-supply = <&reg_6v4>;
168		vddp-supply = <&reg_5v0>;
169		vdd-supply = <&reg_3v3_per>;
170	};
171
172	adc@2 {
173		compatible = "microchip,mcp3004";
174		reg = <2>;
175		spi-max-frequency = <2300000>;
176		vref-supply = <&reg_vdd_3v3>;
177	};
178};
179
180&flexcan1 {
181	phys = <&flexcan1_phy>;
182	pinctrl-0 = <&pinctrl_flexcan1>;
183	pinctrl-names = "default";
184	status = "okay";
185};
186
187&flexcan2 {
188	phys = <&flexcan2_phy>;
189	pinctrl-0 = <&pinctrl_flexcan2>;
190	pinctrl-names = "default";
191	status = "okay";
192};
193
194&i2c2 {
195	clock-frequency = <400000>;
196	pinctrl-0 = <&pinctrl_i2c2>;
197	pinctrl-1 = <&pinctrl_i2c2_gpio>;
198	pinctrl-names = "default", "gpio";
199	scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
200	sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
201	status = "okay";
202};
203
204&i2c4 {
205	clock-frequency = <400000>;
206	pinctrl-0 = <&pinctrl_i2c4>;
207	pinctrl-1 = <&pinctrl_i2c4_gpio>;
208	pinctrl-names = "default", "gpio";
209	scl-gpios = <&gpio5 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
210	sda-gpios = <&gpio5 13 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
211	status = "okay";
212
213	tas2505: audio-codec@18 {
214		compatible = "ti,tas2505";
215		reg = <0x18>;
216		clocks = <&clk IMX8MP_CLK_AUDIOMIX_SAI6_MCLK1>;
217		clock-names = "mclk";
218		#sound-dai-cells = <0>;
219		aic32x4-gpio-func = <0xff 0xff 0xff 0xff 0xff>;
220		av-supply = <&reg_1v8_per>;
221		dv-supply = <&reg_1v8_per>;
222		iov-supply = <&reg_vdd_3v3>;
223		pinctrl-0 = <&pinctrl_tas_reset>;
224		pinctrl-names = "default";
225		reset-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
226	};
227
228	rtc_pcf: rtc@51 {
229		compatible = "nxp,pcf85063a";
230		reg = <0x51>;
231		quartz-load-femtofarads = <7000>;
232
233		clock {
234			compatible = "fixed-clock";
235			#clock-cells = <0>;
236			clock-frequency = <32768>;
237		};
238	};
239};
240
241&iomuxc {
242	pinctrl_bt: btgrp {
243		fsl,pins = <
244			MX8MP_IOMUXC_GPIO1_IO14__GPIO1_IO14
245				MX8MP_DSE_X1
246			MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12
247				(MX8MP_PULL_UP | MX8MP_PULL_ENABLE | MX8MP_HYS_SCHMITT)
248			MX8MP_IOMUXC_GPIO1_IO15__GPIO1_IO15
249				MX8MP_DSE_X1
250		>;
251	};
252
253	pinctrl_ecspi1: ecspi1grp {
254		fsl,pins = <
255			MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI
256				MX8MP_DSE_X4
257			MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO
258				(MX8MP_DSE_X4 | MX8MP_HYS_SCHMITT)
259			MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK
260				MX8MP_DSE_X4
261			MX8MP_IOMUXC_SD2_CD_B__GPIO2_IO12
262				MX8MP_DSE_X1
263			MX8MP_IOMUXC_GPIO1_IO11__GPIO1_IO11
264				MX8MP_DSE_X1
265			MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10
266				MX8MP_DSE_X1
267		>;
268	};
269
270	pinctrl_flexcan1: flexcan1grp {
271		fsl,pins = <
272			 MX8MP_IOMUXC_SPDIF_RX__CAN1_RX
273				 (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
274			 MX8MP_IOMUXC_SPDIF_TX__CAN1_TX
275				 (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
276		>;
277	};
278
279	pinctrl_flexcan1_stby: flexcan1stbygrp {
280		fsl,pins = <
281			MX8MP_IOMUXC_SAI1_RXD1__GPIO4_IO03
282				(MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
283		>;
284	};
285
286	pinctrl_flexcan2: flexcan2grp {
287		fsl,pins = <
288			MX8MP_IOMUXC_UART3_TXD__CAN2_RX
289				(MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
290			MX8MP_IOMUXC_UART3_RXD__CAN2_TX
291				(MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
292		>;
293	};
294
295	pinctrl_flexcan2_stby: flexcan2stbygrp {
296		fsl,pins = <
297			MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09
298				(MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
299		>;
300	};
301
302	pinctrl_i2c2: i2c2grp {
303		fsl,pins = <
304			MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL
305				MX8MP_I2C_DEFAULT
306			MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA
307				MX8MP_I2C_DEFAULT
308		>;
309	};
310
311	pinctrl_i2c2_gpio: i2c2-gpiogrp {
312		fsl,pins = <
313			MX8MP_IOMUXC_I2C2_SCL__GPIO5_IO16
314				MX8MP_I2C_DEFAULT
315			MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17
316				MX8MP_I2C_DEFAULT
317		>;
318	};
319
320	pinctrl_i2c4: i2c4grp {
321		fsl,pins = <
322			MX8MP_IOMUXC_ECSPI2_MISO__I2C4_SCL
323				MX8MP_I2C_DEFAULT
324			MX8MP_IOMUXC_ECSPI2_SS0__I2C4_SDA
325				MX8MP_I2C_DEFAULT
326		>;
327	};
328
329	pinctrl_i2c4_gpio: i2c4-gpiogrp {
330		fsl,pins = <
331			MX8MP_IOMUXC_ECSPI2_MISO__GPIO5_IO12
332				MX8MP_I2C_DEFAULT
333			MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13
334				MX8MP_I2C_DEFAULT
335		>;
336	};
337
338	pinctrl_usdhc2: pinctrlusdhc2grp {
339		fsl,pins = <
340			MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK
341				(MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_ENABLE)
342			MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD
343				(MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
344			MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0
345				(MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
346			MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1
347				(MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
348			MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2
349				(MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
350			MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3
351				(MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT)
352		>;
353	};
354
355	pinctrl_reg_1v8: reg-1v8-grp {
356		fsl,pins = <
357			MX8MP_IOMUXC_SAI5_MCLK__GPIO3_IO25
358				MX8MP_DSE_X1
359		>;
360	};
361
362	pinctrl_reg_5v0_sensor: reg-5v0-sensorgrp {
363		fsl,pins = <
364			MX8MP_IOMUXC_SAI1_RXD7__GPIO4_IO09
365				MX8MP_DSE_X1
366		>;
367	};
368
369	pinctrl_sai6: sai6grp {
370		fsl,pins = <
371			MX8MP_IOMUXC_SAI1_TXD6__AUDIOMIX_SAI6_TX_SYNC
372				(MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
373			MX8MP_IOMUXC_SAI1_RXD4__AUDIOMIX_SAI6_TX_BCLK
374				(MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
375			MX8MP_IOMUXC_SAI1_TXD5__AUDIOMIX_SAI6_TX_DATA00
376				(MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
377			MX8MP_IOMUXC_SAI1_TXD7__AUDIOMIX_SAI6_MCLK
378				(MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
379			MX8MP_IOMUXC_SAI1_RXD5__AUDIOMIX_SAI6_RX_DATA00
380				(MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT)
381		>;
382	};
383
384	pinctrl_tas_reset: tasresetgrp {
385		fsl,pins = <
386			MX8MP_IOMUXC_SAI5_RXD3__GPIO3_IO24
387				MX8MP_DSE_X1
388		>;
389	};
390
391	pinctrl_uart1: uart1grp {
392		fsl,pins = <
393			MX8MP_IOMUXC_UART1_RXD__UART1_DCE_RX
394				(MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
395			MX8MP_IOMUXC_UART1_TXD__UART1_DCE_TX
396				(MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
397		>;
398	};
399
400	pinctrl_uart2: uart2grp {
401		fsl,pins = <
402			MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX
403				(MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
404			MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX
405				(MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
406			MX8MP_IOMUXC_SAI3_RXD__UART2_DCE_RTS
407				(MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
408			MX8MP_IOMUXC_SAI3_RXC__UART2_DCE_CTS
409				(MX8MP_PULL_UP | MX8MP_PULL_ENABLE)
410		>;
411	};
412
413	pinctrl_wdog: wdoggrp {
414		fsl,pins = <
415			MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B
416				(MX8MP_DSE_X6 | MX8MP_HYS_SCHMITT)
417		>;
418	};
419
420	pinctrl_wl_int: wlintgrp {
421		fsl,pins = <
422			MX8MP_IOMUXC_GPIO1_IO13__GPIO1_IO13
423				(MX8MP_PULL_UP | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE)
424		>;
425	};
426
427	pinctrl_wl_reg: wlreggrp {
428		fsl,pins = <
429			MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19
430				MX8MP_DSE_X1
431		>;
432	};
433};
434
435&sai6 {
436	assigned-clocks = <&clk IMX8MP_CLK_SAI6>;
437	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
438	assigned-clock-rates = <12288000>;
439	pinctrl-0 = <&pinctrl_sai6>;
440	pinctrl-names = "default";
441	fsl,sai-mclk-direction-output;
442	status = "okay";
443};
444
445&uart1 {
446	pinctrl-0 = <&pinctrl_uart1>;
447	pinctrl-names = "default";
448	status = "okay";
449};
450
451&uart2 {
452	pinctrl-0 = <&pinctrl_uart2>;
453	pinctrl-names = "default";
454	uart-has-rtscts;
455	status = "okay";
456
457	bluetooth {
458		compatible = "infineon,cyw43439-bt", "brcm,bcm4329-bt";
459		interrupt-parent = <&gpio1>;
460		interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
461		interrupt-names = "host-wakeup";
462		device-wakeup-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
463		max-speed = <921600>;
464		pinctrl-0 = <&pinctrl_bt>;
465		pinctrl-names = "default";
466		shutdown-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
467		vbat-supply = <&reg_3v3_per>;
468		vddio-supply = <&reg_3v3_per>;
469	};
470};
471
472&usb3_0 {
473	status = "okay";
474};
475
476&usb3_1 {
477	status = "okay";
478};
479
480&usb3_phy0 {
481	status = "okay";
482};
483
484&usb3_phy1 {
485	status = "okay";
486};
487
488&usb_dwc3_0 {
489	dr_mode = "peripheral";
490};
491
492&usdhc2 {
493	#address-cells = <1>;
494	#size-cells = <0>;
495	assigned-clocks = <&clk IMX8MP_CLK_USDHC2>;
496	assigned-clock-rates = <50000000>;
497	cap-power-off-card;
498	keep-power-in-suspend;
499	max-frequency = <50000000>;
500	mmc-pwrseq = <&wifi_powerseq>;
501	non-removable;
502	pinctrl-0 = <&pinctrl_usdhc2>;
503	pinctrl-names = "default";
504	sd-uhs-sdr25;
505	vmmc-supply = <&reg_3v3_per>;
506	status = "okay";
507
508	wifi@1 {
509		compatible = "infineon,cyw43439-fmac", "brcm,bcm4329-fmac";
510		reg = <1>;
511		interrupt-parent = <&gpio1>;
512		interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
513		interrupt-names = "host-wake";
514		pinctrl-0 = <&pinctrl_wl_int>;
515		pinctrl-names = "default";
516		brcm,board-type = "GOcontroll,moduline";
517	};
518};
519
520&wdog1 {
521	pinctrl-0 = <&pinctrl_wdog>;
522	pinctrl-names = "default";
523	fsl,ext-reset-output;
524	status = "okay";
525};
526