xref: /linux/arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi (revision bfe62a454542cfad3379f6ef5680b125f41e20f4)
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright 2018-2020 Purism SPC
4 */
5
6/dts-v1/;
7
8#include "dt-bindings/input/input.h"
9#include <dt-bindings/interrupt-controller/irq.h>
10#include <dt-bindings/leds/common.h>
11#include "dt-bindings/pwm/pwm.h"
12#include "dt-bindings/usb/pd.h"
13#include "imx8mq.dtsi"
14
15/ {
16	model = "Purism Librem 5";
17	compatible = "purism,librem5", "fsl,imx8mq";
18	chassis-type = "handset";
19
20	aliases {
21		rtc0 = &rtc;
22		rtc1 = &snvs_rtc;
23	};
24
25	backlight_dsi: backlight-dsi {
26		compatible = "led-backlight";
27		leds = <&led_backlight>;
28		brightness-levels = <255>;
29		default-brightness-level = <190>;
30	};
31
32	pmic_osc: clock-pmic {
33		compatible = "fixed-clock";
34		#clock-cells = <0>;
35		clock-frequency = <32768>;
36		clock-output-names = "pmic_osc";
37	};
38
39	chosen {
40		stdout-path = &uart1;
41	};
42
43	gpio-keys {
44		compatible = "gpio-keys";
45		pinctrl-names = "default";
46		pinctrl-0 = <&pinctrl_keys>;
47
48		key-vol-down {
49			label = "VOL_DOWN";
50			gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
51			linux,code = <KEY_VOLUMEDOWN>;
52			debounce-interval = <50>;
53		};
54
55		key-vol-up {
56			label = "VOL_UP";
57			gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
58			linux,code = <KEY_VOLUMEUP>;
59			debounce-interval = <50>;
60		};
61	};
62
63	led-controller {
64		compatible = "pwm-leds-multicolor";
65
66		multi-led {
67			color = <LED_COLOR_ID_RGB>;
68			function = LED_FUNCTION_STATUS;
69			max-brightness = <248>;
70
71			led-0 {
72				color = <LED_COLOR_ID_BLUE>;
73				pwms = <&pwm2 0 50000 0>;
74			};
75
76			led-1 {
77				color = <LED_COLOR_ID_GREEN>;
78				pwms = <&pwm4 0 50000 0>;
79			};
80
81			led-2 {
82				color = <LED_COLOR_ID_RED>;
83				pwms = <&pwm3 0 50000 0>;
84			};
85		};
86	};
87
88	reg_aud_1v8: regulator-audio-1v8 {
89		compatible = "regulator-fixed";
90		pinctrl-names = "default";
91		pinctrl-0 = <&pinctrl_audiopwr>;
92		regulator-name = "AUD_1V8";
93		regulator-min-microvolt = <1800000>;
94		regulator-max-microvolt = <1800000>;
95		gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>;
96		enable-active-high;
97		regulator-always-on;
98	};
99
100	reg_mic_2v4: regulator-mic-2v4 {
101		compatible = "regulator-fixed";
102		regulator-name = "MIC_2V4";
103		regulator-min-microvolt = <2400000>;
104		regulator-max-microvolt = <2400000>;
105		vin-supply = <&reg_aud_1v8>;
106	};
107
108	/*
109	 * the pinctrl for reg_csi_1v8 and reg_vcam_1v8 is added to the PMIC
110	 * since we can't have it twice in the 2 different regulator nodes.
111	 */
112	reg_csi_1v8: regulator-csi-1v8 {
113		compatible = "regulator-fixed";
114		regulator-name = "CAMERA_VDDIO_1V8";
115		regulator-min-microvolt = <1800000>;
116		regulator-max-microvolt = <1800000>;
117		vin-supply = <&reg_vdd_3v3>;
118		gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
119		enable-active-high;
120	};
121
122	/* controlled by the CAMERA_POWER_KEY HKS */
123	reg_vcam_1v2: regulator-vcam-1v2 {
124		compatible = "regulator-fixed";
125		regulator-name = "CAMERA_VDDD_1V2";
126		regulator-min-microvolt = <1200000>;
127		regulator-max-microvolt = <1200000>;
128		vin-supply = <&reg_vdd_1v8>;
129		enable-active-high;
130	};
131
132	reg_vcam_2v8: regulator-vcam-2v8 {
133		compatible = "regulator-fixed";
134		regulator-name = "CAMERA_VDDA_2V8";
135		regulator-min-microvolt = <2800000>;
136		regulator-max-microvolt = <2800000>;
137		vin-supply = <&reg_vdd_3v3>;
138		gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
139		enable-active-high;
140	};
141
142	reg_gnss: regulator-gnss {
143		compatible = "regulator-fixed";
144		pinctrl-names = "default";
145		pinctrl-0 = <&pinctrl_gnsspwr>;
146		regulator-name = "GNSS";
147		regulator-min-microvolt = <3300000>;
148		regulator-max-microvolt = <3300000>;
149		gpio = <&gpio3 12 GPIO_ACTIVE_HIGH>;
150		enable-active-high;
151	};
152
153	reg_hub: regulator-hub {
154		compatible = "regulator-fixed";
155		pinctrl-names = "default";
156		pinctrl-0 = <&pinctrl_hub_pwr>;
157		regulator-name = "HUB";
158		regulator-min-microvolt = <3300000>;
159		regulator-max-microvolt = <3300000>;
160		gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>;
161		enable-active-high;
162	};
163
164	reg_lcd_1v8: regulator-lcd-1v8 {
165		compatible = "regulator-fixed";
166		pinctrl-names = "default";
167		pinctrl-0 = <&pinctrl_dsien>;
168		regulator-name = "LCD_1V8";
169		regulator-min-microvolt = <1800000>;
170		regulator-max-microvolt = <1800000>;
171		vin-supply = <&reg_vdd_1v8>;
172		gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
173		enable-active-high;
174		/* Otherwise i2c3 is not functional */
175		regulator-always-on;
176	};
177
178	reg_lcd_3v4: regulator-lcd-3v4 {
179		compatible = "regulator-fixed";
180		regulator-name = "LCD_3V4";
181		pinctrl-names = "default";
182		pinctrl-0 = <&pinctrl_dsibiasen>;
183		vin-supply = <&reg_vsys_3v4>;
184		gpio = <&gpio1 20 GPIO_ACTIVE_HIGH>;
185		enable-active-high;
186	};
187
188	reg_vdd_sen: regulator-vdd-sen {
189		compatible = "regulator-fixed";
190		regulator-name = "VDD_SEN";
191		regulator-min-microvolt = <3300000>;
192		regulator-max-microvolt = <3300000>;
193	};
194
195	reg_vdd_1v8: regulator-vdd-1v8 {
196		compatible = "regulator-fixed";
197		regulator-name = "VDD_1V8";
198		regulator-min-microvolt = <1800000>;
199		regulator-max-microvolt = <1800000>;
200		vin-supply = <&buck7_reg>;
201	};
202
203	reg_vdd_3v3: regulator-vdd-3v3 {
204		compatible = "regulator-fixed";
205		regulator-name = "VDD_3V3";
206		regulator-min-microvolt = <3300000>;
207		regulator-max-microvolt = <3300000>;
208	};
209
210	reg_vsys_3v4: regulator-vsys-3v4 {
211		compatible = "regulator-fixed";
212		regulator-name = "VSYS_3V4";
213		regulator-min-microvolt = <3400000>;
214		regulator-max-microvolt = <3400000>;
215		regulator-always-on;
216	};
217
218	reg_wifi_3v3: regulator-wifi-3v3 {
219		compatible = "regulator-fixed";
220		pinctrl-names = "default";
221		pinctrl-0 = <&pinctrl_wifi_pwr>;
222		regulator-name = "3V3_WIFI";
223		regulator-min-microvolt = <3300000>;
224		regulator-max-microvolt = <3300000>;
225		gpio = <&gpio3 10 GPIO_ACTIVE_HIGH>;
226		enable-active-high;
227		vin-supply = <&reg_vdd_3v3>;
228	};
229
230	sound {
231		compatible = "simple-audio-card";
232		pinctrl-names = "default";
233		pinctrl-0 = <&pinctrl_hp>;
234		simple-audio-card,name = "Librem 5";
235		simple-audio-card,format = "i2s";
236		simple-audio-card,widgets =
237			"Headphone", "Headphones",
238			"Microphone", "Headset Mic",
239			"Microphone", "Digital Mic",
240			"Speaker", "Speaker";
241		simple-audio-card,routing =
242			"Headphones", "HPOUTL",
243			"Headphones", "HPOUTR",
244			"Speaker", "SPKOUTL",
245			"Speaker", "SPKOUTR",
246			"Headset Mic", "MICBIAS",
247			"IN3R", "Headset Mic",
248			"DMICDAT", "Digital Mic";
249		simple-audio-card,hp-det-gpios = <&gpio3 9 GPIO_ACTIVE_HIGH>;
250
251		simple-audio-card,cpu {
252			sound-dai = <&sai2>;
253		};
254
255		simple-audio-card,codec {
256			sound-dai = <&codec>;
257			clocks = <&clk IMX8MQ_CLK_SAI2_ROOT>;
258			frame-master;
259			bitclock-master;
260		};
261	};
262
263	sound-wwan {
264		compatible = "simple-audio-card";
265		simple-audio-card,name = "Modem";
266		simple-audio-card,format = "i2s";
267
268		simple-audio-card,cpu {
269			sound-dai = <&sai6>;
270			frame-inversion;
271		};
272
273		simple-audio-card,codec {
274			sound-dai = <&bm818_codec>;
275			frame-master;
276			bitclock-master;
277		};
278	};
279
280	usdhc2_pwrseq: pwrseq {
281		pinctrl-names = "default";
282		pinctrl-0 = <&pinctrl_bt>, <&pinctrl_wifi_disable>;
283		compatible = "mmc-pwrseq-simple";
284		reset-gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>,
285			      <&gpio4 29 GPIO_ACTIVE_HIGH>;
286	};
287
288	bm818_codec: sound-wwan-codec {
289		compatible = "broadmobi,bm818", "option,gtm601";
290		#sound-dai-cells = <0>;
291	};
292
293	vibrator {
294		compatible = "pwm-vibrator";
295		pwms = <&pwm1 0 50000 0>;
296		pwm-names = "enable";
297		vcc-supply = <&reg_vdd_3v3>;
298	};
299};
300
301&A53_0 {
302	cpu-supply = <&buck2_reg>;
303};
304
305&A53_1 {
306	cpu-supply = <&buck2_reg>;
307};
308
309&A53_2 {
310	cpu-supply = <&buck2_reg>;
311};
312
313&A53_3 {
314	cpu-supply = <&buck2_reg>;
315};
316
317&csi1 {
318	status = "okay";
319};
320
321&ddrc {
322	operating-points-v2 = <&ddrc_opp_table>;
323	status = "okay";
324
325	ddrc_opp_table: opp-table {
326		compatible = "operating-points-v2";
327
328		opp-25000000 {
329			opp-hz = /bits/ 64 <25000000>;
330		};
331
332		opp-100000000 {
333			opp-hz = /bits/ 64 <100000000>;
334		};
335
336		opp-166000000 {
337			opp-hz = /bits/ 64 <166935483>;
338		};
339
340		opp-800000000 {
341			opp-hz = /bits/ 64 <800000000>;
342		};
343	};
344};
345
346&dphy {
347	status = "okay";
348};
349
350&ecspi1 {
351	pinctrl-names = "default";
352	pinctrl-0 = <&pinctrl_ecspi1>;
353	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
354	#address-cells = <1>;
355	#size-cells = <0>;
356	status = "okay";
357
358	nor_flash: flash@0 {
359		compatible = "jedec,spi-nor";
360		reg = <0>;
361		spi-max-frequency = <1000000>;
362		#address-cells = <1>;
363		#size-cells = <1>;
364
365		partition@0 {
366			label = "protected0";
367			reg = <0x0 0x30000>;
368			read-only;
369		};
370
371		partition@30000 {
372			label = "firmware";
373			reg = <0x30000 0x1d0000>;
374			read-only;
375		};
376	};
377};
378
379&gpio1 {
380	pinctrl-names = "default";
381	pinctrl-0 = <&pinctrl_pmic_5v>;
382
383	pmic-5v-hog {
384		gpio-hog;
385		gpios = <1 GPIO_ACTIVE_HIGH>;
386		input;
387		line-name = "pmic-5v";
388	};
389};
390
391&iomuxc {
392	pinctrl-names = "default";
393	pinctrl-0 = <&pinctrl_hog>;
394
395	pinctrl_hog: hoggrp {
396		fsl,pins = <
397			/* CLKO2 for cameras on both CSI1 and CSI2 */
398			MX8MQ_IOMUXC_GPIO1_IO15_CCMSRCGPCMIX_CLKO2      0x1f
399		>;
400	};
401
402	pinctrl_audiopwr: audiopwrgrp {
403		fsl,pins = <
404			/* AUDIO_POWER_EN_3V3 */
405			MX8MQ_IOMUXC_GPIO1_IO04_GPIO1_IO4	0x83
406		>;
407	};
408
409	pinctrl_bl: blgrp {
410		fsl,pins = <
411			/* BACKLINGE_EN */
412			MX8MQ_IOMUXC_NAND_DQS_GPIO3_IO14	0x83
413		>;
414	};
415
416	pinctrl_bt: btgrp {
417		fsl,pins = <
418			/* BT_REG_ON */
419			MX8MQ_IOMUXC_SAI5_MCLK_GPIO3_IO25	0x83
420		>;
421	};
422
423	pinctrl_camera_pwr: camerapwrgrp {
424		fsl,pins = <
425			/* CAMERA_PWR_EN_3V3 */
426			MX8MQ_IOMUXC_GPIO1_IO00_GPIO1_IO0	0x83
427		>;
428	};
429
430	pinctrl_csi1: csi1grp {
431		fsl,pins = <
432			/* CSI1_NRST */
433			MX8MQ_IOMUXC_ENET_RXC_GPIO1_IO25	0x83
434		>;
435	};
436
437	pinctrl_charger_in: chargeringrp {
438		fsl,pins = <
439			/* CHRG_INT */
440			MX8MQ_IOMUXC_NAND_CE2_B_GPIO3_IO3	0x80
441		>;
442	};
443
444	pinctrl_dsibiasen: dsibiasengrp {
445		fsl,pins = <
446			/* DSI_BIAS_EN */
447			MX8MQ_IOMUXC_ENET_TD1_GPIO1_IO20	0x83
448		>;
449	};
450
451	pinctrl_dsien: dsiengrp {
452		fsl,pins = <
453			/* DSI_EN_3V3 */
454			MX8MQ_IOMUXC_GPIO1_IO05_GPIO1_IO5	0x83
455		>;
456	};
457
458	pinctrl_dsirst: dsirstgrp {
459		fsl,pins = <
460			/* DSI_RST */
461			MX8MQ_IOMUXC_ENET_RD3_GPIO1_IO29	0x83
462			/* DSI_TE */
463			MX8MQ_IOMUXC_ENET_RD2_GPIO1_IO28	0x83
464			/* TP_RST */
465			MX8MQ_IOMUXC_ENET_RX_CTL_GPIO1_IO24	0x83
466		>;
467	};
468
469	pinctrl_ecspi1: ecspigrp {
470		fsl,pins = <
471			MX8MQ_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI	0x83
472			MX8MQ_IOMUXC_ECSPI1_MISO_ECSPI1_MISO	0x83
473			MX8MQ_IOMUXC_ECSPI1_SS0_GPIO5_IO9	0x19
474			MX8MQ_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK	0x83
475		>;
476	};
477
478	pinctrl_gauge: gaugegrp {
479		fsl,pins = <
480			/* BAT_LOW */
481			MX8MQ_IOMUXC_SAI5_RXC_GPIO3_IO20	0x80
482		>;
483	};
484
485	pinctrl_gnsspwr: gnsspwrgrp {
486		fsl,pins = <
487			/* GPS3V3_EN */
488			MX8MQ_IOMUXC_NAND_DATA06_GPIO3_IO12	0x83
489		>;
490	};
491
492	pinctrl_haptic: hapticgrp {
493		fsl,pins = <
494			/* MOTO */
495			MX8MQ_IOMUXC_SPDIF_EXT_CLK_PWM1_OUT	0x83
496		>;
497	};
498
499	pinctrl_hp: hpgrp {
500		fsl,pins = <
501			/* HEADPHONE_DET_1V8 */
502			MX8MQ_IOMUXC_NAND_DATA03_GPIO3_IO9	0x180
503		>;
504	};
505
506	pinctrl_hub_pwr: hubpwrgrp {
507		fsl,pins = <
508			/* HUB_PWR_3V3_EN */
509			MX8MQ_IOMUXC_GPIO1_IO14_GPIO1_IO14	0x83
510		>;
511	};
512
513	pinctrl_i2c1: i2c1grp {
514		fsl,pins = <
515			MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL		0x40000026
516			MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA		0x40000026
517		>;
518	};
519
520	pinctrl_i2c1_gpio: i2c1-gpiogrp {
521		fsl,pins = <
522			MX8MQ_IOMUXC_I2C1_SCL_GPIO5_IO14	0x26
523			MX8MQ_IOMUXC_I2C1_SDA_GPIO5_IO15	0x26
524		>;
525	};
526
527	pinctrl_i2c2: i2c2grp {
528		fsl,pins = <
529			MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL		0x40000026
530			MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA		0x40000026
531		>;
532	};
533
534	pinctrl_i2c2_gpio: i2c2-gpiogrp {
535		fsl,pins = <
536			MX8MQ_IOMUXC_I2C2_SCL_GPIO5_IO16	0x26
537			MX8MQ_IOMUXC_I2C2_SDA_GPIO5_IO17	0x26
538		>;
539	};
540
541	pinctrl_i2c3: i2c3grp {
542		fsl,pins = <
543			MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL		0x40000026
544			MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA		0x40000026
545		>;
546	};
547
548	pinctrl_i2c3_gpio: i2c3-gpiogrp {
549		fsl,pins = <
550			MX8MQ_IOMUXC_I2C3_SCL_GPIO5_IO18	0x26
551			MX8MQ_IOMUXC_I2C3_SDA_GPIO5_IO19	0x26
552		>;
553	};
554
555	pinctrl_i2c4: i2c4grp {
556		fsl,pins = <
557			MX8MQ_IOMUXC_I2C4_SCL_I2C4_SCL		0x40000026
558			MX8MQ_IOMUXC_I2C4_SDA_I2C4_SDA		0x40000026
559		>;
560	};
561
562	pinctrl_i2c4_gpio: i2c4-gpiogrp {
563		fsl,pins = <
564			MX8MQ_IOMUXC_I2C4_SCL_GPIO5_IO20	0x26
565			MX8MQ_IOMUXC_I2C4_SDA_GPIO5_IO21	0x26
566		>;
567	};
568
569	pinctrl_keys: keysgrp {
570		fsl,pins = <
571			/* VOL- */
572			MX8MQ_IOMUXC_ENET_MDIO_GPIO1_IO17	0x01c0
573			/* VOL+ */
574			MX8MQ_IOMUXC_ENET_MDC_GPIO1_IO16	0x01c0
575		>;
576	};
577
578	pinctrl_led_b: ledbgrp {
579		fsl,pins = <
580			/* LED_B */
581			MX8MQ_IOMUXC_GPIO1_IO13_PWM2_OUT	0x06
582		>;
583	};
584
585	pinctrl_led_g: ledggrp {
586		fsl,pins = <
587			/* LED_G */
588			MX8MQ_IOMUXC_SAI3_MCLK_PWM4_OUT		0x06
589		>;
590	};
591
592	pinctrl_led_r: ledrgrp {
593		fsl,pins = <
594			/* LED_R */
595			MX8MQ_IOMUXC_SPDIF_TX_PWM3_OUT		0x06
596		>;
597	};
598
599	pinctrl_mag: maggrp {
600		fsl,pins = <
601			/* INT_MAG */
602			MX8MQ_IOMUXC_SAI5_RXD1_GPIO3_IO22	0x80
603		>;
604	};
605
606	pinctrl_pmic: pmicgrp {
607		fsl,pins = <
608			/* PMIC_NINT */
609			MX8MQ_IOMUXC_GPIO1_IO07_GPIO1_IO7	0x80
610		>;
611	};
612
613	pinctrl_pmic_5v: pmic5vgrp {
614		fsl,pins = <
615			/* PMIC_5V */
616			MX8MQ_IOMUXC_GPIO1_IO01_GPIO1_IO1	0x80
617		>;
618	};
619
620	pinctrl_prox: proxgrp {
621		fsl,pins = <
622			/* INT_LIGHT */
623			MX8MQ_IOMUXC_NAND_DATA01_GPIO3_IO7	0x80
624		>;
625	};
626
627	pinctrl_rtc: rtcgrp {
628		fsl,pins = <
629			/* RTC_INT */
630			MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9	0x80
631		>;
632	};
633
634	pinctrl_sai2: sai2grp {
635		fsl,pins = <
636			MX8MQ_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0	0xd6
637			MX8MQ_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC	0xd6
638			MX8MQ_IOMUXC_SAI2_MCLK_SAI2_MCLK	0xd6
639			MX8MQ_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0	0xd6
640			MX8MQ_IOMUXC_SAI2_TXC_SAI2_TX_BCLK	0xd6
641		>;
642	};
643
644	pinctrl_sai6: sai6grp {
645		fsl,pins = <
646			MX8MQ_IOMUXC_SAI1_RXD5_SAI6_RX_DATA0	0xd6
647			MX8MQ_IOMUXC_SAI1_RXD6_SAI6_RX_SYNC	0xd6
648			MX8MQ_IOMUXC_SAI1_TXD4_SAI6_RX_BCLK	0xd6
649			MX8MQ_IOMUXC_SAI1_TXD5_SAI6_TX_DATA0	0xd6
650		>;
651	};
652
653	pinctrl_tcpc: tcpcgrp {
654		fsl,pins = <
655			/* TCPC_INT */
656			MX8MQ_IOMUXC_GPIO1_IO10_GPIO1_IO10	0x01c0
657		>;
658	};
659
660	pinctrl_touch: touchgrp {
661		fsl,pins = <
662			/* TP_INT */
663			MX8MQ_IOMUXC_ENET_RD1_GPIO1_IO27	0x80
664		>;
665	};
666
667	pinctrl_typec: typecgrp {
668		fsl,pins = <
669			/* TYPEC_MUX_EN */
670			MX8MQ_IOMUXC_GPIO1_IO11_GPIO1_IO11	0x83
671		>;
672	};
673
674	pinctrl_uart1: uart1grp {
675		fsl,pins = <
676			MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX	0x49
677			MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX	0x49
678		>;
679	};
680
681	pinctrl_uart2: uart2grp {
682		fsl,pins = <
683			MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX	0x49
684			MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX	0x49
685		>;
686	};
687
688	pinctrl_uart3: uart3grp {
689		fsl,pins = <
690			MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX	0x49
691			MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX	0x49
692		>;
693	};
694
695	pinctrl_uart4: uart4grp {
696		fsl,pins = <
697			MX8MQ_IOMUXC_ECSPI2_SCLK_UART4_DCE_RX		0x49
698			MX8MQ_IOMUXC_ECSPI2_MOSI_UART4_DCE_TX		0x49
699			MX8MQ_IOMUXC_ECSPI2_MISO_UART4_DCE_CTS_B	0x49
700			MX8MQ_IOMUXC_ECSPI2_SS0_UART4_DCE_RTS_B		0x49
701		>;
702	};
703
704	pinctrl_usdhc1: usdhc1grp {
705		fsl,pins = <
706			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK			0x83
707			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD			0xc3
708			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0		0xc3
709			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1		0xc3
710			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2		0xc3
711			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3		0xc3
712			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4		0xc3
713			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5		0xc3
714			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6		0xc3
715			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7		0xc3
716			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE		0x83
717			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B		0xc1
718		>;
719	};
720
721	pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
722		fsl,pins = <
723			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK			0x8d
724			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD			0xcd
725			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0		0xcd
726			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1		0xcd
727			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2		0xcd
728			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3		0xcd
729			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4		0xcd
730			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5		0xcd
731			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6		0xcd
732			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7		0xcd
733			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE		0x8d
734			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B		0xc1
735		>;
736	};
737
738	pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
739		fsl,pins = <
740			MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK			0x9f
741			MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD			0xdf
742			MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0		0xdf
743			MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1		0xdf
744			MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2		0xdf
745			MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3		0xdf
746			MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4		0xdf
747			MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5		0xdf
748			MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6		0xdf
749			MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7		0xdf
750			MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE		0x9f
751			MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B		0xc1
752		>;
753	};
754
755	pinctrl_usdhc2: usdhc2grp {
756		fsl,pins = <
757			MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12	0x80
758			MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK		0x83
759			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD		0xc3
760			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0	0xc3
761			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1	0xc3
762			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2	0xc3
763			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3	0xc3
764			MX8MQ_IOMUXC_SD2_RESET_B_USDHC2_RESET_B 0xc1
765		>;
766	};
767
768	pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
769		fsl,pins = <
770			MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12	0x80
771			MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK		0x8d
772			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD		0xcd
773			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0	0xcd
774			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1	0xcd
775			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2	0xcd
776			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3	0xcd
777			MX8MQ_IOMUXC_SD2_RESET_B_USDHC2_RESET_B 0xc1
778		>;
779	};
780
781	pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
782		fsl,pins = <
783			MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12	0x80
784			MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK		0x9f
785			MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD		0xcf
786			MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0	0xcf
787			MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1	0xcf
788			MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2	0xcf
789			MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3	0xcf
790			MX8MQ_IOMUXC_SD2_RESET_B_USDHC2_RESET_B 0xc1
791		>;
792	};
793
794	pinctrl_wifi_disable: wifidisablegrp {
795		fsl,pins = <
796			/* WIFI_REG_ON */
797			MX8MQ_IOMUXC_SAI3_RXC_GPIO4_IO29	0x83
798		>;
799	};
800
801	pinctrl_wifi_pwr: wifipwrgrp {
802		fsl,pins = <
803			/* WIFI3V3_EN */
804			MX8MQ_IOMUXC_NAND_DATA04_GPIO3_IO10	0x83
805		>;
806	};
807
808	pinctrl_wdog: wdoggrp {
809		fsl,pins = <
810			/* nWDOG */
811			MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B	0x1f
812		>;
813	};
814};
815
816&i2c1 {
817	clock-frequency = <384000>;
818	pinctrl-names = "default", "gpio";
819	pinctrl-0 = <&pinctrl_i2c1>;
820	pinctrl-1 = <&pinctrl_i2c1_gpio>;
821	scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
822	sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
823	status = "okay";
824
825	typec_pd: usb-pd@3f {
826		compatible = "ti,tps6598x";
827		reg = <0x3f>;
828		pinctrl-names = "default";
829		pinctrl-0 = <&pinctrl_typec>, <&pinctrl_tcpc>;
830		interrupt-parent = <&gpio1>;
831		interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
832		interrupt-names = "irq";
833		wakeup-source;
834
835		connector {
836			compatible = "usb-c-connector";
837			label = "USB-C";
838			data-role = "dual";
839
840			ports {
841				#address-cells = <1>;
842				#size-cells = <0>;
843
844				port@0 {
845					reg = <0>;
846
847					usb_con_hs: endpoint {
848						remote-endpoint = <&typec_hs>;
849					};
850				};
851
852				port@1 {
853					reg = <1>;
854
855					usb_con_ss: endpoint {
856						remote-endpoint = <&typec_ss>;
857					};
858				};
859			};
860		};
861	};
862
863	pmic: pmic@4b {
864		compatible = "rohm,bd71837";
865		reg = <0x4b>;
866		pinctrl-names = "default";
867		pinctrl-0 = <&pinctrl_pmic>, <&pinctrl_camera_pwr>;
868		clocks = <&pmic_osc>;
869		#clock-cells = <0>;
870		clock-names = "osc";
871		clock-output-names = "pmic_clk";
872		interrupt-parent = <&gpio1>;
873		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
874		rohm,reset-snvs-powered;
875
876		regulators {
877			buck1_reg: BUCK1 {
878				regulator-name = "buck1";
879				regulator-min-microvolt = <700000>;
880				regulator-max-microvolt = <1300000>;
881				regulator-boot-on;
882				regulator-ramp-delay = <1250>;
883				rohm,dvs-run-voltage = <900000>;
884				rohm,dvs-idle-voltage = <850000>;
885				rohm,dvs-suspend-voltage = <850000>;
886				regulator-always-on;
887			};
888
889			buck2_reg: BUCK2 {
890				regulator-name = "buck2";
891				regulator-min-microvolt = <700000>;
892				regulator-max-microvolt = <1300000>;
893				regulator-boot-on;
894				regulator-ramp-delay = <1250>;
895				rohm,dvs-run-voltage = <1000000>;
896				rohm,dvs-idle-voltage = <900000>;
897				regulator-always-on;
898			};
899
900			buck3_reg: BUCK3 {
901				regulator-name = "buck3";
902				regulator-min-microvolt = <700000>;
903				regulator-max-microvolt = <1300000>;
904				regulator-boot-on;
905				rohm,dvs-run-voltage = <900000>;
906			};
907
908			buck4_reg: BUCK4 {
909				regulator-name = "buck4";
910				regulator-min-microvolt = <700000>;
911				regulator-max-microvolt = <1300000>;
912				rohm,dvs-run-voltage = <1000000>;
913			};
914
915			buck5_reg: BUCK5 {
916				regulator-name = "buck5";
917				regulator-min-microvolt = <700000>;
918				regulator-max-microvolt = <1350000>;
919				regulator-boot-on;
920				regulator-always-on;
921			};
922
923			buck6_reg: BUCK6 {
924				regulator-name = "buck6";
925				regulator-min-microvolt = <3000000>;
926				regulator-max-microvolt = <3300000>;
927				regulator-boot-on;
928				regulator-always-on;
929			};
930
931			buck7_reg: BUCK7 {
932				regulator-name = "buck7";
933				regulator-min-microvolt = <1605000>;
934				regulator-max-microvolt = <1995000>;
935				regulator-boot-on;
936				regulator-always-on;
937			};
938
939			buck8_reg: BUCK8 {
940				regulator-name = "buck8";
941				regulator-min-microvolt = <800000>;
942				regulator-max-microvolt = <1400000>;
943				regulator-boot-on;
944				regulator-always-on;
945			};
946
947			ldo1_reg: LDO1 {
948				regulator-name = "ldo1";
949				regulator-min-microvolt = <3000000>;
950				regulator-max-microvolt = <3300000>;
951				regulator-boot-on;
952				/* leave on for snvs power button */
953				regulator-always-on;
954			};
955
956			ldo2_reg: LDO2 {
957				regulator-name = "ldo2";
958				regulator-min-microvolt = <900000>;
959				regulator-max-microvolt = <900000>;
960				regulator-boot-on;
961				/* leave on for snvs power button */
962				regulator-always-on;
963			};
964
965			ldo3_reg: LDO3 {
966				regulator-name = "ldo3";
967				regulator-min-microvolt = <1800000>;
968				regulator-max-microvolt = <3300000>;
969				regulator-boot-on;
970				regulator-always-on;
971			};
972
973			ldo4_reg: LDO4 {
974				regulator-name = "ldo4";
975				regulator-min-microvolt = <900000>;
976				regulator-max-microvolt = <1800000>;
977				regulator-boot-on;
978				regulator-always-on;
979			};
980
981			ldo5_reg: LDO5 {
982				/* VDD_PHY_0V9 - MIPI and HDMI domains */
983				regulator-name = "ldo5";
984				regulator-min-microvolt = <1800000>;
985				regulator-max-microvolt = <3300000>;
986				regulator-always-on;
987			};
988
989			ldo6_reg: LDO6 {
990				/* VDD_PHY_0V9 - MIPI, HDMI and USB domains */
991				regulator-name = "ldo6";
992				regulator-min-microvolt = <900000>;
993				regulator-max-microvolt = <1800000>;
994				regulator-boot-on;
995				regulator-always-on;
996			};
997
998			ldo7_reg: LDO7 {
999				/* VDD_PHY_3V3 - USB domain */
1000				regulator-name = "ldo7";
1001				regulator-min-microvolt = <1800000>;
1002				regulator-max-microvolt = <3300000>;
1003				regulator-boot-on;
1004				regulator-always-on;
1005			};
1006		};
1007	};
1008
1009	rtc: rtc@68 {
1010		compatible = "microcrystal,rv4162";
1011		reg = <0x68>;
1012		pinctrl-names = "default";
1013		pinctrl-0 = <&pinctrl_rtc>;
1014		interrupt-parent = <&gpio1>;
1015		interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
1016	};
1017};
1018
1019&i2c2 {
1020	clock-frequency = <384000>;
1021	pinctrl-names = "default", "gpio";
1022	pinctrl-0 = <&pinctrl_i2c2>;
1023	pinctrl-1 = <&pinctrl_i2c2_gpio>;
1024	scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
1025	sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
1026	status = "okay";
1027
1028	magnetometer: magnetometer@1e	{
1029		compatible = "st,lsm9ds1-magn";
1030		reg = <0x1e>;
1031		pinctrl-names = "default";
1032		pinctrl-0 = <&pinctrl_mag>;
1033		interrupt-parent = <&gpio3>;
1034		interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
1035		vdd-supply = <&reg_vdd_sen>;
1036		vddio-supply = <&reg_vdd_1v8>;
1037	};
1038
1039	regulator@3e {
1040		compatible = "ti,tps65132";
1041		reg = <0x3e>;
1042
1043		reg_lcd_avdd: outp {
1044			regulator-name = "LCD_AVDD";
1045			vin-supply = <&reg_lcd_3v4>;
1046		};
1047
1048		reg_lcd_avee: outn {
1049			regulator-name = "LCD_AVEE";
1050			vin-supply = <&reg_lcd_3v4>;
1051		};
1052	};
1053
1054	proximity: prox@60 {
1055		compatible = "vishay,vcnl4040";
1056		reg = <0x60>;
1057		pinctrl-names = "default";
1058		pinctrl-0 = <&pinctrl_prox>;
1059		interrupt-parent = <&gpio3>;
1060		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
1061	};
1062
1063	accel_gyro: accel-gyro@6a	{
1064		compatible = "st,lsm9ds1-imu";
1065		reg = <0x6a>;
1066		vdd-supply = <&reg_vdd_sen>;
1067		vddio-supply = <&reg_vdd_1v8>;
1068	};
1069};
1070
1071&i2c3 {
1072	clock-frequency = <384000>;
1073	pinctrl-names = "default", "gpio";
1074	pinctrl-0 = <&pinctrl_i2c3>;
1075	pinctrl-1 = <&pinctrl_i2c3_gpio>;
1076	scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
1077	sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
1078	status = "okay";
1079
1080	codec: audio-codec@1a {
1081		compatible = "wlf,wm8962";
1082		reg = <0x1a>;
1083		clocks = <&clk IMX8MQ_CLK_SAI2_ROOT>;
1084		assigned-clocks = <&clk IMX8MQ_CLK_SAI2>;
1085		assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>;
1086		assigned-clock-rates = <24576000>;
1087		#sound-dai-cells = <0>;
1088		DCVDD-supply = <&reg_aud_1v8>;
1089		DBVDD-supply = <&reg_aud_1v8>;
1090		AVDD-supply = <&reg_aud_1v8>;
1091		CPVDD-supply = <&reg_aud_1v8>;
1092		MICVDD-supply = <&reg_mic_2v4>;
1093		PLLVDD-supply = <&reg_aud_1v8>;
1094		SPKVDD1-supply = <&reg_vsys_3v4>;
1095		SPKVDD2-supply = <&reg_vsys_3v4>;
1096		gpio-cfg = <
1097			0x0000 /* n/c */
1098			0x0001 /* gpio2, 1: default */
1099			0x0013 /* gpio3, 2: dmicclk */
1100			0x0000 /* n/c, 3: default */
1101			0x8014 /* gpio5, 4: dmic_dat */
1102			0x0000 /* gpio6, 5: default */
1103		>;
1104	};
1105
1106	camera_front: camera@20 {
1107		compatible = "hynix,hi846";
1108		reg = <0x20>;
1109		pinctrl-names = "default";
1110		pinctrl-0 = <&pinctrl_csi1>;
1111		clocks = <&clk IMX8MQ_CLK_CLKO2>;
1112		assigned-clocks = <&clk IMX8MQ_CLK_CLKO2>;
1113		assigned-clock-rates = <25000000>;
1114		reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
1115		vdda-supply = <&reg_vcam_2v8>;
1116		vddd-supply = <&reg_vcam_1v2>;
1117		vddio-supply = <&reg_csi_1v8>;
1118		rotation = <90>;
1119		orientation = <0>;
1120
1121		port {
1122			camera1_ep: endpoint {
1123				data-lanes = <1 2>;
1124				link-frequencies = /bits/ 64
1125					<80000000 200000000 300000000>;
1126				remote-endpoint = <&mipi1_sensor_ep>;
1127			};
1128		};
1129	};
1130
1131	backlight@36 {
1132		compatible = "ti,lm36922";
1133		reg = <0x36>;
1134		pinctrl-names = "default";
1135		pinctrl-0 = <&pinctrl_bl>;
1136		#address-cells = <1>;
1137		#size-cells = <0>;
1138		enable-gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
1139		vled-supply = <&reg_vsys_3v4>;
1140		ti,ovp-microvolt = <25000000>;
1141
1142		led_backlight: led@0 {
1143			reg = <0>;
1144			label = ":backlight";
1145			linux,default-trigger = "backlight";
1146			led-max-microamp = <20000>;
1147		};
1148	};
1149
1150	touchscreen@38 {
1151		compatible = "edt,edt-ft5506";
1152		reg = <0x38>;
1153		pinctrl-names = "default";
1154		pinctrl-0 = <&pinctrl_touch>;
1155		interrupt-parent = <&gpio1>;
1156		interrupts = <27 IRQ_TYPE_EDGE_FALLING>;
1157		touchscreen-size-x = <720>;
1158		touchscreen-size-y = <1440>;
1159		vcc-supply = <&reg_lcd_1v8>;
1160	};
1161};
1162
1163&i2c4 {
1164	clock-frequency = <384000>;
1165	pinctrl-names = "default", "gpio";
1166	pinctrl-0 = <&pinctrl_i2c4>;
1167	pinctrl-1 = <&pinctrl_i2c4_gpio>;
1168	scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
1169	sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
1170	status = "okay";
1171
1172	vcm@c {
1173		compatible = "dongwoon,dw9714";
1174		reg = <0x0c>;
1175		vcc-supply = <&reg_csi_1v8>;
1176	};
1177
1178	bat: fuel-gauge@36 {
1179		compatible = "maxim,max17055";
1180		reg = <0x36>;
1181		interrupt-parent = <&gpio3>;
1182		interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
1183		pinctrl-names = "default";
1184		pinctrl-0 = <&pinctrl_gauge>;
1185		power-supplies = <&bq25895>;
1186		maxim,over-heat-temp = <700>;
1187		maxim,over-volt = <4500>;
1188		maxim,rsns-microohm = <5000>;
1189	};
1190
1191	bq25895: charger@6a {
1192		compatible = "ti,bq25895", "ti,bq25890";
1193		reg = <0x6a>;
1194		pinctrl-names = "default";
1195		pinctrl-0 = <&pinctrl_charger_in>;
1196		interrupt-parent = <&gpio3>;
1197		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
1198		ti,battery-regulation-voltage = <4208000>; /* uV */
1199		ti,termination-current = <128000>;  /* uA */
1200		ti,precharge-current = <128000>; /* uA */
1201		ti,minimum-sys-voltage = <3700000>; /* uV */
1202		ti,boost-voltage = <5000000>; /* uV */
1203		ti,boost-max-current = <1500000>; /* uA */
1204		monitored-battery = <&bat>;
1205		power-supplies = <&typec_pd>;
1206	};
1207};
1208
1209&lcdif {
1210	status = "okay";
1211};
1212
1213&mipi_csi1 {
1214	assigned-clock-rates = <266000000>, <200000000>, <66000000>;
1215	status = "okay";
1216
1217	ports {
1218		port@0 {
1219			reg = <0>;
1220
1221			mipi1_sensor_ep: endpoint {
1222				remote-endpoint = <&camera1_ep>;
1223				data-lanes = <1 2>;
1224			};
1225		};
1226	};
1227};
1228
1229&mipi_dsi {
1230	#address-cells = <1>;
1231	#size-cells = <0>;
1232	status = "okay";
1233
1234	lcd_panel: panel@0 {
1235		compatible = "mantix,mlaf057we51-x";
1236		reg = <0>;
1237		pinctrl-names = "default";
1238		pinctrl-0 = <&pinctrl_dsirst>;
1239		avdd-supply = <&reg_lcd_avdd>;
1240		avee-supply = <&reg_lcd_avee>;
1241		vddi-supply = <&reg_lcd_1v8>;
1242		backlight = <&backlight_dsi>;
1243		reset-gpios = <&gpio1 29 GPIO_ACTIVE_LOW>;
1244		mantix,tp-rstn-gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
1245
1246		port {
1247			panel_in: endpoint {
1248				remote-endpoint = <&mipi_dsi_out>;
1249			};
1250		};
1251	};
1252
1253	ports {
1254		port@1 {
1255			reg = <1>;
1256
1257			mipi_dsi_out: endpoint {
1258				remote-endpoint = <&panel_in>;
1259			};
1260		};
1261	};
1262};
1263
1264&pgc_gpu {
1265	power-supply = <&buck3_reg>;
1266};
1267
1268&pgc_mipi {
1269	power-supply = <&ldo5_reg>;
1270};
1271
1272&pgc_vpu {
1273	power-supply = <&buck4_reg>;
1274};
1275
1276&pwm1 {
1277	pinctrl-names = "default";
1278	pinctrl-0 = <&pinctrl_haptic>;
1279	status = "okay";
1280};
1281
1282&pwm2 {
1283	pinctrl-names = "default";
1284	pinctrl-0 = <&pinctrl_led_b>;
1285	status = "okay";
1286};
1287
1288&pwm3 {
1289	pinctrl-names = "default";
1290	pinctrl-0 = <&pinctrl_led_r>;
1291	status = "okay";
1292};
1293
1294&pwm4 {
1295	pinctrl-names = "default";
1296	pinctrl-0 = <&pinctrl_led_g>;
1297	status = "okay";
1298};
1299
1300&sai2 {
1301	pinctrl-names = "default";
1302	pinctrl-0 = <&pinctrl_sai2>;
1303	assigned-clocks = <&clk IMX8MQ_CLK_SAI2>;
1304	assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>;
1305	assigned-clock-rates = <24576000>;
1306	status = "okay";
1307};
1308
1309&sai6 {
1310	pinctrl-names = "default";
1311	pinctrl-0 = <&pinctrl_sai6>;
1312	assigned-clocks = <&clk IMX8MQ_CLK_SAI6>;
1313	assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>;
1314	assigned-clock-rates = <24576000>;
1315	fsl,sai-synchronous-rx;
1316	status = "okay";
1317};
1318
1319&snvs_pwrkey {
1320	status = "okay";
1321};
1322
1323&uart1 { /* console */
1324	pinctrl-names = "default";
1325	pinctrl-0 = <&pinctrl_uart1>;
1326	status = "okay";
1327};
1328
1329&uart2 { /* TPS - GPS - DEBUG */
1330	pinctrl-names = "default";
1331	pinctrl-0 = <&pinctrl_uart2>;
1332	status = "okay";
1333
1334	gnss {
1335		compatible = "globaltop,pa6h";
1336		vcc-supply = <&reg_gnss>;
1337		current-speed = <9600>;
1338	};
1339};
1340
1341&uart3 { /* SMC */
1342	pinctrl-names = "default";
1343	pinctrl-0 = <&pinctrl_uart3>;
1344	status = "okay";
1345};
1346
1347&uart4 { /* BT */
1348	pinctrl-names = "default";
1349	pinctrl-0 = <&pinctrl_uart4>;
1350	uart-has-rtscts;
1351	status = "okay";
1352};
1353
1354&usb3_phy0 {
1355	status = "okay";
1356};
1357
1358&usb3_phy1 {
1359	vbus-supply = <&reg_hub>;
1360	status = "okay";
1361};
1362
1363&usb_dwc3_0 {
1364	dr_mode = "otg";
1365	usb-role-switch;
1366	status = "okay";
1367
1368	ports {
1369		#address-cells = <1>;
1370		#size-cells = <0>;
1371
1372		port@0 {
1373			reg = <0>;
1374
1375			typec_hs: endpoint {
1376				remote-endpoint = <&usb_con_hs>;
1377			};
1378		};
1379
1380		port@1 {
1381			reg = <1>;
1382
1383			typec_ss: endpoint {
1384				remote-endpoint = <&usb_con_ss>;
1385			};
1386		};
1387	};
1388};
1389
1390&usb_dwc3_1 {
1391	dr_mode = "host";
1392	status = "okay";
1393	#address-cells = <1>;
1394	#size-cells = <0>;
1395
1396	/* Microchip USB2642 */
1397	hub@1 {
1398		compatible = "usb424,2640";
1399		reg = <1>;
1400		#address-cells = <1>;
1401		#size-cells = <0>;
1402
1403		mass-storage@1 {
1404			compatible = "usb424,4041";
1405			reg = <1>;
1406		};
1407	};
1408};
1409
1410&usdhc1 {
1411	assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
1412	assigned-clock-rates = <400000000>;
1413	pinctrl-names = "default", "state_100mhz", "state_200mhz";
1414	pinctrl-0 = <&pinctrl_usdhc1>;
1415	pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
1416	pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
1417	bus-width = <8>;
1418	vmmc-supply = <&reg_vdd_3v3>;
1419	vqmmc-supply = <&reg_vdd_1v8>;
1420	non-removable;
1421	status = "okay";
1422};
1423
1424&usdhc2 {
1425	assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
1426	assigned-clock-rates = <50000000>;
1427	pinctrl-names = "default", "state_100mhz", "state_200mhz";
1428	pinctrl-0 = <&pinctrl_usdhc2>;
1429	pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
1430	pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
1431	bus-width = <4>;
1432	vmmc-supply = <&reg_wifi_3v3>;
1433	mmc-pwrseq = <&usdhc2_pwrseq>;
1434	post-power-on-delay-ms = <20>;
1435	cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
1436	max-frequency = <50000000>;
1437	disable-wp;
1438	cap-sdio-irq;
1439	cap-power-off-card;
1440	keep-power-in-suspend;
1441	wakeup-source;
1442	status = "okay";
1443};
1444
1445&wdog1 {
1446	pinctrl-names = "default";
1447	pinctrl-0 = <&pinctrl_wdog>;
1448	fsl,ext-reset-output;
1449	status = "okay";
1450};
1451