1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright 2018-2019 Purism SPC
4 */
5
6/dts-v1/;
7
8#include "dt-bindings/input/input.h"
9#include "dt-bindings/pwm/pwm.h"
10#include "dt-bindings/usb/pd.h"
11#include "imx8mq.dtsi"
12
13/ {
14	model = "Purism Librem 5 devkit";
15	compatible = "purism,librem5-devkit", "fsl,imx8mq";
16
17	backlight_dsi: backlight-dsi {
18		compatible = "pwm-backlight";
19		/* 200 Hz for the PAM2841 */
20		pwms = <&pwm1 0 5000000>;
21		brightness-levels = <0 100>;
22		num-interpolated-steps = <100>;
23		/* Default brightness level (index into the array defined by */
24		/* the "brightness-levels" property) */
25		default-brightness-level = <0>;
26		power-supply = <&reg_22v4_p>;
27	};
28
29	chosen {
30		stdout-path = &uart1;
31	};
32
33	gpio-keys {
34		compatible = "gpio-keys";
35		pinctrl-names = "default";
36		pinctrl-0 = <&pinctrl_gpio_keys>;
37
38		btn1 {
39			label = "VOL_UP";
40			gpios = <&gpio4 21 GPIO_ACTIVE_LOW>;
41			wakeup-source;
42			linux,code = <KEY_VOLUMEUP>;
43		};
44
45		btn2 {
46			label = "VOL_DOWN";
47			gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
48			wakeup-source;
49			linux,code = <KEY_VOLUMEDOWN>;
50		};
51
52		hp-det {
53			label = "HP_DET";
54			gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
55			wakeup-source;
56			linux,code = <KEY_HP>;
57		};
58	};
59
60	leds {
61		compatible = "gpio-leds";
62		pinctrl-names = "default";
63		pinctrl-0 = <&pinctrl_gpio_leds>;
64
65		led1 {
66			label = "LED 1";
67			gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
68			default-state = "off";
69		};
70	};
71
72	pmic_osc: clock-pmic {
73		compatible = "fixed-clock";
74		#clock-cells = <0>;
75		clock-frequency = <32768>;
76		clock-output-names = "pmic_osc";
77	};
78
79	reg_1v8_p: regulator-1v8-p {
80		compatible = "regulator-fixed";
81		regulator-name = "1v8_p";
82		regulator-min-microvolt = <1800000>;
83		regulator-max-microvolt = <1800000>;
84		vin-supply = <&reg_pwr_en>;
85	};
86
87	reg_2v8_p: regulator-2v8-p {
88		compatible = "regulator-fixed";
89		regulator-name = "2v8_p";
90		regulator-min-microvolt = <2800000>;
91		regulator-max-microvolt = <2800000>;
92		vin-supply = <&reg_pwr_en>;
93	};
94
95	reg_3v3_p: regulator-3v3-p {
96		compatible = "regulator-fixed";
97		regulator-name = "3v3_p";
98		regulator-min-microvolt = <3300000>;
99		regulator-max-microvolt = <3300000>;
100		vin-supply = <&reg_pwr_en>;
101
102		regulator-state-mem {
103			regulator-on-in-suspend;
104		};
105	};
106
107	reg_5v_p: regulator-5v-p {
108		compatible = "regulator-fixed";
109		regulator-name = "5v_p";
110		regulator-min-microvolt = <5000000>;
111		regulator-max-microvolt = <5000000>;
112		vin-supply = <&reg_pwr_en>;
113
114		regulator-state-mem {
115			regulator-on-in-suspend;
116		};
117	};
118
119	reg_22v4_p: regulator-22v4-p  {
120		compatible = "regulator-fixed";
121		regulator-name = "22v4_P";
122		regulator-min-microvolt = <22400000>;
123		regulator-max-microvolt = <22400000>;
124		vin-supply = <&reg_pwr_en>;
125	};
126
127	reg_pwr_en: regulator-pwr-en {
128		compatible = "regulator-fixed";
129		pinctrl-names = "default";
130		pinctrl-0 = <&pinctrl_pwr_en>;
131		regulator-name = "PWR_EN";
132		regulator-min-microvolt = <3300000>;
133		regulator-max-microvolt = <3300000>;
134		gpio = <&gpio1 8 GPIO_ACTIVE_HIGH>;
135		enable-active-high;
136		regulator-always-on;
137	};
138
139	reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
140		compatible = "regulator-fixed";
141		pinctrl-names = "default";
142		pinctrl-0 = <&pinctrl_usdhc2_pwr>;
143		regulator-name = "VSD_3V3";
144		regulator-min-microvolt = <3300000>;
145		regulator-max-microvolt = <3300000>;
146		gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
147		enable-active-high;
148		regulator-always-on;
149	};
150
151	vibrator {
152		compatible = "gpio-vibrator";
153		pinctrl-names = "default";
154		pinctrl-0 = <&pinctrl_haptic>;
155	        enable-gpios = <&gpio5 4 GPIO_ACTIVE_LOW>;
156		vcc-supply = <&reg_3v3_p>;
157	};
158
159	wifi_pwr_en: regulator-wifi-en {
160		compatible = "regulator-fixed";
161		pinctrl-names = "default";
162		pinctrl-0 = <&pinctrl_wifi_pwr_en>;
163		regulator-name = "WIFI_EN";
164		regulator-min-microvolt = <3300000>;
165		regulator-max-microvolt = <3300000>;
166		gpio = <&gpio3 5 GPIO_ACTIVE_HIGH>;
167		enable-active-high;
168		regulator-always-on;
169	};
170};
171
172&clk {
173	assigned-clocks = <&clk IMX8MQ_AUDIO_PLL1>, <&clk IMX8MQ_AUDIO_PLL2>;
174	assigned-clock-rates = <786432000>, <722534400>;
175};
176
177&dphy {
178	status = "okay";
179};
180
181&fec1 {
182	pinctrl-names = "default";
183	pinctrl-0 = <&pinctrl_fec1>;
184	phy-mode = "rgmii-id";
185	phy-handle = <&ethphy0>;
186	fsl,magic-packet;
187	phy-supply = <&reg_3v3_p>;
188	status = "okay";
189
190	mdio {
191		#address-cells = <1>;
192		#size-cells = <0>;
193
194		ethphy0: ethernet-phy@1 {
195			compatible = "ethernet-phy-ieee802.3-c22";
196			reg = <1>;
197		};
198	};
199};
200
201&i2c1 {
202	clock-frequency = <100000>;
203	pinctrl-names = "default";
204	pinctrl-0 = <&pinctrl_i2c1>;
205	status = "okay";
206
207	pmic: pmic@4b {
208		compatible = "rohm,bd71837";
209		reg = <0x4b>;
210		pinctrl-names = "default";
211		pinctrl-0 = <&pinctrl_pmic>;
212		clocks = <&pmic_osc>;
213		clock-names = "osc";
214		clock-output-names = "pmic_clk";
215		interrupt-parent = <&gpio1>;
216		interrupts = <3 GPIO_ACTIVE_LOW>;
217		interrupt-names = "irq";
218		rohm,reset-snvs-powered;
219
220		regulators {
221			buck1_reg: BUCK1 {
222				regulator-name = "buck1";
223				regulator-min-microvolt = <700000>;
224				regulator-max-microvolt = <1300000>;
225				regulator-boot-on;
226				regulator-ramp-delay = <1250>;
227				rohm,dvs-run-voltage = <900000>;
228				rohm,dvs-idle-voltage = <850000>;
229				rohm,dvs-suspend-voltage = <800000>;
230			};
231
232			buck2_reg: BUCK2 {
233				regulator-name = "buck2";
234				regulator-min-microvolt = <700000>;
235				regulator-max-microvolt = <1300000>;
236				regulator-boot-on;
237				regulator-ramp-delay = <1250>;
238				rohm,dvs-run-voltage = <1000000>;
239				rohm,dvs-idle-voltage = <900000>;
240			};
241
242			buck3_reg: BUCK3 {
243				regulator-name = "buck3";
244				regulator-min-microvolt = <700000>;
245				regulator-max-microvolt = <1300000>;
246				regulator-boot-on;
247				rohm,dvs-run-voltage = <1000000>;
248			};
249
250			buck4_reg: BUCK4 {
251				regulator-name = "buck4";
252				regulator-min-microvolt = <700000>;
253				regulator-max-microvolt = <1300000>;
254				rohm,dvs-run-voltage = <1000000>;
255			};
256
257			buck5_reg: BUCK5 {
258				regulator-name = "buck5";
259				regulator-min-microvolt = <700000>;
260				regulator-max-microvolt = <1350000>;
261				regulator-boot-on;
262			};
263
264			buck6_reg: BUCK6 {
265				regulator-name = "buck6";
266				regulator-min-microvolt = <3000000>;
267				regulator-max-microvolt = <3300000>;
268				regulator-boot-on;
269			};
270
271			buck7_reg: BUCK7 {
272				regulator-name = "buck7";
273				regulator-min-microvolt = <1605000>;
274				regulator-max-microvolt = <1995000>;
275				regulator-boot-on;
276			};
277
278			buck8_reg: BUCK8 {
279				regulator-name = "buck8";
280				regulator-min-microvolt = <800000>;
281				regulator-max-microvolt = <1400000>;
282				regulator-boot-on;
283			};
284
285			ldo1_reg: LDO1 {
286				regulator-name = "ldo1";
287				regulator-min-microvolt = <3000000>;
288				regulator-max-microvolt = <3300000>;
289				regulator-boot-on;
290				/* leave on for snvs power button */
291				regulator-always-on;
292			};
293
294			ldo2_reg: LDO2 {
295				regulator-name = "ldo2";
296				regulator-min-microvolt = <900000>;
297				regulator-max-microvolt = <900000>;
298				regulator-boot-on;
299				/* leave on for snvs power button */
300				regulator-always-on;
301			};
302
303			ldo3_reg: LDO3 {
304				regulator-name = "ldo3";
305				regulator-min-microvolt = <1800000>;
306				regulator-max-microvolt = <3300000>;
307				regulator-boot-on;
308			};
309
310			ldo4_reg: LDO4 {
311				regulator-name = "ldo4";
312				regulator-min-microvolt = <900000>;
313				regulator-max-microvolt = <1800000>;
314				regulator-boot-on;
315			};
316
317			ldo5_reg: LDO5 {
318				regulator-name = "ldo5";
319				regulator-min-microvolt = <1800000>;
320				regulator-max-microvolt = <3300000>;
321			};
322
323			ldo6_reg: LDO6 {
324				regulator-name = "ldo6";
325				regulator-min-microvolt = <900000>;
326				regulator-max-microvolt = <1800000>;
327				regulator-boot-on;
328			};
329
330			ldo7_reg: LDO7 {
331				regulator-name = "ldo7";
332				regulator-min-microvolt = <1800000>;
333				regulator-max-microvolt = <3300000>;
334				regulator-boot-on;
335			};
336		};
337	};
338
339	typec_ptn5100: usb_typec@52 {
340		compatible = "nxp,ptn5110";
341		reg = <0x52>;
342		pinctrl-names = "default";
343		pinctrl-0 = <&pinctrl_typec>;
344		interrupt-parent = <&gpio3>;
345		interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
346
347		connector {
348			compatible = "usb-c-connector";
349			label = "USB-C";
350			data-role = "dual";
351			power-role = "dual";
352			try-power-role = "sink";
353			source-pdos = <PDO_FIXED(5000, 2000,
354				PDO_FIXED_USB_COMM |
355				PDO_FIXED_DUAL_ROLE |
356				PDO_FIXED_DATA_SWAP )>;
357			sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM |
358				PDO_FIXED_DUAL_ROLE |
359				PDO_FIXED_DATA_SWAP )
360			     PDO_VAR(5000, 3000, 3000)>;
361			op-sink-microwatt = <10000000>;
362
363			ports {
364				#address-cells = <1>;
365				#size-cells = <0>;
366
367				port@0 {
368					reg = <0>;
369
370					usb_con_hs: endpoint {
371						remote-endpoint = <&typec_hs>;
372					};
373				};
374
375				port@1 {
376					reg = <1>;
377
378					usb_con_ss: endpoint {
379						remote-endpoint = <&typec_ss>;
380					};
381				};
382			};
383		};
384	};
385
386	rtc@68 {
387		compatible = "microcrystal,rv4162";
388		reg = <0x68>;
389		pinctrl-names = "default";
390		pinctrl-0 = <&pinctrl_rtc>;
391		interrupt-parent = <&gpio4>;
392		interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
393	};
394
395	charger@6b { /* bq25896 */
396		compatible = "ti,bq25890";
397		reg = <0x6b>;
398		pinctrl-names = "default";
399		pinctrl-0 = <&pinctrl_charger>;
400		interrupt-parent = <&gpio3>;
401		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
402		ti,battery-regulation-voltage = <4192000>; /* 4.192V */
403		ti,charge-current = <1600000>; /* 1.6A */
404		ti,termination-current = <66000>;  /* 66mA */
405		ti,precharge-current = <130000>; /* 130mA */
406		ti,minimum-sys-voltage = <3000000>; /* 3V */
407		ti,boost-voltage = <5000000>; /* 5V */
408		ti,boost-max-current = <50000>; /* 50mA */
409	};
410};
411
412&i2c3 {
413	clock-frequency = <100000>;
414	pinctrl-names = "default";
415	pinctrl-0 = <&pinctrl_i2c3>;
416	status = "okay";
417
418	magnetometer@1e	{
419		compatible = "st,lsm9ds1-magn";
420		reg = <0x1e>;
421		pinctrl-names = "default";
422		pinctrl-0 = <&pinctrl_imu>;
423		interrupt-parent = <&gpio3>;
424		interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
425		vdd-supply = <&reg_3v3_p>;
426		vddio-supply = <&reg_3v3_p>;
427	};
428
429	touchscreen@5d {
430		compatible = "goodix,gt5688";
431		reg = <0x5d>;
432		pinctrl-names = "default";
433		pinctrl-0 = <&pinctrl_ts>;
434		interrupt-parent = <&gpio3>;
435		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
436		reset-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
437		irq-gpios = <&gpio3 0 GPIO_ACTIVE_HIGH>;
438		touchscreen-size-x = <720>;
439		touchscreen-size-y = <1440>;
440		AVDD28-supply = <&reg_2v8_p>;
441		VDDIO-supply = <&reg_1v8_p>;
442	};
443
444	proximity-sensor@60 {
445		compatible = "vishay,vcnl4040";
446		reg = <0x60>;
447		pinctrl-0 = <&pinctrl_prox>;
448	};
449
450	accel-gyro@6a {
451		compatible = "st,lsm9ds1-imu";
452		reg = <0x6a>;
453		vdd-supply = <&reg_3v3_p>;
454		vddio-supply = <&reg_3v3_p>;
455	};
456};
457
458&iomuxc {
459	pinctrl_bl: blgrp {
460		fsl,pins = <
461			MX8MQ_IOMUXC_GPIO1_IO01_PWM1_OUT	0x6 /* DSI_BL_PWM */
462		>;
463	};
464
465	pinctrl_bt: btgrp {
466		fsl,pins = <
467			MX8MQ_IOMUXC_NAND_DATA05_GPIO3_IO11	0x16 /* nBT_DISABLE */
468			MX8MQ_IOMUXC_NAND_DATA01_GPIO3_IO7	0x10 /* BT_HOST_WAKE */
469		>;
470	};
471
472	pinctrl_charger: chargergrp {
473		fsl,pins = <
474			MX8MQ_IOMUXC_SAI5_MCLK_GPIO3_IO25	0x80 /* CHRG_nINT */
475		>;
476	};
477
478	pinctrl_fec1: fec1grp {
479		fsl,pins = <
480			MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC			0x3
481			MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO		0x3
482			MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3		0x1f
483			MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2		0x1f
484			MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1		0x1f
485			MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0		0x1f
486			MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3		0x91
487			MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2		0x91
488			MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1		0x91
489			MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0		0x91
490			MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC		0x1f
491			MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC		0x91
492			MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL	0x91
493			MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL	0x1f
494			MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9		0x19
495			MX8MQ_IOMUXC_GPIO1_IO15_CCMSRCGPCMIX_CLKO2      0x1f
496		>;
497	};
498
499	pinctrl_ts: tsgrp {
500		fsl,pins = <
501			MX8MQ_IOMUXC_NAND_ALE_GPIO3_IO0		0x16  /* TOUCH INT */
502			MX8MQ_IOMUXC_GPIO1_IO05_GPIO1_IO5	0x19  /* TOUCH RST */
503		>;
504	};
505
506	pinctrl_gpio_leds: gpioledgrp {
507		fsl,pins = <
508			MX8MQ_IOMUXC_GPIO1_IO13_GPIO1_IO13	0x16
509		>;
510	};
511
512	pinctrl_gpio_keys: gpiokeygrp {
513		fsl,pins = <
514			MX8MQ_IOMUXC_SAI2_RXFS_GPIO4_IO21	0x16
515			MX8MQ_IOMUXC_SAI2_RXC_GPIO4_IO22	0x16
516			MX8MQ_IOMUXC_SAI5_RXC_GPIO3_IO20	0x180  /* HP_DET */
517		>;
518	};
519
520	pinctrl_haptic: hapticgrp {
521		fsl,pins = <
522			MX8MQ_IOMUXC_SPDIF_RX_GPIO5_IO4		0xc6   /* nHAPTIC */
523		>;
524	};
525
526	pinctrl_i2c1: i2c1grp {
527		fsl,pins = <
528			MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL		0x4000001f
529			MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA		0x4000001f
530		>;
531	};
532
533	pinctrl_i2c3: i2c3grp {
534		fsl,pins = <
535			MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL		0x4000001f
536			MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA		0x4000001f
537		>;
538	};
539
540	pinctrl_imu: imugrp {
541		fsl,pins = <
542			MX8MQ_IOMUXC_SAI5_RXFS_GPIO3_IO19	0x8  /* IMU_INT */
543		>;
544	};
545
546	pinctrl_pmic: pmicgrp {
547		fsl,pins = <
548			MX8MQ_IOMUXC_GPIO1_IO03_GPIO1_IO3	0x80  /* PMIC intr */
549		>;
550	};
551
552	pinctrl_prox: proxgrp {
553		fsl,pins = <
554			MX8MQ_IOMUXC_GPIO1_IO12_GPIO1_IO12	0x80  /* prox intr */
555		>;
556	};
557
558	pinctrl_pwr_en: pwrengrp {
559		fsl,pins = <
560			MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8	0x06
561		>;
562	};
563
564	pinctrl_rtc: rtcgrp {
565		fsl,pins = <
566			MX8MQ_IOMUXC_SAI3_RXC_GPIO4_IO29	0x80  /* RTC intr */
567		>;
568	};
569
570	pinctrl_typec: typecgrp {
571		fsl,pins = <
572			MX8MQ_IOMUXC_NAND_DATA06_GPIO3_IO12		0x16
573			MX8MQ_IOMUXC_NAND_CE0_B_GPIO3_IO1		0x80
574		>;
575	};
576
577	pinctrl_uart1: uart1grp {
578		fsl,pins = <
579			MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX		0x49
580			MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX		0x49
581		>;
582	};
583
584	pinctrl_uart2: uart2grp {
585		fsl,pins = <
586			MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX		0x49
587			MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX		0x49
588			MX8MQ_IOMUXC_UART4_RXD_UART2_DCE_CTS_B		0x49
589			MX8MQ_IOMUXC_UART4_TXD_UART2_DCE_RTS_B		0x49
590		>;
591	};
592
593	pinctrl_uart3: uart3grp {
594		fsl,pins = <
595			MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX		0x49
596			MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX		0x49
597		>;
598	};
599
600	pinctrl_uart4: uart4grp {
601		fsl,pins = <
602			MX8MQ_IOMUXC_ECSPI2_SCLK_UART4_DCE_RX		0x49
603			MX8MQ_IOMUXC_ECSPI2_MOSI_UART4_DCE_TX		0x49
604			MX8MQ_IOMUXC_ECSPI2_MISO_UART4_DCE_CTS_B	0x49
605			MX8MQ_IOMUXC_ECSPI2_SS0_UART4_DCE_RTS_B		0x49
606			MX8MQ_IOMUXC_GPIO1_IO00_ANAMIX_REF_CLK_32K	0x49
607		>;
608	};
609
610	pinctrl_usdhc1: usdhc1grp {
611		fsl,pins = <
612			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK			0x83
613			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD			0xc3
614			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0		0xc3
615			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1		0xc3
616			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2		0xc3
617			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3		0xc3
618			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4		0xc3
619			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5		0xc3
620			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6		0xc3
621			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7		0xc3
622			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE		0x83
623			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B		0xc1
624		>;
625	};
626
627	pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
628		fsl,pins = <
629			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK			0x8d
630			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD			0xcd
631			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0		0xcd
632			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1		0xcd
633			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2		0xcd
634			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3		0xcd
635			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4		0xcd
636			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5		0xcd
637			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6		0xcd
638			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7		0xcd
639			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE		0x8d
640			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B		0xc1
641		>;
642	};
643
644	pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
645		fsl,pins = <
646			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK			0x9f
647			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD			0xdf
648			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0		0xdf
649			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1		0xdf
650			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2		0xdf
651			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3		0xdf
652			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4		0xdf
653			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5		0xdf
654			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6		0xdf
655			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7		0xdf
656			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE		0x9f
657			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B		0xc1
658		>;
659	};
660
661	pinctrl_usdhc2_pwr: usdhc2grppwr {
662		fsl,pins = <
663			MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19	0x41
664		>;
665	};
666
667	pinctrl_usdhc2_gpio: usdhc2grpgpio {
668		fsl,pins = <
669			MX8MQ_IOMUXC_SD2_WP_GPIO2_IO20		0x80 /* WIFI_WAKE */
670		>;
671	};
672
673	pinctrl_usdhc2: usdhc2grp {
674		fsl,pins = <
675			MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK		0x83
676			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD		0xc3
677			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0	0xc3
678			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1	0xc3
679			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2	0xc3
680			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3	0xc3
681		>;
682	};
683
684	pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
685		fsl,pins = <
686			MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK		0x8d
687			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD		0xcd
688			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0	0xcd
689			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1	0xcd
690			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2	0xcd
691			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3	0xcd
692		>;
693	};
694
695	pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
696		fsl,pins = <
697			MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK		0x9f
698			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD		0xcf
699			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0	0xcf
700			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1	0xcf
701			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2	0xcf
702			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3	0xcf
703		>;
704	};
705
706	pinctrl_wdog: wdoggrp {
707		fsl,pins = <
708			MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B	0xc6
709		>;
710	};
711
712	pinctrl_wifi_pwr_en: wifipwrengrp {
713		fsl,pins = <
714			MX8MQ_IOMUXC_NAND_CLE_GPIO3_IO5         0x06
715		>;
716	};
717
718	pinctrl_wwan: wwangrp {
719		fsl,pins = <
720			MX8MQ_IOMUXC_NAND_CE3_B_GPIO3_IO4	0x09 /* nWWAN_DISABLE */
721			MX8MQ_IOMUXC_NAND_DATA02_GPIO3_IO8	0x80 /* nWoWWAN */
722			MX8MQ_IOMUXC_NAND_DATA03_GPIO3_IO9	0x19 /* WWAN_RESET */
723		>;
724	};
725};
726
727&pgc_gpu {
728	power-supply = <&buck3_reg>;
729};
730
731&pgc_vpu {
732	power-supply = <&buck4_reg>;
733};
734
735&pwm1 {
736	pinctrl-names = "default";
737	pinctrl-0 = <&pinctrl_bl>;
738	status = "okay";
739};
740
741&snvs_pwrkey {
742	status = "okay";
743};
744
745&uart1 { /* console */
746	pinctrl-names = "default";
747	pinctrl-0 = <&pinctrl_uart1>;
748	status = "okay";
749};
750
751&uart3 { /* GNSS */
752	pinctrl-names = "default";
753	pinctrl-0 = <&pinctrl_uart3>;
754	status = "okay";
755};
756
757&uart4 { /* BT */
758	pinctrl-names = "default";
759	pinctrl-0 = <&pinctrl_uart4>, <&pinctrl_bt>;
760	uart-has-rtscts;
761	status = "okay";
762};
763
764&usb3_phy0 {
765	status = "okay";
766};
767
768&usb3_phy1 {
769	vbus-supply = <&reg_5v_p>;
770	status = "okay";
771};
772
773&usb_dwc3_0 {
774	#address-cells = <1>;
775	#size-cells = <0>;
776	dr_mode = "otg";
777	status = "okay";
778
779	port@0 {
780		reg = <0>;
781
782		typec_hs: endpoint {
783			remote-endpoint = <&usb_con_hs>;
784		};
785	};
786
787	port@1 {
788		reg = <1>;
789
790		typec_ss: endpoint {
791			remote-endpoint = <&usb_con_ss>;
792		};
793	};
794};
795
796&usb_dwc3_1 {
797	dr_mode = "host";
798	status = "okay";
799};
800
801&usdhc1 {
802	assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
803	assigned-clock-rates = <400000000>;
804	pinctrl-names = "default", "state_100mhz", "state_200mhz";
805	pinctrl-0 = <&pinctrl_usdhc1>;
806	pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
807	pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
808	bus-width = <8>;
809	non-removable;
810	status = "okay";
811};
812
813&usdhc2 {
814	assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
815	assigned-clock-rates = <200000000>;
816	pinctrl-names = "default", "state_100mhz", "state_200mhz";
817	pinctrl-0 = <&pinctrl_usdhc2>;
818	pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
819	pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
820	bus-width = <4>;
821	vmmc-supply = <&reg_usdhc2_vmmc>;
822	power-supply = <&wifi_pwr_en>;
823	non-removable;
824	disable-wp;
825	cap-sdio-irq;
826	keep-power-in-suspend;
827	wakeup-source;
828	status = "okay";
829};
830
831&wdog1 {
832	pinctrl-names = "default";
833	pinctrl-0 = <&pinctrl_wdog>;
834	fsl,ext-reset-output;
835	status = "okay";
836};
837