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