1// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2/* 3 * Copyright 2025 GOcontroll B.V. 4 * Author: Maud Spierings <maudspierings@gocontroll.com> 5 */ 6 7/dts-v1/; 8 9#include "imx8mp-tx8p-ml81.dtsi" 10 11/ { 12 compatible = "gocontroll,moduline-display", "fsl,imx8mp"; 13 chassis-type = "embedded"; 14 hardware = "Moduline Display V1.06"; 15 model = "GOcontroll Moduline Display baseboard"; 16 17 aliases { 18 can0 = &flexcan1; 19 can1 = &flexcan2; 20 ethernet0 = &eqos; 21 ethernet1 = &fec; 22 mmc0 = &usdhc3; 23 mmc1 = &usdhc2; 24 rtc0 = &rtc_pcf; /* i2c rtc is the main rtc */ 25 rtc1 = &snvs_rtc; 26 spi0 = &ecspi2; /* spidev number compatibility */ 27 spi1 = &ecspi1; /* spidev number compatibility */ 28 }; 29 30 chosen { 31 stdout-path = "serial0:115200n8"; 32 }; 33 34 external-sensor-supply { 35 compatible = "regulator-output"; 36 vout-supply = <®_5v0_sensor>; 37 }; 38 39 reg_1v8_per: regulator-1v8-per { 40 compatible = "regulator-fixed"; 41 pinctrl-0 = <&pinctrl_reg_1v8>; 42 pinctrl-names = "default"; 43 power-supply = <®_3v3_per>; 44 regulator-max-microvolt = <1800000>; 45 regulator-min-microvolt = <1800000>; 46 regulator-name = "1v8-per"; 47 gpio = <&gpio3 25 GPIO_ACTIVE_HIGH>; 48 enable-active-high; 49 }; 50 51 reg_3v3_per: regulator-3v3-per { 52 compatible = "regulator-fixed"; 53 power-supply = <®_6v4>; 54 regulator-always-on; 55 regulator-max-microvolt = <3300000>; 56 regulator-min-microvolt = <3300000>; 57 regulator-name = "3v3-per"; 58 }; 59 60 reg_5v0: regulator-5v0 { 61 compatible = "regulator-fixed"; 62 power-supply = <®_6v4>; 63 regulator-always-on; 64 regulator-max-microvolt = <5000000>; 65 regulator-min-microvolt = <5000000>; 66 regulator-name = "5v0"; 67 }; 68 69 reg_5v0_sensor: regulator-5v0-sensor { 70 compatible = "regulator-fixed"; 71 pinctrl-0 = <&pinctrl_reg_5v0_sensor>; 72 pinctrl-names = "default"; 73 regulator-max-microvolt = <5000000>; 74 regulator-min-microvolt = <5000000>; 75 regulator-name = "5v0-supply-external-sensor"; 76 gpio = <&gpio4 9 GPIO_ACTIVE_HIGH>; 77 enable-active-high; 78 }; 79 80 reg_6v4: regulator-6v4 { 81 compatible = "regulator-fixed"; 82 regulator-always-on; 83 regulator-max-microvolt = <6400000>; 84 regulator-min-microvolt = <6400000>; 85 regulator-name = "6v4"; 86 }; 87 88 reg_can1_stby: regulator-can1-stby { 89 compatible = "regulator-fixed"; 90 pinctrl-0 = <&pinctrl_flexcan1_reg>; 91 pinctrl-names = "default"; 92 regulator-max-microvolt = <3300000>; 93 regulator-min-microvolt = <3300000>; 94 regulator-name = "can1-stby"; 95 gpio = <&gpio4 3 GPIO_ACTIVE_LOW>; 96 }; 97 98 reg_can2_stby: regulator-can2-stby { 99 compatible = "regulator-fixed"; 100 pinctrl-0 = <&pinctrl_flexcan2_reg>; 101 pinctrl-names = "default"; 102 regulator-max-microvolt = <3300000>; 103 regulator-min-microvolt = <3300000>; 104 regulator-name = "can2-stby"; 105 gpio = <&gpio5 9 GPIO_ACTIVE_LOW>; 106 }; 107 108 sound { 109 compatible = "simple-audio-card"; 110 simple-audio-card,bitclock-master = <&cpudai>; 111 simple-audio-card,format = "i2s"; 112 simple-audio-card,frame-master = <&cpudai>; 113 simple-audio-card,name = "tas2505-audio"; 114 simple-audio-card,routing = "Speaker", "DAC"; 115 simple-audio-card,widgets = "Speaker", "Speaker External"; 116 117 simple-audio-card,codec { 118 sound-dai = <&tas2505>; 119 }; 120 121 cpudai: simple-audio-card,cpu { 122 sound-dai = <&sai6>; 123 }; 124 }; 125 126 wifi_powerseq: wifi-powerseq { 127 compatible = "mmc-pwrseq-simple"; 128 pinctrl-0 = <&pinctrl_wl_reg>; 129 pinctrl-names = "default"; 130 post-power-on-delay-ms = <100>; 131 power-off-delay-us = <500000>; 132 reset-gpios = <&gpio2 19 GPIO_ACTIVE_LOW>; 133 }; 134}; 135 136&ecspi1 { 137 cs-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>, 138 <&gpio1 11 GPIO_ACTIVE_LOW>, 139 <&gpio1 10 GPIO_ACTIVE_LOW>; 140 pinctrl-0 = <&pinctrl_ecspi1>; 141 pinctrl-names = "default"; 142 status = "okay"; 143 144 connector@0 { 145 compatible = "gocontroll,moduline-module-slot"; 146 reg = <0>; 147 interrupt-parent = <&gpio4>; 148 interrupts = <5 IRQ_TYPE_EDGE_FALLING>; 149 i2c-bus = <&i2c2>; 150 reset-gpios = <&gpio5 10 GPIO_ACTIVE_LOW>; 151 slot-number = <1>; 152 spi-max-frequency = <54000000>; 153 sync-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>; 154 vddhpp-supply = <®_6v4>; 155 vddp-supply = <®_5v0>; 156 vdd-supply = <®_3v3_per>; 157 }; 158 159 connector@1 { 160 compatible = "gocontroll,moduline-module-slot"; 161 reg = <1>; 162 interrupt-parent = <&gpio1>; 163 interrupts = <0 IRQ_TYPE_EDGE_FALLING>; 164 i2c-bus = <&i2c2>; 165 reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; 166 slot-number = <2>; 167 spi-max-frequency = <54000000>; 168 sync-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>; 169 vddhpp-supply = <®_6v4>; 170 vddp-supply = <®_5v0>; 171 vdd-supply = <®_3v3_per>; 172 }; 173 174 adc@2 { 175 compatible = "microchip,mcp3004"; 176 reg = <2>; 177 spi-max-frequency = <2300000>; 178 vref-supply = <®_vdd_3v3>; 179 }; 180}; 181 182&flexcan1 { 183 pinctrl-0 = <&pinctrl_flexcan1>; 184 pinctrl-names = "default"; 185 xceiver-supply = <®_can1_stby>; 186 status = "okay"; 187}; 188 189&flexcan2 { 190 pinctrl-0 = <&pinctrl_flexcan2>; 191 pinctrl-names = "default"; 192 xceiver-supply = <®_can2_stby>; 193 status = "okay"; 194}; 195 196&i2c2 { 197 clock-frequency = <400000>; 198 pinctrl-0 = <&pinctrl_i2c2>; 199 pinctrl-1 = <&pinctrl_i2c2_gpio>; 200 pinctrl-names = "default", "gpio"; 201 scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; 202 sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; 203 status = "okay"; 204}; 205 206&i2c4 { 207 clock-frequency = <400000>; 208 pinctrl-0 = <&pinctrl_i2c4>; 209 pinctrl-1 = <&pinctrl_i2c4_gpio>; 210 pinctrl-names = "default", "gpio"; 211 scl-gpios = <&gpio5 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; 212 sda-gpios = <&gpio5 13 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; 213 status = "okay"; 214 215 tas2505: audio-codec@18 { 216 compatible = "ti,tas2505"; 217 reg = <0x18>; 218 clocks = <&clk IMX8MP_CLK_AUDIOMIX_SAI6_MCLK1>; 219 clock-names = "mclk"; 220 #sound-dai-cells = <0>; 221 aic32x4-gpio-func = <0xff 0xff 0xff 0xff 0xff>; 222 av-supply = <®_1v8_per>; 223 dv-supply = <®_1v8_per>; 224 iov-supply = <®_vdd_3v3>; 225 pinctrl-0 = <&pinctrl_tas_reset>; 226 pinctrl-names = "default"; 227 reset-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>; 228 }; 229 230 rtc_pcf: rtc@51 { 231 compatible = "nxp,pcf85063a"; 232 reg = <0x51>; 233 quartz-load-femtofarads = <7000>; 234 235 clock { 236 compatible = "fixed-clock"; 237 #clock-cells = <0>; 238 clock-frequency = <32768>; 239 }; 240 }; 241}; 242 243&iomuxc { 244 pinctrl_bt: btgrp { 245 fsl,pins = < 246 MX8MP_IOMUXC_GPIO1_IO14__GPIO1_IO14 247 MX8MP_DSE_X1 248 MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12 249 (MX8MP_PULL_UP | MX8MP_PULL_ENABLE | MX8MP_HYS_SCHMITT) 250 MX8MP_IOMUXC_GPIO1_IO15__GPIO1_IO15 251 MX8MP_DSE_X1 252 >; 253 }; 254 255 pinctrl_ecspi1: ecspi1grp { 256 fsl,pins = < 257 MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI 258 MX8MP_DSE_X4 259 MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO 260 (MX8MP_DSE_X4 | MX8MP_HYS_SCHMITT) 261 MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK 262 MX8MP_DSE_X4 263 MX8MP_IOMUXC_SD2_CD_B__GPIO2_IO12 264 MX8MP_DSE_X1 265 MX8MP_IOMUXC_GPIO1_IO11__GPIO1_IO11 266 MX8MP_DSE_X1 267 MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 268 MX8MP_DSE_X1 269 >; 270 }; 271 272 pinctrl_flexcan1: flexcan1grp { 273 fsl,pins = < 274 MX8MP_IOMUXC_SPDIF_RX__CAN1_RX 275 (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 276 MX8MP_IOMUXC_SPDIF_TX__CAN1_TX 277 (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 278 >; 279 }; 280 281 pinctrl_flexcan1_reg: flexcan1reggrp { 282 fsl,pins = < 283 MX8MP_IOMUXC_SAI1_RXD1__GPIO4_IO03 284 (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 285 >; 286 }; 287 288 pinctrl_flexcan2: flexcan2grp { 289 fsl,pins = < 290 MX8MP_IOMUXC_UART3_TXD__CAN2_RX 291 (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 292 MX8MP_IOMUXC_UART3_RXD__CAN2_TX 293 (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 294 >; 295 }; 296 297 pinctrl_flexcan2_reg: flexcan2reggrp { 298 fsl,pins = < 299 MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09 300 (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 301 >; 302 }; 303 304 pinctrl_i2c2: i2c2grp { 305 fsl,pins = < 306 MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL 307 MX8MP_I2C_DEFAULT 308 MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA 309 MX8MP_I2C_DEFAULT 310 >; 311 }; 312 313 pinctrl_i2c2_gpio: i2c2-gpiogrp { 314 fsl,pins = < 315 MX8MP_IOMUXC_I2C2_SCL__GPIO5_IO16 316 MX8MP_I2C_DEFAULT 317 MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17 318 MX8MP_I2C_DEFAULT 319 >; 320 }; 321 322 pinctrl_i2c4: i2c4grp { 323 fsl,pins = < 324 MX8MP_IOMUXC_ECSPI2_MISO__I2C4_SCL 325 MX8MP_I2C_DEFAULT 326 MX8MP_IOMUXC_ECSPI2_SS0__I2C4_SDA 327 MX8MP_I2C_DEFAULT 328 >; 329 }; 330 331 pinctrl_i2c4_gpio: i2c4-gpiogrp { 332 fsl,pins = < 333 MX8MP_IOMUXC_ECSPI2_MISO__GPIO5_IO12 334 MX8MP_I2C_DEFAULT 335 MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13 336 MX8MP_I2C_DEFAULT 337 >; 338 }; 339 340 pinctrl_usdhc2: pinctrlusdhc2grp { 341 fsl,pins = < 342 MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK 343 (MX8MP_DSE_X2 | MX8MP_FSEL_FAST | MX8MP_PULL_ENABLE) 344 MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD 345 (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT) 346 MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0 347 (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT) 348 MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1 349 (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT) 350 MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2 351 (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT) 352 MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3 353 (MX8MP_DSE_X2 | MX8MP_USDHC_DATA_DEFAULT) 354 >; 355 }; 356 357 pinctrl_reg_1v8: reg-1v8-grp { 358 fsl,pins = < 359 MX8MP_IOMUXC_SAI5_MCLK__GPIO3_IO25 360 MX8MP_DSE_X1 361 >; 362 }; 363 364 pinctrl_reg_5v0_sensor: reg-5v0-sensorgrp { 365 fsl,pins = < 366 MX8MP_IOMUXC_SAI1_RXD7__GPIO4_IO09 367 MX8MP_DSE_X1 368 >; 369 }; 370 371 pinctrl_sai6: sai6grp { 372 fsl,pins = < 373 MX8MP_IOMUXC_SAI1_TXD6__AUDIOMIX_SAI6_TX_SYNC 374 (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT) 375 MX8MP_IOMUXC_SAI1_RXD4__AUDIOMIX_SAI6_TX_BCLK 376 (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT) 377 MX8MP_IOMUXC_SAI1_TXD5__AUDIOMIX_SAI6_TX_DATA00 378 (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT) 379 MX8MP_IOMUXC_SAI1_TXD7__AUDIOMIX_SAI6_MCLK 380 (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT) 381 MX8MP_IOMUXC_SAI1_RXD5__AUDIOMIX_SAI6_RX_DATA00 382 (MX8MP_DSE_X6 | MX8MP_FSEL_FAST | MX8MP_HYS_SCHMITT) 383 >; 384 }; 385 386 pinctrl_tas_reset: tasresetgrp { 387 fsl,pins = < 388 MX8MP_IOMUXC_SAI5_RXD3__GPIO3_IO24 389 MX8MP_DSE_X1 390 >; 391 }; 392 393 pinctrl_uart1: uart1grp { 394 fsl,pins = < 395 MX8MP_IOMUXC_UART1_RXD__UART1_DCE_RX 396 (MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 397 MX8MP_IOMUXC_UART1_TXD__UART1_DCE_TX 398 (MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 399 >; 400 }; 401 402 pinctrl_uart2: uart2grp { 403 fsl,pins = < 404 MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX 405 (MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 406 MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX 407 (MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 408 MX8MP_IOMUXC_SAI3_RXD__UART2_DCE_RTS 409 (MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 410 MX8MP_IOMUXC_SAI3_RXC__UART2_DCE_CTS 411 (MX8MP_PULL_UP | MX8MP_PULL_ENABLE) 412 >; 413 }; 414 415 pinctrl_wdog: wdoggrp { 416 fsl,pins = < 417 MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B 418 (MX8MP_DSE_X6 | MX8MP_HYS_SCHMITT) 419 >; 420 }; 421 422 pinctrl_wl_int: wlintgrp { 423 fsl,pins = < 424 MX8MP_IOMUXC_GPIO1_IO13__GPIO1_IO13 425 (MX8MP_PULL_UP | MX8MP_HYS_SCHMITT | MX8MP_PULL_ENABLE) 426 >; 427 }; 428 429 pinctrl_wl_reg: wlreggrp { 430 fsl,pins = < 431 MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19 432 MX8MP_DSE_X1 433 >; 434 }; 435}; 436 437&sai6 { 438 assigned-clocks = <&clk IMX8MP_CLK_SAI6>; 439 assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>; 440 assigned-clock-rates = <12288000>; 441 pinctrl-0 = <&pinctrl_sai6>; 442 pinctrl-names = "default"; 443 fsl,sai-mclk-direction-output; 444 status = "okay"; 445}; 446 447&uart1 { 448 pinctrl-0 = <&pinctrl_uart1>; 449 pinctrl-names = "default"; 450 status = "okay"; 451}; 452 453&uart2 { 454 pinctrl-0 = <&pinctrl_uart2>; 455 pinctrl-names = "default"; 456 uart-has-rtscts; 457 status = "okay"; 458 459 bluetooth { 460 compatible = "infineon,cyw43439-bt", "brcm,bcm4329-bt"; 461 interrupt-parent = <&gpio1>; 462 interrupts = <12 IRQ_TYPE_EDGE_FALLING>; 463 interrupt-names = "host-wakeup"; 464 device-wakeup-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>; 465 max-speed = <921600>; 466 pinctrl-0 = <&pinctrl_bt>; 467 pinctrl-names = "default"; 468 shutdown-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>; 469 vbat-supply = <®_3v3_per>; 470 vddio-supply = <®_3v3_per>; 471 }; 472}; 473 474&usb3_0 { 475 status = "okay"; 476}; 477 478&usb3_1 { 479 status = "okay"; 480}; 481 482&usb3_phy0 { 483 status = "okay"; 484}; 485 486&usb3_phy1 { 487 status = "okay"; 488}; 489 490&usb_dwc3_0 { 491 dr_mode = "peripheral"; 492}; 493 494&usdhc2 { 495 #address-cells = <1>; 496 #size-cells = <0>; 497 assigned-clocks = <&clk IMX8MP_CLK_USDHC2>; 498 assigned-clock-rates = <50000000>; 499 cap-power-off-card; 500 keep-power-in-suspend; 501 max-frequency = <50000000>; 502 mmc-pwrseq = <&wifi_powerseq>; 503 non-removable; 504 pinctrl-0 = <&pinctrl_usdhc2>; 505 pinctrl-names = "default"; 506 sd-uhs-sdr25; 507 vmmc-supply = <®_3v3_per>; 508 status = "okay"; 509 510 wifi@1 { 511 compatible = "infineon,cyw43439-fmac", "brcm,bcm4329-fmac"; 512 reg = <1>; 513 interrupt-parent = <&gpio1>; 514 interrupts = <13 IRQ_TYPE_LEVEL_LOW>; 515 interrupt-names = "host-wake"; 516 pinctrl-0 = <&pinctrl_wl_int>; 517 pinctrl-names = "default"; 518 brcm,board-type = "GOcontroll,moduline"; 519 }; 520}; 521 522&wdog1 { 523 pinctrl-0 = <&pinctrl_wdog>; 524 pinctrl-names = "default"; 525 fsl,ext-reset-output; 526 status = "okay"; 527}; 528