1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright 2022 Marek Vasut <marex@denx.de>
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/net/qca-ar803x.h>
9#include <dt-bindings/phy/phy-imx8-pcie.h>
10#include "imx8mm.dtsi"
11
12/ {
13	model = "Data Modul i.MX8M Mini eDM SBC";
14	compatible = "dmo,imx8mm-data-modul-edm-sbc", "fsl,imx8mm";
15
16	aliases {
17		rtc0 = &rtc;
18		rtc1 = &snvs_rtc;
19	};
20
21	chosen {
22		stdout-path = &uart3;
23	};
24
25	memory@40000000 {
26		device_type = "memory";
27		/* There are 1/2/4 GiB options, adjusted by bootloader. */
28		reg = <0x0 0x40000000 0 0x40000000>;
29	};
30
31	backlight: backlight {
32		compatible = "pwm-backlight";
33		pinctrl-names = "default";
34		pinctrl-0 = <&pinctrl_panel_backlight>;
35		brightness-levels = <0 1 10 20 30 40 50 60 70 75 80 90 100>;
36		default-brightness-level = <7>;
37		enable-gpios = <&gpio3 0 GPIO_ACTIVE_HIGH>;
38		pwms = <&pwm1 0 5000000 0>;
39		/* Disabled by default, unless display board plugged in. */
40		status = "disabled";
41	};
42
43	clk_xtal25: clk-xtal25 {
44		compatible = "fixed-clock";
45		#clock-cells = <0>;
46		clock-frequency = <25000000>;
47	};
48
49	clk_xtal32k: clk-xtal32k {
50		compatible = "fixed-clock";
51		#clock-cells = <0>;
52		clock-frequency = <32768>;
53	};
54
55	panel: panel {
56		backlight = <&backlight>;
57		power-supply = <&reg_panel_vcc>;
58		/* Disabled by default, unless display board plugged in. */
59		status = "disabled";
60	};
61
62	reg_panel_vcc: regulator-panel-vcc {
63		compatible = "regulator-fixed";
64		pinctrl-names = "default";
65		pinctrl-0 = <&pinctrl_panel_vcc_reg>;
66		regulator-name = "PANEL_VCC";
67		regulator-min-microvolt = <5000000>;
68		regulator-max-microvolt = <5000000>;
69		gpio = <&gpio3 6 0>;
70		enable-active-high;
71		/* Disabled by default, unless display board plugged in. */
72		status = "disabled";
73	};
74
75	reg_usdhc2_vcc: regulator-usdhc2-vcc {
76		compatible = "regulator-fixed";
77		pinctrl-names = "default";
78		pinctrl-0 = <&pinctrl_usdhc2_vcc_reg>;
79		regulator-name = "V_3V3_SD";
80		regulator-min-microvolt = <3300000>;
81		regulator-max-microvolt = <3300000>;
82		gpio = <&gpio2 19 0>;
83		enable-active-high;
84	};
85
86	watchdog {
87		/* TPS3813 */
88		pinctrl-names = "default";
89		pinctrl-0 = <&pinctrl_watchdog_gpio>;
90		compatible = "linux,wdt-gpio";
91		always-running;
92		gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
93		hw_algo = "level";
94		/* Reset triggers in 2..3 seconds */
95		hw_margin_ms = <1500>;
96		/* Disabled by default */
97		status = "disabled";
98	};
99};
100
101&A53_0 {
102	cpu-supply = <&buck2_reg>;
103};
104
105&A53_1 {
106	cpu-supply = <&buck2_reg>;
107};
108
109&A53_2 {
110	cpu-supply = <&buck2_reg>;
111};
112
113&A53_3 {
114	cpu-supply = <&buck2_reg>;
115};
116
117&ddrc {
118	operating-points-v2 = <&ddrc_opp_table>;
119
120	ddrc_opp_table: opp-table {
121		compatible = "operating-points-v2";
122
123		opp-25000000 {
124			opp-hz = /bits/ 64 <25000000>;
125		};
126
127		opp-100000000 {
128			opp-hz = /bits/ 64 <100000000>;
129		};
130
131		opp-750000000 {
132			opp-hz = /bits/ 64 <750000000>;
133		};
134	};
135};
136
137&ecspi1 {
138	pinctrl-names = "default";
139	pinctrl-0 = <&pinctrl_ecspi1>;
140	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
141	status = "okay";
142
143	flash@0 {	/* W25Q128FVSI */
144		compatible = "jedec,spi-nor";
145		m25p,fast-read;
146		spi-max-frequency = <50000000>;
147		reg = <0>;
148	};
149};
150
151&ecspi2 {	/* Feature connector SPI */
152	pinctrl-names = "default";
153	pinctrl-0 = <&pinctrl_ecspi2>;
154	cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
155	/* Disabled by default, unless feature board plugged in. */
156	status = "disabled";
157};
158
159&ecspi3 {	/* Display connector SPI */
160	pinctrl-names = "default";
161	pinctrl-0 = <&pinctrl_ecspi3>;
162	cs-gpios = <&gpio5 25 GPIO_ACTIVE_LOW>;
163	/* Disabled by default, unless display board plugged in. */
164	status = "disabled";
165};
166
167&fec1 {
168	pinctrl-names = "default";
169	pinctrl-0 = <&pinctrl_fec1>;
170	phy-mode = "rgmii-id";
171	phy-handle = <&fec1_phy>;
172	phy-supply = <&buck4_reg>;
173	fsl,magic-packet;
174	status = "okay";
175
176	mdio {
177		#address-cells = <1>;
178		#size-cells = <0>;
179
180		/* Atheros AR8031 PHY */
181		fec1_phy: ethernet-phy@0 {
182			compatible = "ethernet-phy-ieee802.3-c22";
183			reg = <0>;
184			/*
185			 * Dedicated ENET_WOL# signal is unused, the PHY
186			 * can wake the SoC up via INT signal as well.
187			 */
188			interrupts-extended = <&gpio1 15 IRQ_TYPE_LEVEL_LOW>;
189			reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
190			reset-assert-us = <10000>;
191			reset-deassert-us = <10000>;
192			qca,keep-pll-enabled;
193			vddio-supply = <&vddio>;
194
195			vddio: vddio-regulator {
196				regulator-name = "VDDIO";
197				regulator-min-microvolt = <1800000>;
198				regulator-max-microvolt = <1800000>;
199			};
200
201			vddh: vddh-regulator {
202				regulator-name = "VDDH";
203			};
204		};
205	};
206};
207
208&gpio1 {
209	gpio-line-names =
210		"", "ENET_RST#", "WDOG_B#", "PMIC_INT#",
211		"", "M2-B_PCIE_RST#", "M2-B_PCIE_WAKE#", "RTC_IRQ#",
212		"WDOG_KICK#", "M2-B_PCIE_CLKREQ#",
213		"USB1_OTG_ID_3V3", "ENET_WOL#",
214		"", "", "", "ENET_INT#",
215		"", "", "", "", "", "", "", "",
216		"", "", "", "", "", "", "", "";
217};
218
219&gpio2 {
220	gpio-line-names =
221		"MEMCFG2", "MEMCFG1", "DSI_RESET_1V8#", "DSI_IRQ_1V8#",
222		"M2-B_FULL_CARD_PWROFF_1V8#", "EEPROM_WP_1V8#",
223		"PCIE_CLK_GEN_CLKPWRGD_PD_1V8#", "GRAPHICS_PRSNT_1V8#",
224		"MEMCFG0", "WDOG_EN",
225		"M2-B_W_DISABLE1_WWAN_1V8#", "M2-B_W_DISABLE2_GPS_1V8#",
226		"", "", "", "",
227		"", "", "", "SD2_RESET#", "", "", "", "",
228		"", "", "", "", "", "", "", "";
229};
230
231&gpio3 {
232	gpio-line-names =
233		"BL_ENABLE_1V8", "PG_V_IN_VAR#", "", "",
234		"", "", "TFT_ENABLE_1V8", "GRAPHICS_GPIO0_1V8",
235		"CSI_PD_1V8", "CSI_RESET_1V8#", "", "",
236		"", "", "", "",
237		"", "", "", "M2-B_WAKE_WWAN_1V8#",
238		"M2-B_RESET_1V8#", "", "", "",
239		"", "", "", "", "", "", "", "";
240};
241
242&gpio4 {
243	gpio-line-names =
244		"NC0", "NC1", "BOOTCFG0", "BOOTCFG1",
245		"BOOTCFG2", "BOOTCFG3", "BOOTCFG4", "BOOTCFG5",
246		"BOOTCFG6", "BOOTCFG7", "NC10", "NC11",
247		"BOOTCFG8", "BOOTCFG9", "BOOTCFG10", "BOOTCFG11",
248		"BOOTCFG12", "BOOTCFG13", "BOOTCFG14", "BOOTCFG15",
249		"NC20", "", "", "",
250		"", "CAN_INT#", "CAN_RST#", "GPIO4_IO27",
251		"DIS_USB_DN2", "", "", "";
252};
253
254&gpio5 {
255	gpio-line-names =
256		"", "DIS_USB_DN1", "USBHUB_RESET#", "GPIO5_IO03",
257		"GPIO5_IO04", "", "", "",
258		"", "SPI1_CS#", "", "",
259		"", "SPI2_CS#", "I2C1_SCL_3V3", "I2C1_SDA_3V3",
260		"I2C2_SCL_3V3", "I2C2_SDA_3V3", "I2C3_SCL_3V3", "I2C3_SDA_3V3",
261		"I2C4_SCL_3V3", "I2C4_SDA_3V3", "", "",
262		"", "SPI3_CS#", "", "", "", "", "", "";
263};
264
265&i2c1 {
266	/* IMX8MM ERRATA e7805 -- I2C is limited to 384 kHz due to SoC bug */
267	clock-frequency = <100000>;
268	pinctrl-names = "default", "gpio";
269	pinctrl-0 = <&pinctrl_i2c1>;
270	pinctrl-1 = <&pinctrl_i2c1_gpio>;
271	scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
272	sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
273	status = "okay";
274
275	pmic: pmic@4b {
276		compatible = "rohm,bd71847";
277		reg = <0x4b>;
278		#clock-cells = <0>;
279		clocks = <&clk_xtal32k>;
280		clock-output-names = "clk-32k-out";
281		pinctrl-names = "default";
282		pinctrl-0 = <&pinctrl_pmic>;
283		interrupt-parent = <&gpio1>;
284		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
285		rohm,reset-snvs-powered;
286
287		/*
288		 * i.MX 8M Mini Data Sheet for Consumer Products
289		 * 3.1.3 Operating ranges
290		 * MIMX8MM4DVTLZAA
291		 */
292		regulators {
293			/* VDD_SOC */
294			buck1_reg: BUCK1 {
295				regulator-name = "buck1";
296				regulator-min-microvolt = <850000>;
297				regulator-max-microvolt = <850000>;
298				regulator-boot-on;
299				regulator-always-on;
300				regulator-ramp-delay = <1250>;
301			};
302
303			/* VDD_ARM */
304			buck2_reg: BUCK2 {
305				regulator-name = "buck2";
306				regulator-min-microvolt = <850000>;
307				regulator-max-microvolt = <1050000>;
308				regulator-boot-on;
309				regulator-always-on;
310				regulator-ramp-delay = <1250>;
311				rohm,dvs-run-voltage = <1000000>;
312				rohm,dvs-idle-voltage = <950000>;
313			};
314
315			/* VDD_DRAM, BUCK5 */
316			buck3_reg: BUCK3 {
317				regulator-name = "buck3";
318				/* 1.5 GHz DDR bus clock */
319				regulator-min-microvolt = <900000>;
320				regulator-max-microvolt = <1000000>;
321				regulator-boot-on;
322				regulator-always-on;
323			};
324
325			/* 3V3_VDD, BUCK6 */
326			buck4_reg: BUCK4 {
327				regulator-name = "buck4";
328				regulator-min-microvolt = <3300000>;
329				regulator-max-microvolt = <3300000>;
330				regulator-boot-on;
331				regulator-always-on;
332			};
333
334			/* 1V8_VDD, BUCK7 */
335			buck5_reg: BUCK5 {
336				regulator-name = "buck5";
337				regulator-min-microvolt = <1800000>;
338				regulator-max-microvolt = <1800000>;
339				regulator-boot-on;
340				regulator-always-on;
341			};
342
343			/* 1V1_NVCC_DRAM, BUCK8 */
344			buck6_reg: BUCK6 {
345				regulator-name = "buck6";
346				regulator-min-microvolt = <1100000>;
347				regulator-max-microvolt = <1100000>;
348				regulator-boot-on;
349				regulator-always-on;
350			};
351
352			/* 1V8_NVCC_SNVS */
353			ldo1_reg: LDO1 {
354				regulator-name = "ldo1";
355				regulator-min-microvolt = <1800000>;
356				regulator-max-microvolt = <1800000>;
357				regulator-boot-on;
358				regulator-always-on;
359			};
360
361			/* 0V8_VDD_SNVS */
362			ldo2_reg: LDO2 {
363				regulator-name = "ldo2";
364				regulator-min-microvolt = <800000>;
365				regulator-max-microvolt = <800000>;
366				regulator-boot-on;
367				regulator-always-on;
368			};
369
370			/* 1V8_VDDA */
371			ldo3_reg: LDO3 {
372				regulator-name = "ldo3";
373				regulator-min-microvolt = <1800000>;
374				regulator-max-microvolt = <1800000>;
375				regulator-boot-on;
376				regulator-always-on;
377			};
378
379			/* 0V9_VDD_PHY */
380			ldo4_reg: LDO4 {
381				regulator-name = "ldo4";
382				regulator-min-microvolt = <900000>;
383				regulator-max-microvolt = <900000>;
384				regulator-boot-on;
385				regulator-always-on;
386			};
387
388			/* 1V2_VDD_PHY */
389			ldo6_reg: LDO6 {
390				regulator-name = "ldo6";
391				regulator-min-microvolt = <1200000>;
392				regulator-max-microvolt = <1200000>;
393				regulator-boot-on;
394				regulator-always-on;
395			};
396		};
397	};
398};
399
400&i2c2 {
401	/* IMX8MM ERRATA e7805 -- I2C is limited to 384 kHz due to SoC bug */
402	clock-frequency = <100000>;
403	pinctrl-names = "default", "gpio";
404	pinctrl-0 = <&pinctrl_i2c2>;
405	pinctrl-1 = <&pinctrl_i2c2_gpio>;
406	scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
407	sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
408	status = "okay";
409
410	usb-hub@2c {
411		pinctrl-names = "default";
412		pinctrl-0 = <&pinctrl_usb_hub>;
413		compatible = "microchip,usb2514bi";
414		reg = <0x2c>;
415		individual-port-switching;
416		reset-gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
417		self-powered;
418	};
419
420	eeprom: eeprom@50 {
421		compatible = "atmel,24c32";
422		reg = <0x50>;
423		pagesize = <32>;
424	};
425
426	rtc: rtc@68 {
427		pinctrl-names = "default";
428		pinctrl-0 = <&pinctrl_rtc>;
429		compatible = "st,m41t62";
430		reg = <0x68>;
431		interrupts-extended = <&gpio1 7 IRQ_TYPE_LEVEL_LOW>;
432	};
433
434	pcieclk: clk@6a {
435		compatible = "renesas,9fgv0241";
436		reg = <0x6a>;
437		clocks = <&clk_xtal25>;
438		#clock-cells = <1>;
439	};
440};
441
442&i2c3 {	/* Display connector I2C */
443	/* IMX8MM ERRATA e7805 -- I2C is limited to 384 kHz due to SoC bug */
444	clock-frequency = <320000>;
445	pinctrl-names = "default", "gpio";
446	pinctrl-0 = <&pinctrl_i2c3>;
447	pinctrl-1 = <&pinctrl_i2c3_gpio>;
448	scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
449	sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
450	status = "okay";
451};
452
453&i2c4 {	/* Feature connector I2C */
454	/* IMX8MM ERRATA e7805 -- I2C is limited to 384 kHz due to SoC bug */
455	clock-frequency = <320000>;
456	pinctrl-names = "default", "gpio";
457	pinctrl-0 = <&pinctrl_i2c4>;
458	pinctrl-1 = <&pinctrl_i2c4_gpio>;
459	scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
460	sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
461	status = "okay";
462};
463
464&iomuxc {
465	pinctrl-names = "default";
466	pinctrl-0 = <&pinctrl_hog_feature>, <&pinctrl_hog_misc>,
467		    <&pinctrl_hog_panel>, <&pinctrl_hog_sbc>,
468		    <&pinctrl_panel_expansion>;
469
470	pinctrl_ecspi1: ecspi1-grp {
471		fsl,pins = <
472			MX8MM_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK		0x44
473			MX8MM_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI		0x44
474			MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO		0x44
475			MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9		0x40
476		>;
477	};
478
479	pinctrl_ecspi2: ecspi2-grp {
480		fsl,pins = <
481			MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK		0x44
482			MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI		0x44
483			MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO		0x44
484			MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13		0x40
485		>;
486	};
487
488	pinctrl_ecspi3: ecspi3-grp {
489		fsl,pins = <
490			MX8MM_IOMUXC_UART1_RXD_ECSPI3_SCLK		0x44
491			MX8MM_IOMUXC_UART1_TXD_ECSPI3_MOSI		0x44
492			MX8MM_IOMUXC_UART2_RXD_ECSPI3_MISO		0x44
493			MX8MM_IOMUXC_UART2_TXD_GPIO5_IO25		0x40
494		>;
495	};
496
497	pinctrl_fec1: fec1-grp {
498		fsl,pins = <
499			MX8MM_IOMUXC_ENET_MDC_ENET1_MDC			0x3
500			MX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO		0x3
501			MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0		0x91
502			MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1		0x91
503			MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2		0x91
504			MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3		0x91
505			MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC		0x91
506			MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL	0x91
507			MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0		0x1f
508			MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1		0x1f
509			MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2		0x1f
510			MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3		0x1f
511			MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC		0x1f
512			MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL	0x1f
513			/* ENET_RST# */
514			MX8MM_IOMUXC_GPIO1_IO01_GPIO1_IO1		0x6
515			/* ENET_WOL# */
516			MX8MM_IOMUXC_GPIO1_IO11_GPIO1_IO11		0x40000090
517			/* ENET_INT# */
518			MX8MM_IOMUXC_GPIO1_IO15_GPIO1_IO15		0x40000090
519		>;
520	};
521
522	pinctrl_hog_feature: hog-feature-grp {
523		fsl,pins = <
524			/* GPIO4_IO27 */
525			MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO27		0x40000006
526			/* GPIO5_IO03 */
527			MX8MM_IOMUXC_SPDIF_TX_GPIO5_IO3			0x40000006
528			/* GPIO5_IO04 */
529			MX8MM_IOMUXC_SPDIF_RX_GPIO5_IO4			0x40000006
530
531			/* CAN_INT# */
532			MX8MM_IOMUXC_SAI2_TXC_GPIO4_IO25		0x40000090
533			/* CAN_RST# */
534			MX8MM_IOMUXC_SAI2_TXD0_GPIO4_IO26		0x26
535		>;
536	};
537
538	pinctrl_hog_panel: hog-panel-grp {
539		fsl,pins = <
540			/* GRAPHICS_GPIO0_1V8 */
541			MX8MM_IOMUXC_NAND_DATA01_GPIO3_IO7		0x26
542		>;
543	};
544
545	pinctrl_hog_misc: hog-misc-grp {
546		fsl,pins = <
547			/* PG_V_IN_VAR# */
548			MX8MM_IOMUXC_NAND_CE0_B_GPIO3_IO1		0x40000000
549			/* CSI_PD_1V8 */
550			MX8MM_IOMUXC_NAND_DATA02_GPIO3_IO8		0x0
551			/* CSI_RESET_1V8# */
552			MX8MM_IOMUXC_NAND_DATA03_GPIO3_IO9		0x0
553
554			/* DIS_USB_DN1 */
555			MX8MM_IOMUXC_SAI3_TXD_GPIO5_IO1			0x0
556			/* DIS_USB_DN2 */
557			MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28		0x0
558
559			/* EEPROM_WP_1V8# */
560			MX8MM_IOMUXC_SD1_DATA3_GPIO2_IO5		0x100
561			/* PCIE_CLK_GEN_CLKPWRGD_PD_1V8# */
562			MX8MM_IOMUXC_SD1_DATA4_GPIO2_IO6		0x0
563			/* GRAPHICS_PRSNT_1V8# */
564			MX8MM_IOMUXC_SD1_DATA5_GPIO2_IO7		0x40000000
565
566			/* CLK_CCM_CLKO1_3V3 */
567			MX8MM_IOMUXC_GPIO1_IO14_CCMSRCGPCMIX_CLKO1	0x10
568		>;
569	};
570
571	pinctrl_hog_sbc: hog-sbc-grp {
572		fsl,pins = <
573			/* MEMCFG[0..2] straps */
574			MX8MM_IOMUXC_SD1_DATA6_GPIO2_IO8		0x40000140
575			MX8MM_IOMUXC_SD1_CMD_GPIO2_IO1			0x40000140
576			MX8MM_IOMUXC_SD1_CLK_GPIO2_IO0			0x40000140
577
578			/* BOOT_CFG[0..15] straps */
579			MX8MM_IOMUXC_SAI1_RXD0_GPIO4_IO2		0x40000000
580			MX8MM_IOMUXC_SAI1_RXD1_GPIO4_IO3		0x40000000
581			MX8MM_IOMUXC_SAI1_RXD2_GPIO4_IO4		0x40000000
582			MX8MM_IOMUXC_SAI1_RXD3_GPIO4_IO5		0x40000000
583			MX8MM_IOMUXC_SAI1_RXD4_GPIO4_IO6		0x40000000
584			MX8MM_IOMUXC_SAI1_RXD5_GPIO4_IO7		0x40000000
585			MX8MM_IOMUXC_SAI1_RXD6_GPIO4_IO8		0x40000000
586			MX8MM_IOMUXC_SAI1_RXD7_GPIO4_IO9		0x40000000
587			MX8MM_IOMUXC_SAI1_TXD0_GPIO4_IO12		0x40000000
588			MX8MM_IOMUXC_SAI1_TXD1_GPIO4_IO13		0x40000000
589			MX8MM_IOMUXC_SAI1_TXD2_GPIO4_IO14		0x40000000
590			MX8MM_IOMUXC_SAI1_TXD3_GPIO4_IO15		0x40000000
591			MX8MM_IOMUXC_SAI1_TXD4_GPIO4_IO16		0x40000000
592			MX8MM_IOMUXC_SAI1_TXD5_GPIO4_IO17		0x40000000
593			MX8MM_IOMUXC_SAI1_TXD6_GPIO4_IO18		0x40000000
594			MX8MM_IOMUXC_SAI1_TXD7_GPIO4_IO19		0x40000000
595
596			/* Not connected pins */
597			MX8MM_IOMUXC_SAI1_MCLK_GPIO4_IO20		0x0
598			MX8MM_IOMUXC_SAI1_TXFS_GPIO4_IO10		0x0
599			MX8MM_IOMUXC_SAI1_TXC_GPIO4_IO11		0x0
600			MX8MM_IOMUXC_SAI1_RXFS_GPIO4_IO0		0x0
601			MX8MM_IOMUXC_SAI1_RXC_GPIO4_IO1			0x0
602		>;
603	};
604
605	pinctrl_i2c1: i2c1-grp {
606		fsl,pins = <
607			MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL			0x40000084
608			MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA			0x40000084
609		>;
610	};
611
612	pinctrl_i2c1_gpio: i2c1-gpio-grp {
613		fsl,pins = <
614			MX8MM_IOMUXC_I2C1_SCL_GPIO5_IO14		0x84
615			MX8MM_IOMUXC_I2C1_SDA_GPIO5_IO15		0x84
616		>;
617	};
618
619	pinctrl_i2c2: i2c2-grp {
620		fsl,pins = <
621			MX8MM_IOMUXC_I2C2_SCL_I2C2_SCL			0x40000084
622			MX8MM_IOMUXC_I2C2_SDA_I2C2_SDA			0x40000084
623		>;
624	};
625
626	pinctrl_i2c2_gpio: i2c2-gpio-grp {
627		fsl,pins = <
628			MX8MM_IOMUXC_I2C2_SCL_GPIO5_IO16		0x84
629			MX8MM_IOMUXC_I2C2_SDA_GPIO5_IO17		0x84
630		>;
631	};
632
633	pinctrl_i2c3: i2c3-grp {
634		fsl,pins = <
635			MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL			0x40000084
636			MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA			0x40000084
637		>;
638	};
639
640	pinctrl_i2c3_gpio: i2c3-gpio-grp {
641		fsl,pins = <
642			MX8MM_IOMUXC_I2C3_SCL_GPIO5_IO18		0x84
643			MX8MM_IOMUXC_I2C3_SDA_GPIO5_IO19		0x84
644		>;
645	};
646
647	pinctrl_i2c4: i2c4-grp {
648		fsl,pins = <
649			MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL			0x40000084
650			MX8MM_IOMUXC_I2C4_SDA_I2C4_SDA			0x40000084
651		>;
652	};
653
654	pinctrl_i2c4_gpio: i2c4-gpio-grp {
655		fsl,pins = <
656			MX8MM_IOMUXC_I2C4_SCL_GPIO5_IO20		0x84
657			MX8MM_IOMUXC_I2C4_SDA_GPIO5_IO21		0x84
658		>;
659	};
660
661	pinctrl_panel_backlight: panel-backlight-grp {
662		fsl,pins = <
663			/* BL_ENABLE_1V8 */
664			MX8MM_IOMUXC_NAND_ALE_GPIO3_IO0			0x104
665		>;
666	};
667
668	pinctrl_panel_expansion: panel-expansion-grp {
669		fsl,pins = <
670			/* DSI_RESET_1V8# */
671			MX8MM_IOMUXC_SD1_DATA0_GPIO2_IO2		0x2
672			/* DSI_IRQ_1V8# */
673			MX8MM_IOMUXC_SD1_DATA1_GPIO2_IO3		0x40000090
674		>;
675	};
676
677	pinctrl_panel_vcc_reg: panel-vcc-grp {
678		fsl,pins = <
679			/* TFT_ENABLE_1V8 */
680			MX8MM_IOMUXC_NAND_DATA00_GPIO3_IO6		0x104
681		>;
682	};
683
684	pinctrl_panel_pwm: panel-pwm-grp {
685		fsl,pins = <
686			/* BL_PWM_3V3 */
687			MX8MM_IOMUXC_SPDIF_EXT_CLK_PWM1_OUT		0x12
688		>;
689	};
690
691	pinctrl_pcie0: pcie-grp {
692		fsl,pins = <
693			/* M2-B_RESET_1V8# */
694			MX8MM_IOMUXC_SAI5_RXC_GPIO3_IO20		0x102
695			/* M2-B_PCIE_RST# */
696			MX8MM_IOMUXC_GPIO1_IO05_GPIO1_IO5		0x2
697			/* M2-B_FULL_CARD_PWROFF_1V8# */
698			MX8MM_IOMUXC_SD1_DATA2_GPIO2_IO4		0x102
699			/* M2-B_W_DISABLE1_WWAN_1V8# */
700			MX8MM_IOMUXC_SD1_RESET_B_GPIO2_IO10		0x102
701			/* M2-B_W_DISABLE2_GPS_1V8# */
702			MX8MM_IOMUXC_SD1_STROBE_GPIO2_IO11		0x102
703			/* CLK_M2_32K768 */
704			MX8MM_IOMUXC_GPIO1_IO00_ANAMIX_REF_CLK_32K	0x14
705			/* M2-B_WAKE_WWAN_1V8# */
706			MX8MM_IOMUXC_SAI5_RXFS_GPIO3_IO19		0x40000140
707			/* M2-B_PCIE_WAKE# */
708			MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6		0x40000140
709			/* M2-B_PCIE_CLKREQ# */
710			MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9		0x40000140
711		>;
712	};
713
714	pinctrl_pmic: pmic-grp {
715		fsl,pins = <
716			MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3		0x40000090
717		>;
718	};
719
720	pinctrl_rtc: rtc-grp {
721		fsl,pins = <
722			/* RTC_IRQ# */
723			MX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7		0x40000090
724		>;
725	};
726
727	pinctrl_sai5: sai5-grp {
728		fsl,pins = <
729			MX8MM_IOMUXC_SAI5_MCLK_SAI5_MCLK		0x100
730			MX8MM_IOMUXC_SAI5_RXD0_SAI5_RX_DATA0		0x0
731			MX8MM_IOMUXC_SAI5_RXD1_SAI5_TX_SYNC		0x100
732			MX8MM_IOMUXC_SAI5_RXD2_SAI5_TX_BCLK		0x100
733			MX8MM_IOMUXC_SAI5_RXD3_SAI5_TX_DATA0		0x100
734		>;
735	};
736
737	pinctrl_uart1: uart1-grp {
738		fsl,pins = <
739			MX8MM_IOMUXC_SAI2_RXC_UART1_DCE_RX		0x90
740			MX8MM_IOMUXC_SAI2_RXD0_UART1_DCE_RTS_B		0x90
741			MX8MM_IOMUXC_SAI2_RXFS_UART1_DCE_TX		0x50
742			MX8MM_IOMUXC_SAI2_TXFS_UART1_DCE_CTS_B		0x50
743		>;
744	};
745
746	pinctrl_uart2: uart2-grp {
747		fsl,pins = <
748			MX8MM_IOMUXC_SAI3_RXC_UART2_DCE_CTS_B		0x50
749			MX8MM_IOMUXC_SAI3_RXD_UART2_DCE_RTS_B		0x90
750			MX8MM_IOMUXC_SAI3_TXC_UART2_DCE_TX		0x50
751			MX8MM_IOMUXC_SAI3_TXFS_UART2_DCE_RX		0x90
752		>;
753	};
754
755	pinctrl_uart3: uart3-grp {
756		fsl,pins = <
757			MX8MM_IOMUXC_UART3_RXD_UART3_DCE_RX		0x40
758			MX8MM_IOMUXC_UART3_TXD_UART3_DCE_TX		0x40
759		>;
760	};
761
762	pinctrl_uart4: uart4-grp {
763		fsl,pins = <
764			MX8MM_IOMUXC_UART4_RXD_UART4_DCE_RX		0x40
765			MX8MM_IOMUXC_UART4_TXD_UART4_DCE_TX		0x40
766		>;
767	};
768
769	pinctrl_usb_hub: usb-hub-grp {
770		fsl,pins = <
771			/* USBHUB_RESET# */
772			MX8MM_IOMUXC_SAI3_MCLK_GPIO5_IO2		0x4
773		>;
774	};
775
776	pinctrl_usb_otg1: usb-otg1-grp {
777		fsl,pins = <
778			MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10		0x40000000
779			MX8MM_IOMUXC_GPIO1_IO12_USB1_OTG_PWR		0x4
780			MX8MM_IOMUXC_GPIO1_IO13_USB1_OTG_OC		0x40000090
781		>;
782	};
783
784	pinctrl_usdhc2_vcc_reg: usdhc2-vcc-reg-grp {
785		fsl,pins = <
786			MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19		0x4
787		>;
788	};
789
790	pinctrl_usdhc2: usdhc2-grp {
791		fsl,pins = <
792			MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK			0x190
793			MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD			0x1d0
794			MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0		0x1d0
795			MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1		0x1d0
796			MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2		0x1d0
797			MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3		0x1d0
798			MX8MM_IOMUXC_SD2_WP_USDHC2_WP			0x400000d6
799			MX8MM_IOMUXC_SD2_CD_B_USDHC2_CD_B		0x0d6
800			MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT		0x1d0
801		>;
802	};
803
804	pinctrl_usdhc2_100mhz: usdhc2-100mhz-grp {
805		fsl,pins = <
806			MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK			0x194
807			MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD			0x1d4
808			MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0		0x1d4
809			MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1		0x1d4
810			MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2		0x1d4
811			MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3		0x1d4
812			MX8MM_IOMUXC_SD2_WP_USDHC2_WP			0x400000d6
813			MX8MM_IOMUXC_SD2_CD_B_USDHC2_CD_B		0x0d6
814			MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT		0x1d0
815		>;
816	};
817
818	pinctrl_usdhc2_200mhz: usdhc2-200mhz-grp {
819		fsl,pins = <
820			MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK			0x196
821			MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD			0x1d6
822			MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0		0x1d6
823			MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1		0x1d6
824			MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2		0x1d6
825			MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3		0x1d6
826			MX8MM_IOMUXC_SD2_WP_USDHC2_WP			0x400000d6
827			MX8MM_IOMUXC_SD2_CD_B_USDHC2_CD_B		0x0d6
828			MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT		0x1d0
829		>;
830	};
831
832	pinctrl_usdhc3: usdhc3-grp {
833		fsl,pins = <
834			MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK		0x190
835			MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD		0x1d0
836			MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0		0x1d0
837			MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1		0x1d0
838			MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2		0x1d0
839			MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3		0x1d0
840			MX8MM_IOMUXC_NAND_RE_B_USDHC3_DATA4		0x1d0
841			MX8MM_IOMUXC_NAND_CE2_B_USDHC3_DATA5		0x1d0
842			MX8MM_IOMUXC_NAND_CE3_B_USDHC3_DATA6		0x1d0
843			MX8MM_IOMUXC_NAND_CLE_USDHC3_DATA7		0x1d0
844			MX8MM_IOMUXC_NAND_CE1_B_USDHC3_STROBE		0x190
845			MX8MM_IOMUXC_NAND_READY_B_SD3_RESET_B		0x40
846		>;
847	};
848
849	pinctrl_usdhc3_100mhz: usdhc3-100mhz-grp {
850		fsl,pins = <
851			MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK		0x194
852			MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD		0x1d4
853			MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0		0x1d4
854			MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1		0x1d4
855			MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2		0x1d4
856			MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3		0x1d4
857			MX8MM_IOMUXC_NAND_RE_B_USDHC3_DATA4		0x1d4
858			MX8MM_IOMUXC_NAND_CE2_B_USDHC3_DATA5		0x1d4
859			MX8MM_IOMUXC_NAND_CE3_B_USDHC3_DATA6		0x1d4
860			MX8MM_IOMUXC_NAND_CLE_USDHC3_DATA7		0x1d4
861			MX8MM_IOMUXC_NAND_CE1_B_USDHC3_STROBE		0x194
862			MX8MM_IOMUXC_NAND_READY_B_SD3_RESET_B		0x40
863		>;
864	};
865
866	pinctrl_usdhc3_200mhz: usdhc3-200mhz-grp {
867		fsl,pins = <
868			MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK		0x196
869			MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD		0x1d6
870			MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0		0x1d6
871			MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1		0x1d6
872			MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2		0x1d6
873			MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3		0x1d6
874			MX8MM_IOMUXC_NAND_RE_B_USDHC3_DATA4		0x1d6
875			MX8MM_IOMUXC_NAND_CE2_B_USDHC3_DATA5		0x1d6
876			MX8MM_IOMUXC_NAND_CE3_B_USDHC3_DATA6		0x1d6
877			MX8MM_IOMUXC_NAND_CLE_USDHC3_DATA7		0x1d6
878			MX8MM_IOMUXC_NAND_CE1_B_USDHC3_STROBE		0x196
879			MX8MM_IOMUXC_NAND_READY_B_SD3_RESET_B		0x40
880		>;
881	};
882
883	pinctrl_watchdog_gpio: watchdog-gpio-grp {
884		fsl,pins = <
885			/* WDOG_B# */
886			MX8MM_IOMUXC_GPIO1_IO02_GPIO1_IO2		0x26
887			/* WDOG_EN -- ungate WDT RESET# signal propagation */
888			MX8MM_IOMUXC_SD1_DATA7_GPIO2_IO9		0x6
889			/* WDOG_KICK# / WDI */
890			MX8MM_IOMUXC_GPIO1_IO08_GPIO1_IO8		0x26
891		>;
892	};
893};
894
895&pcie_phy {
896	fsl,clkreq-unsupported;	/* CLKREQ_B is not connected to suitable input */
897	fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_INPUT>;
898	fsl,tx-deemph-gen1 = <0x2d>;
899	fsl,tx-deemph-gen2 = <0xf>;
900	clocks = <&pcieclk 0>;
901	status = "okay";
902};
903
904&pcie0 {
905	pinctrl-names = "default";
906	pinctrl-0 = <&pinctrl_pcie0>;
907	reset-gpio = <&gpio1 5 GPIO_ACTIVE_LOW>;
908	clocks = <&clk IMX8MM_CLK_PCIE1_ROOT>, <&pcieclk 0>,
909		 <&clk IMX8MM_CLK_PCIE1_AUX>;
910	assigned-clocks = <&clk IMX8MM_CLK_PCIE1_AUX>,
911			  <&clk IMX8MM_CLK_PCIE1_CTRL>;
912	assigned-clock-rates = <10000000>, <250000000>;
913	assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_50M>,
914				 <&clk IMX8MM_SYS_PLL2_250M>;
915	status = "okay";
916};
917
918&pwm1 {
919	pinctrl-names = "default";
920	pinctrl-0 = <&pinctrl_panel_pwm>;
921	/* Disabled by default, unless display board plugged in. */
922	status = "disabled";
923};
924
925&sai5 {
926	pinctrl-names = "default";
927	pinctrl-0 = <&pinctrl_sai5>;
928	fsl,sai-mclk-direction-output;
929	/* Input into codec PLL */
930	assigned-clocks = <&clk IMX8MM_CLK_SAI5>;
931	assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL2_OUT>;
932	assigned-clock-rates = <22579200>;
933	/* Disabled by default, unless display board plugged in. */
934	status = "disabled";
935};
936
937&snvs_rtc {
938	clocks = <&pmic>;
939};
940
941&uart1 {
942	pinctrl-names = "default";
943	pinctrl-0 = <&pinctrl_uart1>;
944	uart-has-rtscts;
945	status = "disabled";
946};
947
948&uart2 {
949	pinctrl-names = "default";
950	pinctrl-0 = <&pinctrl_uart2>;
951	status = "disabled";
952};
953
954&uart3 {	/* A53 Debug */
955	pinctrl-names = "default";
956	pinctrl-0 = <&pinctrl_uart3>;
957	status = "okay";
958};
959
960&uart4 {	/* M4 Debug */
961	pinctrl-names = "default";
962	pinctrl-0 = <&pinctrl_uart4>;
963	/* UART4 is reserved for CM and RDC blocks CA access to UART4. */
964	status = "disabled";
965};
966
967&usbotg1 {
968	pinctrl-names = "default";
969	pinctrl-0 = <&pinctrl_usb_otg1>;
970	dr_mode = "otg";
971	status = "okay";
972};
973
974&usbotg2 {
975	disable-over-current;
976	dr_mode = "host";
977	status = "okay";
978};
979
980&usdhc2 {	/* MicroSD */
981	assigned-clocks = <&clk IMX8MM_CLK_USDHC2_ROOT>;
982	pinctrl-names = "default", "state_100mhz", "state_200mhz";
983	pinctrl-0 = <&pinctrl_usdhc2>;
984	pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
985	pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
986	bus-width = <4>;
987	vmmc-supply = <&reg_usdhc2_vcc>;
988	status = "okay";
989};
990
991&usdhc3 {	/* eMMC */
992	assigned-clocks = <&clk IMX8MM_CLK_USDHC3_ROOT>;
993	assigned-clock-rates = <400000000>;
994	pinctrl-names = "default", "state_100mhz", "state_200mhz";
995	pinctrl-0 = <&pinctrl_usdhc3>;
996	pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
997	pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
998	bus-width = <8>;
999	non-removable;
1000	vmmc-supply = <&buck4_reg>;
1001	vqmmc-supply = <&buck5_reg>;
1002	status = "okay";
1003};
1004
1005&wdog1 {
1006	status = "okay";
1007};
1008