1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/* 3 * Copyright 2024-2025 NXP 4 */ 5 6/dts-v1/; 7 8#include "imx943.dtsi" 9 10/ { 11 compatible = "fsl,imx943-evk", "fsl,imx94"; 12 model = "NXP i.MX943 EVK board"; 13 14 aliases { 15 i2c2 = &lpi2c3; 16 i2c3 = &lpi2c4; 17 i2c5 = &lpi2c6; 18 mmc0 = &usdhc1; 19 mmc1 = &usdhc2; 20 serial0 = &lpuart1; 21 }; 22 23 bt_sco_codec: bt-sco-codec { 24 compatible = "linux,bt-sco"; 25 #sound-dai-cells = <1>; 26 }; 27 28 chosen { 29 stdout-path = &lpuart1; 30 }; 31 32 dmic: dmic { 33 compatible = "dmic-codec"; 34 #sound-dai-cells = <0>; 35 }; 36 37 reg_usdhc2_vmmc: regulator-usdhc2 { 38 compatible = "regulator-fixed"; 39 off-on-delay-us = <12000>; 40 pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>; 41 pinctrl-names = "default"; 42 regulator-max-microvolt = <3300000>; 43 regulator-min-microvolt = <3300000>; 44 regulator-name = "VDD_SD2_3V3"; 45 gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>; 46 enable-active-high; 47 }; 48 49 reg_audio_pwr: regulator-wm8962-pwr { 50 compatible = "regulator-fixed"; 51 regulator-max-microvolt = <3300000>; 52 regulator-min-microvolt = <3300000>; 53 regulator-name = "audio-pwr"; 54 gpio = <&pcal6416_i2c3_u171 12 GPIO_ACTIVE_HIGH>; 55 enable-active-high; 56 }; 57 58 reserved-memory { 59 ranges; 60 #address-cells = <2>; 61 #size-cells = <2>; 62 63 linux,cma { 64 compatible = "shared-dma-pool"; 65 alloc-ranges = <0 0x80000000 0 0x7f000000>; 66 reusable; 67 size = <0 0x10000000>; 68 linux,cma-default; 69 }; 70 }; 71 72 sound-bt-sco { 73 compatible = "simple-audio-card"; 74 simple-audio-card,bitclock-inversion; 75 simple-audio-card,bitclock-master = <&btcpu>; 76 simple-audio-card,format = "dsp_a"; 77 simple-audio-card,frame-master = <&btcpu>; 78 simple-audio-card,name = "bt-sco-audio"; 79 80 simple-audio-card,codec { 81 sound-dai = <&bt_sco_codec 1>; 82 }; 83 84 btcpu: simple-audio-card,cpu { 85 dai-tdm-slot-num = <2>; 86 dai-tdm-slot-width = <16>; 87 sound-dai = <&sai3>; 88 }; 89 }; 90 91 sound-micfil { 92 compatible = "fsl,imx-audio-card"; 93 model = "micfil-audio"; 94 95 pri-dai-link { 96 format = "i2s"; 97 link-name = "micfil hifi"; 98 99 codec { 100 sound-dai = <&dmic>; 101 }; 102 103 cpu { 104 sound-dai = <&micfil>; 105 }; 106 }; 107 }; 108 109 sound-wm8962 { 110 compatible = "fsl,imx-audio-wm8962"; 111 audio-codec = <&wm8962>; 112 audio-cpu = <&sai1>; 113 audio-routing = "Headphone Jack", "HPOUTL", 114 "Headphone Jack", "HPOUTR", 115 "Ext Spk", "SPKOUTL", 116 "Ext Spk", "SPKOUTR", 117 "AMIC", "MICBIAS", 118 "IN3R", "AMIC", 119 "IN1R", "AMIC"; 120 hp-det-gpio = <&pcal6416_i2c3_u48 14 GPIO_ACTIVE_HIGH>; 121 model = "wm8962-audio"; 122 }; 123 124 memory@80000000 { 125 reg = <0x0 0x80000000 0x0 0x80000000>; 126 device_type = "memory"; 127 }; 128}; 129 130&lpi2c3 { 131 clock-frequency = <400000>; 132 pinctrl-0 = <&pinctrl_lpi2c3>; 133 pinctrl-names = "default"; 134 status = "okay"; 135 136 pca9670_i2c3: gpio@23 { 137 compatible = "nxp,pca9670"; 138 reg = <0x23>; 139 #gpio-cells = <2>; 140 gpio-controller; 141 }; 142 143 pca9548_i2c3: i2c-mux@77 { 144 compatible = "nxp,pca9548"; 145 reg = <0x77>; 146 #address-cells = <1>; 147 #size-cells = <0>; 148 149 i2c@0 { 150 reg = <0>; 151 #address-cells = <1>; 152 #size-cells = <0>; 153 }; 154 155 i2c@1 { 156 reg = <1>; 157 #address-cells = <1>; 158 #size-cells = <0>; 159 }; 160 161 i2c@2 { 162 reg = <2>; 163 #address-cells = <1>; 164 #size-cells = <0>; 165 }; 166 167 i2c@3 { 168 reg = <3>; 169 #address-cells = <1>; 170 #size-cells = <0>; 171 }; 172 173 i2c@4 { 174 reg = <4>; 175 #address-cells = <1>; 176 #size-cells = <0>; 177 178 wm8962: codec@1a { 179 compatible = "wlf,wm8962"; 180 reg = <0x1a>; 181 clocks = <&scmi_clk IMX94_CLK_SAI1>; 182 AVDD-supply = <®_audio_pwr>; 183 CPVDD-supply = <®_audio_pwr>; 184 DBVDD-supply = <®_audio_pwr>; 185 DCVDD-supply = <®_audio_pwr>; 186 gpio-cfg = < 187 0x0000 /* 0:Default */ 188 0x0000 /* 1:Default */ 189 0x0000 /* 2:FN_DMICCLK */ 190 0x0000 /* 3:Default */ 191 0x0000 /* 4:FN_DMICCDAT */ 192 0x0000 /* 5:Default */ 193 >; 194 MICVDD-supply = <®_audio_pwr>; 195 PLLVDD-supply = <®_audio_pwr>; 196 SPKVDD1-supply = <®_audio_pwr>; 197 SPKVDD2-supply = <®_audio_pwr>; 198 }; 199 }; 200 201 i2c@5 { 202 reg = <5>; 203 #address-cells = <1>; 204 #size-cells = <0>; 205 206 pcal6416_i2c3_u46: gpio@20 { 207 compatible = "nxp,pcal6416"; 208 reg = <0x20>; 209 #gpio-cells = <2>; 210 gpio-controller; 211 212 sd-card-on-hog { 213 gpios = <13 GPIO_ACTIVE_HIGH>; 214 gpio-hog; 215 output-high; 216 }; 217 }; 218 219 pcal6416_i2c3_u171: gpio@21 { 220 compatible = "nxp,pcal6416"; 221 reg = <0x21>; 222 #gpio-cells = <2>; 223 gpio-controller; 224 225 audio-pwren-hog { 226 gpios = <12 GPIO_ACTIVE_HIGH>; 227 gpio-hog; 228 output-high; 229 }; 230 231 mqs-mic-sel-hog { 232 gpios = <11 GPIO_ACTIVE_HIGH>; 233 gpio-hog; 234 output-low; 235 }; 236 }; 237 }; 238 239 i2c@6 { 240 reg = <6>; 241 #address-cells = <1>; 242 #size-cells = <0>; 243 244 pcal6416_i2c3_u48: gpio@20 { 245 compatible = "nxp,pcal6416"; 246 reg = <0x20>; 247 #interrupt-cells = <2>; 248 interrupt-controller; 249 interrupt-parent = <&gpio3>; 250 interrupts = <13 IRQ_TYPE_LEVEL_LOW>; 251 #gpio-cells = <2>; 252 gpio-controller; 253 pinctrl-0 = <&pinctrl_ioexpander_int>; 254 pinctrl-names = "default"; 255 }; 256 }; 257 258 i2c@7 { 259 reg = <7>; 260 #address-cells = <1>; 261 #size-cells = <0>; 262 263 pcal6408_i2c3_u172: gpio@20 { 264 compatible = "nxp,pcal6408"; 265 reg = <0x20>; 266 #interrupt-cells = <2>; 267 interrupt-controller; 268 interrupt-parent = <&gpio3>; 269 /* shared int pin with u48 */ 270 interrupts = <13 IRQ_TYPE_LEVEL_LOW>; 271 #gpio-cells = <2>; 272 gpio-controller; 273 }; 274 }; 275 }; 276}; 277 278&lpi2c4 { 279 clock-frequency = <400000>; 280 pinctrl-0 = <&pinctrl_lpi2c4>; 281 pinctrl-names = "default"; 282 status = "okay"; 283}; 284 285&lpi2c6 { 286 clock-frequency = <400000>; 287 pinctrl-0 = <&pinctrl_lpi2c6>; 288 pinctrl-names = "default"; 289 status = "okay"; 290 291 pca9544_i2c6: i2c-mux@77 { 292 compatible = "nxp,pca9544"; 293 reg = <0x77>; 294 #address-cells = <1>; 295 #size-cells = <0>; 296 297 i2c@0 { 298 reg = <0>; 299 #address-cells = <1>; 300 #size-cells = <0>; 301 }; 302 303 i2c@1 { 304 reg = <1>; 305 #address-cells = <1>; 306 #size-cells = <0>; 307 308 pcal6416_i2c6_u50: gpio@21 { 309 compatible = "nxp,pcal6416"; 310 reg = <0x21>; 311 #gpio-cells = <2>; 312 gpio-controller; 313 }; 314 }; 315 316 i2c@2 { 317 reg = <2>; 318 #address-cells = <1>; 319 #size-cells = <0>; 320 321 pcal6408_i2c6_u170: gpio@20 { 322 compatible = "nxp,pcal6408"; 323 reg = <0x20>; 324 #interrupt-cells = <2>; 325 interrupt-controller; 326 interrupt-parent = <&gpio4>; 327 interrupts = <3 IRQ_TYPE_LEVEL_LOW>; 328 #gpio-cells = <2>; 329 gpio-controller; 330 pinctrl-0 = <&pinctrl_ioexpander_int2>; 331 pinctrl-names = "default"; 332 }; 333 }; 334 335 i2c@3 { 336 reg = <3>; 337 #address-cells = <1>; 338 #size-cells = <0>; 339 340 pcal6416_i2c6_u44: gpio@20 { 341 compatible = "nxp,pcal6416"; 342 reg = <0x20>; 343 #gpio-cells = <2>; 344 gpio-controller; 345 346 /* pdm selection */ 347 can-pdm-sel-hog { 348 gpios = <12 GPIO_ACTIVE_HIGH>; 349 gpio-hog; 350 output-low; 351 }; 352 353 sai3-sel-hog { 354 gpios = <11 GPIO_ACTIVE_HIGH>; 355 gpio-hog; 356 output-high; 357 }; 358 359 /* eMMC IOMUX selection */ 360 sd1-sel-hog { 361 gpios = <0 GPIO_ACTIVE_HIGH>; 362 gpio-hog; 363 output-high; 364 }; 365 366 /* SD card IOMUX selection */ 367 sd2-sel-hog { 368 gpios = <1 GPIO_ACTIVE_HIGH>; 369 gpio-hog; 370 output-high; 371 }; 372 }; 373 }; 374 }; 375}; 376 377&lpuart1 { 378 pinctrl-0 = <&pinctrl_uart1>; 379 pinctrl-names = "default"; 380 status = "okay"; 381}; 382 383&micfil { 384 assigned-clocks = <&scmi_clk IMX94_CLK_AUDIOPLL1_VCO>, 385 <&scmi_clk IMX94_CLK_AUDIOPLL2_VCO>, 386 <&scmi_clk IMX94_CLK_AUDIOPLL1>, 387 <&scmi_clk IMX94_CLK_AUDIOPLL2>, 388 <&scmi_clk IMX94_CLK_PDM>; 389 assigned-clock-parents = <0>, <0>, <0>, <0>, 390 <&scmi_clk IMX94_CLK_AUDIOPLL1>; 391 assigned-clock-rates = <3932160000>, 392 <3612672000>, <393216000>, 393 <361267200>, <49152000>; 394 pinctrl-0 = <&pinctrl_pdm>; 395 pinctrl-names = "default"; 396 status = "okay"; 397}; 398 399&sai1 { 400 assigned-clocks = <&scmi_clk IMX94_CLK_AUDIOPLL1_VCO>, 401 <&scmi_clk IMX94_CLK_AUDIOPLL2_VCO>, 402 <&scmi_clk IMX94_CLK_AUDIOPLL1>, 403 <&scmi_clk IMX94_CLK_AUDIOPLL2>, 404 <&scmi_clk IMX94_CLK_SAI1>; 405 assigned-clock-parents = <0>, <0>, <0>, <0>, 406 <&scmi_clk IMX94_CLK_AUDIOPLL1>; 407 assigned-clock-rates = <3932160000>, 408 <3612672000>, <393216000>, 409 <361267200>, <12288000>; 410 pinctrl-0 = <&pinctrl_sai1>; 411 pinctrl-names = "default"; 412 fsl,sai-mclk-direction-output; 413 status = "okay"; 414}; 415 416&sai3 { 417 assigned-clocks = <&scmi_clk IMX94_CLK_AUDIOPLL1_VCO>, 418 <&scmi_clk IMX94_CLK_AUDIOPLL2_VCO>, 419 <&scmi_clk IMX94_CLK_AUDIOPLL1>, 420 <&scmi_clk IMX94_CLK_AUDIOPLL2>, 421 <&scmi_clk IMX94_CLK_SAI3>; 422 assigned-clock-parents = <0>, <0>, <0>, <0>, 423 <&scmi_clk IMX94_CLK_AUDIOPLL1>; 424 assigned-clock-rates = <3932160000>, 425 <3612672000>, <393216000>, 426 <361267200>, <12288000>; 427 pinctrl-0 = <&pinctrl_sai3>; 428 pinctrl-names = "default"; 429 fsl,sai-mclk-direction-output; 430 status = "okay"; 431}; 432 433&scmi_iomuxc { 434 435 pinctrl_ioexpander_int2: ioexpanderint2grp { 436 fsl,pins = < 437 IMX94_PAD_CCM_CLKO4__GPIO4_IO3 0x31e 438 >; 439 }; 440 441 pinctrl_ioexpander_int: ioexpanderintgrp { 442 fsl,pins = < 443 IMX94_PAD_GPIO_IO45__GPIO3_IO13 0x31e 444 >; 445 }; 446 447 pinctrl_lpi2c3: lpi2c3grp { 448 fsl,pins = < 449 IMX94_PAD_GPIO_IO16__LPI2C3_SDA 0x40000b9e 450 IMX94_PAD_GPIO_IO17__LPI2C3_SCL 0x40000b9e 451 >; 452 }; 453 454 pinctrl_lpi2c4: lpi2c4grp { 455 fsl,pins = < 456 IMX94_PAD_GPIO_IO18__LPI2C4_SDA 0x40000b9e 457 IMX94_PAD_GPIO_IO19__LPI2C4_SCL 0x40000b9e 458 >; 459 }; 460 461 pinctrl_lpi2c6: lpi2c6grp { 462 fsl,pins = < 463 IMX94_PAD_GPIO_IO29__LPI2C6_SDA 0x40000b9e 464 IMX94_PAD_GPIO_IO28__LPI2C6_SCL 0x40000b9e 465 >; 466 }; 467 468 pinctrl_pdm: pdmgrp { 469 fsl,pins = < 470 IMX94_PAD_PDM_CLK__PDM_CLK 0x31e 471 IMX94_PAD_PDM_BIT_STREAM0__PDM_BIT_STREAM0 0x31e 472 IMX94_PAD_PDM_BIT_STREAM1__PDM_BIT_STREAM1 0x31e 473 >; 474 }; 475 476 pinctrl_sai1: sai1grp { 477 fsl,pins = < 478 IMX94_PAD_SAI1_TXFS__SAI1_TX_SYNC 0x31e 479 IMX94_PAD_SAI1_TXC__SAI1_TX_BCLK 0x31e 480 IMX94_PAD_SAI1_TXD0__SAI1_TX_DATA0 0x31e 481 IMX94_PAD_SAI1_RXD0__SAI1_RX_DATA0 0x31e 482 IMX94_PAD_I2C2_SDA__SAI1_MCLK 0x31e 483 >; 484 }; 485 486 pinctrl_sai3: sai3grp { 487 fsl,pins = < 488 IMX94_PAD_GPIO_IO42__SAI3_TX_BCLK 0x31e 489 IMX94_PAD_GPIO_IO56__SAI3_TX_SYNC 0x31e 490 IMX94_PAD_GPIO_IO46__SAI3_RX_DATA0 0x31e 491 IMX94_PAD_GPIO_IO47__SAI3_TX_DATA0 0x31e 492 >; 493 }; 494 495 pinctrl_uart1: uart1grp { 496 fsl,pins = < 497 IMX94_PAD_UART1_TXD__LPUART1_TX 0x31e 498 IMX94_PAD_UART1_RXD__LPUART1_RX 0x31e 499 >; 500 }; 501 502 pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp { 503 fsl,pins = < 504 IMX94_PAD_SD1_CLK__USDHC1_CLK 0x158e 505 IMX94_PAD_SD1_CMD__USDHC1_CMD 0x138e 506 IMX94_PAD_SD1_DATA0__USDHC1_DATA0 0x138e 507 IMX94_PAD_SD1_DATA1__USDHC1_DATA1 0x138e 508 IMX94_PAD_SD1_DATA2__USDHC1_DATA2 0x138e 509 IMX94_PAD_SD1_DATA3__USDHC1_DATA3 0x138e 510 IMX94_PAD_SD1_DATA4__USDHC1_DATA4 0x138e 511 IMX94_PAD_SD1_DATA5__USDHC1_DATA5 0x138e 512 IMX94_PAD_SD1_DATA6__USDHC1_DATA6 0x138e 513 IMX94_PAD_SD1_DATA7__USDHC1_DATA7 0x138e 514 IMX94_PAD_SD1_STROBE__USDHC1_STROBE 0x158e 515 >; 516 }; 517 518 pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp { 519 fsl,pins = < 520 IMX94_PAD_SD1_CLK__USDHC1_CLK 0x15fe 521 IMX94_PAD_SD1_CMD__USDHC1_CMD 0x13fe 522 IMX94_PAD_SD1_DATA0__USDHC1_DATA0 0x13fe 523 IMX94_PAD_SD1_DATA1__USDHC1_DATA1 0x13fe 524 IMX94_PAD_SD1_DATA2__USDHC1_DATA2 0x13fe 525 IMX94_PAD_SD1_DATA3__USDHC1_DATA3 0x13fe 526 IMX94_PAD_SD1_DATA4__USDHC1_DATA4 0x13fe 527 IMX94_PAD_SD1_DATA5__USDHC1_DATA5 0x13fe 528 IMX94_PAD_SD1_DATA6__USDHC1_DATA6 0x13fe 529 IMX94_PAD_SD1_DATA7__USDHC1_DATA7 0x13fe 530 IMX94_PAD_SD1_STROBE__USDHC1_STROBE 0x15fe 531 >; 532 }; 533 534 pinctrl_usdhc1: usdhc1grp { 535 fsl,pins = < 536 IMX94_PAD_SD1_CLK__USDHC1_CLK 0x158e 537 IMX94_PAD_SD1_CMD__USDHC1_CMD 0x138e 538 IMX94_PAD_SD1_DATA0__USDHC1_DATA0 0x138e 539 IMX94_PAD_SD1_DATA1__USDHC1_DATA1 0x138e 540 IMX94_PAD_SD1_DATA2__USDHC1_DATA2 0x138e 541 IMX94_PAD_SD1_DATA3__USDHC1_DATA3 0x138e 542 IMX94_PAD_SD1_DATA4__USDHC1_DATA4 0x138e 543 IMX94_PAD_SD1_DATA5__USDHC1_DATA5 0x138e 544 IMX94_PAD_SD1_DATA6__USDHC1_DATA6 0x138e 545 IMX94_PAD_SD1_DATA7__USDHC1_DATA7 0x138e 546 IMX94_PAD_SD1_STROBE__USDHC1_STROBE 0x158e 547 >; 548 }; 549 550 pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp { 551 fsl,pins = < 552 IMX94_PAD_SD2_CLK__USDHC2_CLK 0x158e 553 IMX94_PAD_SD2_CMD__USDHC2_CMD 0x138e 554 IMX94_PAD_SD2_DATA0__USDHC2_DATA0 0x138e 555 IMX94_PAD_SD2_DATA1__USDHC2_DATA1 0x138e 556 IMX94_PAD_SD2_DATA2__USDHC2_DATA2 0x138e 557 IMX94_PAD_SD2_DATA3__USDHC2_DATA3 0x138e 558 IMX94_PAD_SD2_VSELECT__USDHC2_VSELECT 0x51e 559 >; 560 }; 561 562 pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp { 563 fsl,pins = < 564 IMX94_PAD_SD2_CLK__USDHC2_CLK 0x15fe 565 IMX94_PAD_SD2_CMD__USDHC2_CMD 0x13fe 566 IMX94_PAD_SD2_DATA0__USDHC2_DATA0 0x13fe 567 IMX94_PAD_SD2_DATA1__USDHC2_DATA1 0x13fe 568 IMX94_PAD_SD2_DATA2__USDHC2_DATA2 0x13fe 569 IMX94_PAD_SD2_DATA3__USDHC2_DATA3 0x13fe 570 IMX94_PAD_SD2_VSELECT__USDHC2_VSELECT 0x51e 571 >; 572 }; 573 574 pinctrl_usdhc2_gpio: usdhc2gpiogrp { 575 fsl,pins = < 576 IMX94_PAD_SD2_CD_B__GPIO4_IO20 0x31e 577 >; 578 }; 579 580 pinctrl_usdhc2: usdhc2grp { 581 fsl,pins = < 582 IMX94_PAD_SD2_CLK__USDHC2_CLK 0x158e 583 IMX94_PAD_SD2_CMD__USDHC2_CMD 0x138e 584 IMX94_PAD_SD2_DATA0__USDHC2_DATA0 0x138e 585 IMX94_PAD_SD2_DATA1__USDHC2_DATA1 0x138e 586 IMX94_PAD_SD2_DATA2__USDHC2_DATA2 0x138e 587 IMX94_PAD_SD2_DATA3__USDHC2_DATA3 0x138e 588 IMX94_PAD_SD2_VSELECT__USDHC2_VSELECT 0x51e 589 >; 590 }; 591 592 pinctrl_reg_usdhc2_vmmc: usdhc2regvmmcgrp { 593 fsl,pins = < 594 IMX94_PAD_SD2_RESET_B__GPIO4_IO27 0x31e 595 >; 596 }; 597}; 598 599&usdhc1 { 600 pinctrl-0 = <&pinctrl_usdhc1>; 601 pinctrl-1 = <&pinctrl_usdhc1_100mhz>; 602 pinctrl-2 = <&pinctrl_usdhc1_200mhz>; 603 pinctrl-names = "default", "state_100mhz", "state_200mhz"; 604 bus-width = <8>; 605 non-removable; 606 no-sdio; 607 no-sd; 608 status = "okay"; 609}; 610 611&usdhc2 { 612 pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>; 613 pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>; 614 pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>; 615 pinctrl-names = "default", "state_100mhz", "state_200mhz"; 616 bus-width = <4>; 617 no-mmc; 618 no-sdio; 619 cd-gpios = <&gpio4 20 GPIO_ACTIVE_LOW>; 620 vmmc-supply = <®_usdhc2_vmmc>; 621 status = "okay"; 622}; 623 624&wdog3 { 625 fsl,ext-reset-output; 626 status = "okay"; 627}; 628