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