1// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause) 2/* 3 * Copyright (C) 2020 STMicroelectronics - All Rights Reserved 4 * Copyright (C) 2021 Rouven Czerwinski, Pengutronix 5 * Copyright (C) 2023 Leonard Göhrs, Pengutronix 6 */ 7 8#include "stm32mp15xc.dtsi" 9#include "stm32mp15xx-osd32.dtsi" 10#include "stm32mp15xxac-pinctrl.dtsi" 11 12#include <dt-bindings/gpio/gpio.h> 13#include <dt-bindings/input/input.h> 14#include <dt-bindings/leds/common.h> 15#include <dt-bindings/pwm/pwm.h> 16 17/ { 18 aliases { 19 ethernet0 = ðernet0; 20 ethernet1 = &port_uplink; 21 ethernet2 = &port_dut; 22 mmc1 = &sdmmc2; 23 serial0 = &uart4; 24 serial1 = &usart3; 25 }; 26 27 chosen { 28 stdout-path = &uart4; 29 }; 30 31 led-controller-0 { 32 compatible = "gpio-leds"; 33 34 led-0 { 35 label = "tac:green:user1"; 36 gpios = <&gpiof 10 GPIO_ACTIVE_HIGH>; 37 linux,default-trigger = "heartbeat"; 38 }; 39 40 led-1 { 41 label = "tac:green:user2"; 42 gpios = <&gpiog 7 GPIO_ACTIVE_HIGH>; 43 }; 44 45 led-2 { 46 label = "tac:green:statusdut"; 47 gpios = <&gpioa 13 GPIO_ACTIVE_LOW>; 48 }; 49 50 /* led-3 and led-4 are internally connected antiparallel to one 51 * another inside the ethernet jack like this: 52 * GPIOA14 ---+---|led-3|>--+--- GPIOD15 53 * +--<|led-4|---+ 54 * E.g. only one of the LEDs can be illuminated at a time while 55 * the other output must be driven low. 56 * This should likely be implemented using a multi color LED 57 * driver for antiparallel LEDs. 58 */ 59 led-3 { 60 label = "tac:green:statuslab"; 61 gpios = <&gpioa 14 GPIO_ACTIVE_HIGH>; 62 }; 63 64 led-4 { 65 label = "tac:orange:statuslab"; 66 gpios = <&gpiod 15 GPIO_ACTIVE_HIGH>; 67 }; 68 }; 69 70 gpio-keys { 71 compatible = "gpio-keys"; 72 73 button-lower { 74 label = "USER_BTN2"; 75 linux,code = <KEY_ESC>; 76 gpios = <&gpioe 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; 77 }; 78 79 button-upper { 80 label = "USER_BTN"; 81 linux,code = <KEY_HOME>; 82 gpios = <&gpioi 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; 83 }; 84 }; 85 86 /* supplied by either barrel connector or PoE */ 87 reg_12v: regulator-12v { 88 compatible = "regulator-fixed"; 89 regulator-name = "12V"; 90 regulator-min-microvolt = <12000000>; 91 regulator-max-microvolt = <12000000>; 92 regulator-always-on; 93 }; 94 95 reg_5v: regulator-5v { 96 compatible = "regulator-fixed"; 97 regulator-name = "5V"; 98 regulator-min-microvolt = <5000000>; 99 regulator-max-microvolt = <5000000>; 100 regulator-always-on; 101 vin-supply = <®_12v>; 102 }; 103 104 reg_1v2: regulator-1v2 { 105 compatible = "regulator-fixed"; 106 regulator-name = "1V2"; 107 regulator-min-microvolt = <1200000>; 108 regulator-max-microvolt = <1200000>; 109 regulator-always-on; 110 vin-supply = <®_5v>; 111 }; 112 113 reg_pb_5v: regulator-pb-5v { 114 compatible = "regulator-fixed"; 115 regulator-name = "5V_POWERBOARD"; 116 regulator-min-microvolt = <5000000>; 117 regulator-max-microvolt = <5000000>; 118 regulator-always-on; 119 vin-supply = <®_5v>; 120 }; 121 122 reg_pb_3v3: regulator-pb-3v3 { 123 compatible = "regulator-fixed"; 124 regulator-name = "3V3_POWERBOARD"; 125 regulator-min-microvolt = <3300000>; 126 regulator-max-microvolt = <3300000>; 127 regulator-always-on; 128 vin-supply = <®_pb_5v>; 129 }; 130 131 output-iobus-12v { 132 compatible = "regulator-output"; 133 vout-supply = <®_iobus_12v>; 134 }; 135 136 output-vuart { 137 compatible = "regulator-output"; 138 vout-supply = <&v3v3_hdmi>; 139 }; 140}; 141 142baseboard_eeprom: &sip_eeprom { 143}; 144 145&adc { 146 pinctrl-names = "default"; 147 pinctrl-0 = <&adc1_ain_pins_a>; 148 vdd-supply = <&vdd>; 149 vdda-supply = <&vdda>; 150 vref-supply = <&vrefbuf>; 151 status = "okay"; 152 153 adc1: adc@0 { 154 st,adc-channels = <0 1 2 5 9 10 13 15>; 155 st,min-sample-time-nsecs = <5000>; 156 #address-cells = <1>; 157 #size-cells = <0>; 158 status = "okay"; 159 160 channel@0 { 161 reg = <0>; 162 label = "HOST_2_CURR_FB"; 163 }; 164 165 channel@1 { 166 reg = <1>; 167 label = "HOST_3_CURR_FB"; 168 }; 169 170 channel@2 { 171 reg = <2>; 172 label = "OUT_0_FB"; 173 }; 174 175 channel@5 { 176 reg = <5>; 177 label = "IOBUS_CURR_FB"; 178 }; 179 180 channel@9 { 181 reg = <9>; 182 label = "IOBUS_VOLT_FB"; 183 }; 184 185 channel@10 { 186 reg = <10>; 187 label = "OUT_1_FB"; 188 }; 189 190 channel@13 { 191 reg = <13>; 192 label = "HOST_CURR_FB"; 193 }; 194 195 channel@15 { 196 reg = <15>; 197 label = "HOST_1_CURR_FB"; 198 }; 199 }; 200 201 adc2: adc@100 { 202 st,adc-channels = <12>; 203 st,min-sample-time-nsecs = <500000>; 204 #address-cells = <1>; 205 #size-cells = <0>; 206 status = "okay"; 207 208 channel@12 { 209 reg = <12>; 210 label = "TEMP_INTERNAL"; 211 }; 212 }; 213}; 214 215&crc1 { 216 status = "okay"; 217}; 218 219&cryp1 { 220 status = "okay"; 221}; 222 223&dts { 224 status = "okay"; 225}; 226 227ðernet0 { 228 assigned-clocks = <&rcc ETHCK_K>, <&rcc PLL4_P>; 229 assigned-clock-parents = <&rcc PLL4_P>; 230 assigned-clock-rates = <125000000>; /* Clock PLL4 to 750Mhz in ATF */ 231 232 pinctrl-names = "default", "sleep"; 233 pinctrl-0 = <ðernet0_rgmii_pins_e>; 234 pinctrl-1 = <ðernet0_rgmii_sleep_pins_e>; 235 236 st,eth-clk-sel; 237 phy-mode = "rgmii-id"; 238 239 status = "okay"; 240 241 fixed-link { 242 speed = <1000>; 243 full-duplex; 244 }; 245}; 246 247ðernet0_rgmii_pins_e { 248 pins1 { 249 /* Reduce EMI emission by reducing RGMII drive strength */ 250 slew-rate = <1>; 251 }; 252}; 253 254&gpiob { 255 gpio-line-names = "", "", "", "", "", /* 0 */ 256 "", "USB_RESET", "", "", "", /* 5 */ 257 "", "", "", "", "", /* 10 */ 258 ""; /* 15 */ 259}; 260 261&gpiod { 262 gpio-line-names = "", "", "", "", "TP38", /* 0 */ 263 "TP39", "", "", "TP41", "TP42", /* 5 */ 264 "OLED_DC", "", "", "ETH_CS", "", /* 10 */ 265 "ETH_LAB_LEDRN"; /* 15 */ 266}; 267 268&gpioe { 269 gpio-line-names = "TP35", "", "", "", "CAN_1_120R", /* 0 */ 270 "", "", "USER_BTN2", "TP48", "UART_TX_EN", /* 5 */ 271 "UART_RX_EN", "TP24", "", "TP25", "TP26", /* 10 */ 272 "TP27"; /* 15 */ 273}; 274 275&gpiof { 276 gpio-line-names = "TP36", "TP37", "", "", "OLED_CS", /* 0 */ 277 "", "", "", "", "", /* 5 */ 278 "USER_LED1", "", "STACK_CS0", "", "", /* 10 */ 279 ""; /* 15 */ 280}; 281 282&gpiog { 283 gpio-line-names = "ETH_RESET", "", "", "", "", /* 0 */ 284 "IOBUS_FLT_FB", "", "USER_LED2", "ETH1_PPS_A", "CAN_0_120R", /* 5 */ 285 "TP49", "", "", "", "", /* 10 */ 286 ""; /* 15 */ 287}; 288 289&gpioh { 290 gpio-line-names = "", "", "OUT_1", "OUT_0", "OLED_RESET", /* 0 */ 291 "", "", "", "", "", /* 5 */ 292 "ETH1_PPS_B", "ETH_GPIO2", "", "IOBUS_PWR_EN", "", /* 10 */ 293 "TP33"; /* 15 */ 294}; 295 296&gpioi { 297 gpio-line-names = "TIM_RTS", "", "", "", "DEVICE_DATA_EN", /* 0 */ 298 "", "", "", "ETH_WOL", "TP43", /* 5 */ 299 "", "USER_BTN"; /* 10 */ 300}; 301 302&gpioz { 303 gpio-line-names = "HWID0", "HWID1", "HWID2", "HWID3", "", /* 0 */ 304 "", "HWID4", "HWID5"; /* 5 */ 305}; 306 307&hash1 { 308 status = "okay"; 309}; 310 311&i2c1 { 312 pinctrl-names = "default", "sleep"; 313 pinctrl-0 = <&i2c1_pins_b>; 314 pinctrl-1 = <&i2c1_sleep_pins_b>; 315 status = "okay"; 316 317 powerboard_eeprom: eeprom@50 { 318 compatible = "atmel,24c02"; 319 reg = <0x50>; 320 vcc-supply = <&v3v3>; 321 }; 322 323 temperature-sensor@48 { 324 compatible = "national,lm75a"; 325 reg = <0x48>; 326 status = "disabled"; 327 }; 328}; 329 330&i2c5 { 331 /delete-property/dmas; 332 /delete-property/dma-names; 333 334 pinctrl-names = "default", "sleep"; 335 pinctrl-0 = <&i2c5_pins_b>; 336 pinctrl-1 = <&i2c5_sleep_pins_b>; 337 338 status = "okay"; 339 340 usbhub: usbhub@2c { 341 compatible ="microchip,usb2514b"; 342 reg = <0x2c>; 343 vdd-supply = <&v3v3>; 344 reset-gpios = <&gpiob 6 GPIO_ACTIVE_LOW>; 345 }; 346}; 347 348&iwdg2 { 349 timeout-sec = <8>; 350 status = "okay"; 351}; 352 353&m_can1 { 354 pinctrl-names = "default", "sleep"; 355 pinctrl-0 = <&m_can1_pins_b>; 356 pinctrl-1 = <&m_can1_sleep_pins_b>; 357 status = "okay"; 358}; 359 360&m_can2 { 361 pinctrl-names = "default", "sleep"; 362 pinctrl-0 = <&m_can2_pins_a>; 363 pinctrl-1 = <&m_can2_sleep_pins_a>; 364 status = "okay"; 365}; 366 367&pmic { 368 regulators { 369 buck1-supply = <®_5v>; /* VIN */ 370 buck2-supply = <®_5v>; /* VIN */ 371 buck3-supply = <®_5v>; /* VIN */ 372 buck4-supply = <®_5v>; /* VIN */ 373 ldo2-supply = <®_5v>; /* PMIC_LDO25IN */ 374 ldo4-supply = <®_5v>; /* VIN */ 375 ldo5-supply = <®_5v>; /* PMIC_LDO25IN */ 376 vref_ddr-supply = <®_5v>; /* VIN */ 377 boost-supply = <®_5v>; /* PMIC_BSTIN */ 378 pwr_sw2-supply = <&bst_out>; /* PMIC_SWIN */ 379 }; 380}; 381 382&pwr_regulators { 383 vdd-supply = <&vdd>; 384 vdd_3v3_usbfs-supply = <&vdd_usb>; 385}; 386 387&rtc { 388 status = "okay"; 389}; 390 391&sdmmc2 { 392 pinctrl-names = "default", "opendrain", "sleep"; 393 pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>; 394 pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_b>; 395 pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_b>; 396 vmmc-supply = <&v3v3>; 397 398 bus-width = <8>; 399 mmc-ddr-3_3v; 400 no-1-8-v; 401 non-removable; 402 no-sd; 403 no-sdio; 404 st,neg-edge; 405 406 status = "okay"; 407}; 408 409&spi2 { 410 pinctrl-names = "default"; 411 pinctrl-0 = <&spi2_pins_c>; 412 cs-gpios = <&gpiof 12 GPIO_ACTIVE_LOW>; 413 status = "okay"; 414}; 415 416&spi4 { 417 pinctrl-names = "default"; 418 pinctrl-0 = <&spi4_pins_a>; 419 cs-gpios = <&gpiof 4 GPIO_ACTIVE_LOW>; 420 status = "okay"; 421 422 lcd: display@0 { 423 compatible = "shineworld,lh133k", "panel-mipi-dbi-spi"; 424 reg = <0>; 425 power-supply = <&v3v3>; 426 io-supply = <&v3v3>; 427 backlight = <&backlight>; 428 dc-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>; 429 reset-gpios = <&gpioh 4 GPIO_ACTIVE_HIGH>; 430 spi-3wire; 431 spi-max-frequency = <32000000>; 432 433 width-mm = <23>; 434 height-mm = <23>; 435 rotation = <180>; 436 437 panel-timing { 438 hactive = <240>; 439 vactive = <240>; 440 hback-porch = <0>; 441 vback-porch = <0>; 442 443 clock-frequency = <0>; 444 hfront-porch = <0>; 445 hsync-len = <0>; 446 vfront-porch = <0>; 447 vsync-len = <0>; 448 }; 449 }; 450}; 451 452&spi5 { 453 pinctrl-names = "default"; 454 pinctrl-0 = <&spi5_pins_a>; 455 456 /* spare dmas for other usage */ 457 /delete-property/dmas; 458 /delete-property/dma-names; 459 460 cs-gpios = <&gpiod 13 GPIO_ACTIVE_LOW>; 461 462 status = "okay"; 463 464 switch: switch@0 { 465 compatible = "microchip,ksz9563"; 466 reg = <0>; 467 468 reset-gpios = <&gpiog 0 GPIO_ACTIVE_LOW>; 469 spi-max-frequency = <44000000>; 470 471 interrupt-parent = <&gpioa>; 472 interrupts = <6 IRQ_TYPE_EDGE_RISING>; 473 474 ports { 475 #address-cells = <1>; 476 #size-cells = <0>; 477 port_dut: port@0 { 478 reg = <0>; 479 label = "dut"; 480 }; 481 482 port_uplink: port@1 { 483 reg = <1>; 484 label = "uplink"; 485 }; 486 487 port_cpu: port@2 { 488 reg = <2>; 489 label = "cpu"; 490 491 ethernet = <ðernet0>; 492 493 phy-mode = "rgmii-id"; 494 rx-internal-delay-ps = <2000>; 495 tx-internal-delay-ps = <2000>; 496 497 fixed-link { 498 speed = <1000>; 499 full-duplex; 500 }; 501 }; 502 }; 503 }; 504}; 505 506&timers2 { 507 /* spare dmas for other usage */ 508 /delete-property/dmas; 509 /delete-property/dma-names; 510 511 status = "okay"; 512 513 timer@1 { 514 status = "okay"; 515 }; 516}; 517 518&timers3 { 519 /* spare dmas for other usage */ 520 /delete-property/dmas; 521 /delete-property/dma-names; 522 523 status = "okay"; 524 525 timer@2 { 526 status = "okay"; 527 }; 528}; 529 530&timers4 { 531 /* spare dmas for other usage */ 532 /delete-property/dmas; 533 /delete-property/dma-names; 534 535 status = "okay"; 536 537 timer@3 { 538 status = "okay"; 539 }; 540}; 541 542&uart4 { 543 label = "debug"; 544 545 pinctrl-names = "default"; 546 pinctrl-0 = <&uart4_pins_a>; 547 548 /* spare dmas for other usage */ 549 /delete-property/dmas; 550 /delete-property/dma-names; 551 552 status = "okay"; 553}; 554 555&usart3 { 556 label = "dut"; 557 uart-has-rtscts; 558 559 pinctrl-names = "default"; 560 pinctrl-0 = <&usart3_pins_f>; 561 562 /* spare dmas for other usage */ 563 /delete-property/dmas; 564 /delete-property/dma-names; 565 566 status = "okay"; 567}; 568 569&usbh_ehci { 570 status = "okay"; 571}; 572 573&usbotg_hs { 574 phys = <&usbphyc_port1 0>; 575 phy-names = "usb2-phy"; 576 577 vusb_d-supply = <&vdd_usb>; 578 vusb_a-supply = <®18>; 579 580 dr_mode = "peripheral"; 581 582 status = "okay"; 583}; 584 585&usbphyc { 586 status = "okay"; 587}; 588 589&usbphyc_port0 { 590 phy-supply = <&vdd_usb>; 591}; 592 593&usbphyc_port1 { 594 phy-supply = <&vdd_usb>; 595}; 596 597&vrefbuf { 598 regulator-min-microvolt = <2500000>; 599 regulator-max-microvolt = <2500000>; 600 vdda-supply = <&vdda>; 601 602 status = "okay"; 603}; 604