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