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_LOW>;
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
445&iomuxc {
446	pinctrl_bl: blgrp {
447		fsl,pins = <
448			MX8MQ_IOMUXC_GPIO1_IO01_PWM1_OUT	0x6 /* DSI_BL_PWM */
449		>;
450	};
451
452	pinctrl_bt: btgrp {
453		fsl,pins = <
454			MX8MQ_IOMUXC_NAND_DATA05_GPIO3_IO11	0x16 /* nBT_DISABLE */
455			MX8MQ_IOMUXC_NAND_DATA01_GPIO3_IO7	0x10 /* BT_HOST_WAKE */
456		>;
457	};
458
459	pinctrl_charger: chargergrp {
460		fsl,pins = <
461			MX8MQ_IOMUXC_SAI5_MCLK_GPIO3_IO25	0x80 /* CHRG_nINT */
462		>;
463	};
464
465	pinctrl_fec1: fec1grp {
466		fsl,pins = <
467			MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC			0x3
468			MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO		0x3
469			MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3		0x1f
470			MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2		0x1f
471			MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1		0x1f
472			MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0		0x1f
473			MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3		0x91
474			MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2		0x91
475			MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1		0x91
476			MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0		0x91
477			MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC		0x1f
478			MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC		0x91
479			MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL	0x91
480			MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL	0x1f
481			MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9		0x19
482			MX8MQ_IOMUXC_GPIO1_IO15_CCMSRCGPCMIX_CLKO2      0x1f
483		>;
484	};
485
486	pinctrl_ts: tsgrp {
487		fsl,pins = <
488			MX8MQ_IOMUXC_NAND_ALE_GPIO3_IO0		0x16  /* TOUCH INT */
489			MX8MQ_IOMUXC_GPIO1_IO05_GPIO1_IO5	0x19  /* TOUCH RST */
490		>;
491	};
492
493	pinctrl_gpio_leds: gpioledgrp {
494		fsl,pins = <
495			MX8MQ_IOMUXC_GPIO1_IO13_GPIO1_IO13	0x16
496		>;
497	};
498
499	pinctrl_gpio_keys: gpiokeygrp {
500		fsl,pins = <
501			MX8MQ_IOMUXC_SAI2_RXFS_GPIO4_IO21	0x16
502			MX8MQ_IOMUXC_SAI2_RXC_GPIO4_IO22	0x16
503			MX8MQ_IOMUXC_SAI5_RXC_GPIO3_IO20	0x180  /* HP_DET */
504		>;
505	};
506
507	pinctrl_haptic: hapticgrp {
508		fsl,pins = <
509			MX8MQ_IOMUXC_SPDIF_RX_GPIO5_IO4		0xc6   /* nHAPTIC */
510		>;
511	};
512
513	pinctrl_i2c1: i2c1grp {
514		fsl,pins = <
515			MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL		0x4000001f
516			MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA		0x4000001f
517		>;
518	};
519
520	pinctrl_i2c3: i2c3grp {
521		fsl,pins = <
522			MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL		0x4000001f
523			MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA		0x4000001f
524		>;
525	};
526
527	pinctrl_imu: imugrp {
528		fsl,pins = <
529			MX8MQ_IOMUXC_SAI5_RXFS_GPIO3_IO19	0x8  /* IMU_INT */
530		>;
531	};
532
533	pinctrl_pmic: pmicgrp {
534		fsl,pins = <
535			MX8MQ_IOMUXC_GPIO1_IO03_GPIO1_IO3	0x80  /* PMIC intr */
536		>;
537	};
538
539	pinctrl_pwr_en: pwrengrp {
540		fsl,pins = <
541			MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8	0x06
542		>;
543	};
544
545	pinctrl_rtc: rtcgrp {
546		fsl,pins = <
547			MX8MQ_IOMUXC_SAI3_RXC_GPIO4_IO29	0x80  /* RTC intr */
548		>;
549	};
550
551	pinctrl_typec: typecgrp {
552		fsl,pins = <
553			MX8MQ_IOMUXC_NAND_DATA06_GPIO3_IO12		0x16
554			MX8MQ_IOMUXC_NAND_CE0_B_GPIO3_IO1		0x80
555		>;
556	};
557
558	pinctrl_uart1: uart1grp {
559		fsl,pins = <
560			MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX		0x49
561			MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX		0x49
562		>;
563	};
564
565	pinctrl_uart2: uart2grp {
566		fsl,pins = <
567			MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX		0x49
568			MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX		0x49
569			MX8MQ_IOMUXC_UART4_RXD_UART2_DCE_CTS_B		0x49
570			MX8MQ_IOMUXC_UART4_TXD_UART2_DCE_RTS_B		0x49
571		>;
572	};
573
574	pinctrl_uart3: uart3grp {
575		fsl,pins = <
576			MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX		0x49
577			MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX		0x49
578		>;
579	};
580
581	pinctrl_uart4: uart4grp {
582		fsl,pins = <
583			MX8MQ_IOMUXC_ECSPI2_SCLK_UART4_DCE_RX		0x49
584			MX8MQ_IOMUXC_ECSPI2_MOSI_UART4_DCE_TX		0x49
585			MX8MQ_IOMUXC_ECSPI2_MISO_UART4_DCE_CTS_B	0x49
586			MX8MQ_IOMUXC_ECSPI2_SS0_UART4_DCE_RTS_B		0x49
587			MX8MQ_IOMUXC_GPIO1_IO00_ANAMIX_REF_CLK_32K	0x49
588		>;
589	};
590
591	pinctrl_usdhc1: usdhc1grp {
592		fsl,pins = <
593			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK			0x83
594			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD			0xc3
595			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0		0xc3
596			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1		0xc3
597			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2		0xc3
598			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3		0xc3
599			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4		0xc3
600			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5		0xc3
601			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6		0xc3
602			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7		0xc3
603			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE		0x83
604			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B		0xc1
605		>;
606	};
607
608	pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
609		fsl,pins = <
610			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK			0x8d
611			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD			0xcd
612			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0		0xcd
613			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1		0xcd
614			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2		0xcd
615			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3		0xcd
616			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4		0xcd
617			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5		0xcd
618			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6		0xcd
619			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7		0xcd
620			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE		0x8d
621			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B		0xc1
622		>;
623	};
624
625	pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
626		fsl,pins = <
627			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK			0x9f
628			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD			0xdf
629			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0		0xdf
630			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1		0xdf
631			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2		0xdf
632			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3		0xdf
633			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4		0xdf
634			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5		0xdf
635			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6		0xdf
636			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7		0xdf
637			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE		0x9f
638			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B		0xc1
639		>;
640	};
641
642	pinctrl_usdhc2_pwr: usdhc2grppwr {
643		fsl,pins = <
644			MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19	0x41
645		>;
646	};
647
648	pinctrl_usdhc2_gpio: usdhc2grpgpio {
649		fsl,pins = <
650			MX8MQ_IOMUXC_SD2_WP_GPIO2_IO20		0x80 /* WIFI_WAKE */
651		>;
652	};
653
654	pinctrl_usdhc2: usdhc2grp {
655		fsl,pins = <
656			MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK		0x83
657			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD		0xc3
658			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0	0xc3
659			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1	0xc3
660			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2	0xc3
661			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3	0xc3
662		>;
663	};
664
665	pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
666		fsl,pins = <
667			MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK		0x8d
668			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD		0xcd
669			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0	0xcd
670			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1	0xcd
671			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2	0xcd
672			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3	0xcd
673		>;
674	};
675
676	pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
677		fsl,pins = <
678			MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK		0x9f
679			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD		0xcf
680			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0	0xcf
681			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1	0xcf
682			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2	0xcf
683			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3	0xcf
684		>;
685	};
686
687	pinctrl_wdog: wdoggrp {
688		fsl,pins = <
689			MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B	0xc6
690		>;
691	};
692
693	pinctrl_wifi_pwr_en: wifipwrengrp {
694		fsl,pins = <
695			MX8MQ_IOMUXC_NAND_CLE_GPIO3_IO5         0x06
696		>;
697	};
698
699	pinctrl_wwan: wwangrp {
700		fsl,pins = <
701			MX8MQ_IOMUXC_NAND_CE3_B_GPIO3_IO4	0x09 /* nWWAN_DISABLE */
702			MX8MQ_IOMUXC_NAND_DATA02_GPIO3_IO8	0x80 /* nWoWWAN */
703			MX8MQ_IOMUXC_NAND_DATA03_GPIO3_IO9	0x19 /* WWAN_RESET */
704		>;
705	};
706};
707
708&pgc_gpu {
709	power-supply = <&buck3_reg>;
710};
711
712&pgc_vpu {
713	power-supply = <&buck4_reg>;
714};
715
716&pwm1 {
717	pinctrl-names = "default";
718	pinctrl-0 = <&pinctrl_bl>;
719	status = "okay";
720};
721
722&snvs_pwrkey {
723	status = "okay";
724};
725
726&uart1 { /* console */
727	pinctrl-names = "default";
728	pinctrl-0 = <&pinctrl_uart1>;
729	status = "okay";
730};
731
732&uart3 { /* GNSS */
733	pinctrl-names = "default";
734	pinctrl-0 = <&pinctrl_uart3>;
735	status = "okay";
736};
737
738&uart4 { /* BT */
739	pinctrl-names = "default";
740	pinctrl-0 = <&pinctrl_uart4>, <&pinctrl_bt>;
741	uart-has-rtscts;
742	status = "okay";
743};
744
745&usb3_phy0 {
746	status = "okay";
747};
748
749&usb3_phy1 {
750	vbus-supply = <&reg_5v_p>;
751	status = "okay";
752};
753
754&usb_dwc3_0 {
755	#address-cells = <1>;
756	#size-cells = <0>;
757	dr_mode = "otg";
758	status = "okay";
759
760	port@0 {
761		reg = <0>;
762
763		typec_hs: endpoint {
764			remote-endpoint = <&usb_con_hs>;
765		};
766	};
767
768	port@1 {
769		reg = <1>;
770
771		typec_ss: endpoint {
772			remote-endpoint = <&usb_con_ss>;
773		};
774	};
775};
776
777&usb_dwc3_1 {
778	dr_mode = "host";
779	status = "okay";
780};
781
782&usdhc1 {
783	pinctrl-names = "default", "state_100mhz", "state_200mhz";
784	pinctrl-0 = <&pinctrl_usdhc1>;
785	pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
786	pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
787	bus-width = <8>;
788	non-removable;
789	status = "okay";
790};
791
792&usdhc2 {
793	pinctrl-names = "default", "state_100mhz", "state_200mhz";
794	pinctrl-0 = <&pinctrl_usdhc2>;
795	pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
796	pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
797	bus-width = <4>;
798	vmmc-supply = <&reg_usdhc2_vmmc>;
799	power-supply = <&wifi_pwr_en>;
800	non-removable;
801	disable-wp;
802	cap-sdio-irq;
803	keep-power-in-suspend;
804	wakeup-source;
805	status = "okay";
806};
807
808&wdog1 {
809	pinctrl-names = "default";
810	pinctrl-0 = <&pinctrl_wdog>;
811	fsl,ext-reset-output;
812	status = "okay";
813};
814