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