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 142 baseboard_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 &rtc { 383 status = "okay"; 384 }; 385 386 &sdmmc2 { 387 pinctrl-names = "default", "opendrain", "sleep"; 388 pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>; 389 pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_b>; 390 pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_b>; 391 vmmc-supply = <&v3v3>; 392 393 bus-width = <8>; 394 mmc-ddr-3_3v; 395 no-1-8-v; 396 non-removable; 397 no-sd; 398 no-sdio; 399 st,neg-edge; 400 401 status = "okay"; 402 }; 403 404 &spi2 { 405 pinctrl-names = "default"; 406 pinctrl-0 = <&spi2_pins_c>; 407 cs-gpios = <&gpiof 12 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; 408 status = "okay"; 409 }; 410 411 &spi4 { 412 pinctrl-names = "default"; 413 pinctrl-0 = <&spi4_pins_a>; 414 cs-gpios = <&gpiof 4 GPIO_ACTIVE_LOW>; 415 status = "okay"; 416 417 lcd: display@0 { 418 compatible = "shineworld,lh133k", "panel-mipi-dbi-spi"; 419 reg = <0>; 420 power-supply = <&v3v3>; 421 io-supply = <&v3v3>; 422 backlight = <&backlight>; 423 dc-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>; 424 reset-gpios = <&gpioh 4 GPIO_ACTIVE_HIGH>; 425 spi-3wire; 426 spi-max-frequency = <32000000>; 427 428 width-mm = <23>; 429 height-mm = <23>; 430 rotation = <180>; 431 432 panel-timing { 433 hactive = <240>; 434 vactive = <240>; 435 hback-porch = <0>; 436 vback-porch = <0>; 437 438 clock-frequency = <0>; 439 hfront-porch = <0>; 440 hsync-len = <0>; 441 vfront-porch = <0>; 442 vsync-len = <0>; 443 }; 444 }; 445 }; 446 447 &spi5 { 448 pinctrl-names = "default"; 449 pinctrl-0 = <&spi5_pins_a>; 450 451 /* spare dmas for other usage */ 452 /delete-property/dmas; 453 /delete-property/dma-names; 454 455 cs-gpios = <&gpiod 13 GPIO_ACTIVE_LOW>; 456 457 status = "okay"; 458 459 switch: switch@0 { 460 compatible = "microchip,ksz9563"; 461 reg = <0>; 462 463 reset-gpios = <&gpiog 0 GPIO_ACTIVE_LOW>; 464 spi-max-frequency = <44000000>; 465 466 interrupt-parent = <&gpioa>; 467 interrupts = <6 IRQ_TYPE_EDGE_RISING>; 468 469 /* Reduce RGMII EMI emissions by reducing drive strength */ 470 microchip,hi-drive-strength-microamp = <2000>; 471 microchip,lo-drive-strength-microamp = <8000>; 472 473 ports { 474 #address-cells = <1>; 475 #size-cells = <0>; 476 port_dut: port@0 { 477 reg = <0>; 478 label = "dut"; 479 }; 480 481 port_uplink: port@1 { 482 reg = <1>; 483 label = "uplink"; 484 }; 485 486 port_cpu: port@2 { 487 reg = <2>; 488 label = "cpu"; 489 490 ethernet = <ðernet0>; 491 492 phy-mode = "rgmii-id"; 493 rx-internal-delay-ps = <2000>; 494 tx-internal-delay-ps = <2000>; 495 496 fixed-link { 497 speed = <1000>; 498 full-duplex; 499 }; 500 }; 501 }; 502 }; 503 }; 504 505 &timers2 { 506 /* spare dmas for other usage */ 507 /delete-property/dmas; 508 /delete-property/dma-names; 509 510 status = "okay"; 511 512 timer@1 { 513 status = "okay"; 514 }; 515 }; 516 517 &timers3 { 518 /* spare dmas for other usage */ 519 /delete-property/dmas; 520 /delete-property/dma-names; 521 522 status = "okay"; 523 524 timer@2 { 525 status = "okay"; 526 }; 527 }; 528 529 &timers4 { 530 /* spare dmas for other usage */ 531 /delete-property/dmas; 532 /delete-property/dma-names; 533 534 status = "okay"; 535 536 timer@3 { 537 status = "okay"; 538 }; 539 }; 540 541 &uart4 { 542 label = "debug"; 543 544 pinctrl-names = "default"; 545 pinctrl-0 = <&uart4_pins_a>; 546 547 /* spare dmas for other usage */ 548 /delete-property/dmas; 549 /delete-property/dma-names; 550 551 status = "okay"; 552 }; 553 554 &usart3 { 555 label = "dut"; 556 uart-has-rtscts; 557 558 pinctrl-names = "default"; 559 pinctrl-0 = <&usart3_pins_f>; 560 561 /* spare dmas for other usage */ 562 /delete-property/dmas; 563 /delete-property/dma-names; 564 565 status = "okay"; 566 }; 567 568 &usbh_ehci { 569 status = "okay"; 570 }; 571 572 &usbotg_hs { 573 phys = <&usbphyc_port1 0>; 574 phy-names = "usb2-phy"; 575 576 vusb_d-supply = <&vdd_usb>; 577 vusb_a-supply = <®18>; 578 579 dr_mode = "peripheral"; 580 581 status = "okay"; 582 }; 583 584 &usbphyc { 585 status = "okay"; 586 }; 587 588 &vrefbuf { 589 regulator-min-microvolt = <2500000>; 590 regulator-max-microvolt = <2500000>; 591 vdda-supply = <&vdda>; 592 593 status = "okay"; 594 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.