1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2/* 3 * Copyright (C) STMicroelectronics 2019 - All Rights Reserved 4 * Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics. 5 */ 6 7#include <dt-bindings/gpio/gpio.h> 8#include <dt-bindings/mfd/st,stpmic1.h> 9 10/ { 11 aliases { 12 serial0 = &uart4; 13 serial1 = &usart3; 14 serial2 = &uart7; 15 }; 16 17 memory@c0000000 { 18 device_type = "memory"; 19 reg = <0xc0000000 0x20000000>; 20 }; 21 22 reserved-memory { 23 #address-cells = <1>; 24 #size-cells = <1>; 25 ranges; 26 27 mcuram2: mcuram2@10000000 { 28 compatible = "shared-dma-pool"; 29 reg = <0x10000000 0x40000>; 30 no-map; 31 }; 32 33 vdev0vring0: vdev0vring0@10040000 { 34 compatible = "shared-dma-pool"; 35 reg = <0x10040000 0x1000>; 36 no-map; 37 }; 38 39 vdev0vring1: vdev0vring1@10041000 { 40 compatible = "shared-dma-pool"; 41 reg = <0x10041000 0x1000>; 42 no-map; 43 }; 44 45 vdev0buffer: vdev0buffer@10042000 { 46 compatible = "shared-dma-pool"; 47 reg = <0x10042000 0x4000>; 48 no-map; 49 }; 50 51 mcuram: mcuram@30000000 { 52 compatible = "shared-dma-pool"; 53 reg = <0x30000000 0x40000>; 54 no-map; 55 }; 56 57 retram: retram@38000000 { 58 compatible = "shared-dma-pool"; 59 reg = <0x38000000 0x10000>; 60 no-map; 61 }; 62 }; 63 64 led { 65 compatible = "gpio-leds"; 66 led-blue { 67 label = "heartbeat"; 68 gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>; 69 linux,default-trigger = "heartbeat"; 70 default-state = "off"; 71 }; 72 }; 73 74 sound { 75 compatible = "audio-graph-card"; 76 label = "STM32MP15-DK"; 77 routing = 78 "Playback" , "MCLK", 79 "Capture" , "MCLK", 80 "MICL" , "Mic Bias"; 81 dais = <&sai2a_port &sai2b_port &i2s2_port>; 82 status = "okay"; 83 }; 84 85 vin: vin { 86 compatible = "regulator-fixed"; 87 regulator-name = "vin"; 88 regulator-min-microvolt = <5000000>; 89 regulator-max-microvolt = <5000000>; 90 regulator-always-on; 91 }; 92}; 93 94&adc { 95 pinctrl-names = "default"; 96 pinctrl-0 = <&adc12_usb_cc_pins_a>; 97 vdd-supply = <&vdd>; 98 vdda-supply = <&vdd>; 99 vref-supply = <&vrefbuf>; 100 status = "okay"; 101 adc1: adc@0 { 102 status = "okay"; 103 /* 104 * Type-C USB_PWR_CC1 & USB_PWR_CC2 on in18 & in19. 105 * Use at least 5 * RC time, e.g. 5 * (Rp + Rd) * C: 106 * 5 * (56 + 47kOhms) * 5pF => 2.5us. 107 * Use arbitrary margin here (e.g. 5us). 108 */ 109 channel@18 { 110 reg = <18>; 111 st,min-sample-time-ns = <5000>; 112 }; 113 channel@19 { 114 reg = <19>; 115 st,min-sample-time-ns = <5000>; 116 }; 117 }; 118 adc2: adc@100 { 119 status = "okay"; 120 /* USB Type-C CC1 & CC2 */ 121 channel@18 { 122 reg = <18>; 123 st,min-sample-time-ns = <5000>; 124 }; 125 channel@19 { 126 reg = <19>; 127 st,min-sample-time-ns = <5000>; 128 }; 129 }; 130}; 131 132&cec { 133 pinctrl-names = "default", "sleep"; 134 pinctrl-0 = <&cec_pins_b>; 135 pinctrl-1 = <&cec_sleep_pins_b>; 136 status = "okay"; 137}; 138 139&crc1 { 140 status = "okay"; 141}; 142 143&dts { 144 status = "okay"; 145}; 146 147ðernet0 { 148 status = "okay"; 149 pinctrl-0 = <ðernet0_rgmii_pins_a>; 150 pinctrl-1 = <ðernet0_rgmii_sleep_pins_a>; 151 pinctrl-names = "default", "sleep"; 152 phy-mode = "rgmii-id"; 153 max-speed = <1000>; 154 phy-handle = <&phy0>; 155 156 mdio { 157 #address-cells = <1>; 158 #size-cells = <0>; 159 compatible = "snps,dwmac-mdio"; 160 phy0: ethernet-phy@0 { 161 reg = <0>; 162 }; 163 }; 164}; 165 166&hash1 { 167 status = "okay"; 168}; 169 170&i2c1 { 171 pinctrl-names = "default", "sleep"; 172 pinctrl-0 = <&i2c1_pins_a>; 173 pinctrl-1 = <&i2c1_sleep_pins_a>; 174 i2c-scl-rising-time-ns = <100>; 175 i2c-scl-falling-time-ns = <7>; 176 status = "okay"; 177 /delete-property/dmas; 178 /delete-property/dma-names; 179 180 hdmi-transmitter@39 { 181 compatible = "sil,sii9022"; 182 reg = <0x39>; 183 iovcc-supply = <&v3v3_hdmi>; 184 cvcc12-supply = <&v1v2_hdmi>; 185 reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>; 186 interrupts = <1 IRQ_TYPE_EDGE_FALLING>; 187 interrupt-parent = <&gpiog>; 188 #sound-dai-cells = <0>; 189 status = "okay"; 190 191 ports { 192 #address-cells = <1>; 193 #size-cells = <0>; 194 195 port@0 { 196 reg = <0>; 197 sii9022_in: endpoint { 198 remote-endpoint = <<dc_ep0_out>; 199 }; 200 }; 201 202 port@3 { 203 reg = <3>; 204 sii9022_tx_endpoint: endpoint { 205 remote-endpoint = <&i2s2_endpoint>; 206 }; 207 }; 208 }; 209 }; 210 211 cs42l51: cs42l51@4a { 212 compatible = "cirrus,cs42l51"; 213 reg = <0x4a>; 214 #sound-dai-cells = <0>; 215 VL-supply = <&v3v3>; 216 VD-supply = <&v1v8_audio>; 217 VA-supply = <&v1v8_audio>; 218 VAHP-supply = <&v1v8_audio>; 219 reset-gpios = <&gpiog 9 GPIO_ACTIVE_LOW>; 220 clocks = <&sai2a>; 221 clock-names = "MCLK"; 222 status = "okay"; 223 224 cs42l51_port: port { 225 #address-cells = <1>; 226 #size-cells = <0>; 227 228 cs42l51_tx_endpoint: endpoint@0 { 229 reg = <0>; 230 remote-endpoint = <&sai2a_endpoint>; 231 frame-master = <&cs42l51_tx_endpoint>; 232 bitclock-master = <&cs42l51_tx_endpoint>; 233 }; 234 235 cs42l51_rx_endpoint: endpoint@1 { 236 reg = <1>; 237 remote-endpoint = <&sai2b_endpoint>; 238 frame-master = <&cs42l51_rx_endpoint>; 239 bitclock-master = <&cs42l51_rx_endpoint>; 240 }; 241 }; 242 }; 243}; 244 245&i2c4 { 246 pinctrl-names = "default", "sleep"; 247 pinctrl-0 = <&i2c4_pins_a>; 248 pinctrl-1 = <&i2c4_sleep_pins_a>; 249 i2c-scl-rising-time-ns = <185>; 250 i2c-scl-falling-time-ns = <20>; 251 clock-frequency = <400000>; 252 status = "okay"; 253 /* spare dmas for other usage */ 254 /delete-property/dmas; 255 /delete-property/dma-names; 256 257 stusb1600: typec@28 { 258 compatible = "st,stusb1600"; 259 reg = <0x28>; 260 interrupts = <11 IRQ_TYPE_LEVEL_LOW>; 261 interrupt-parent = <&gpioi>; 262 pinctrl-names = "default"; 263 pinctrl-0 = <&stusb1600_pins_a>; 264 status = "okay"; 265 vdd-supply = <&vin>; 266 267 connector { 268 compatible = "usb-c-connector"; 269 label = "USB-C"; 270 power-role = "dual"; 271 typec-power-opmode = "default"; 272 273 port { 274 con_usbotg_hs_ep: endpoint { 275 remote-endpoint = <&usbotg_hs_ep>; 276 }; 277 }; 278 }; 279 }; 280 281 pmic: stpmic@33 { 282 compatible = "st,stpmic1"; 283 reg = <0x33>; 284 interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>; 285 interrupt-controller; 286 #interrupt-cells = <2>; 287 status = "okay"; 288 289 regulators { 290 compatible = "st,stpmic1-regulators"; 291 buck1-supply = <&vin>; 292 buck2-supply = <&vin>; 293 buck3-supply = <&vin>; 294 buck4-supply = <&vin>; 295 ldo1-supply = <&v3v3>; 296 ldo2-supply = <&vin>; 297 ldo3-supply = <&vdd_ddr>; 298 ldo4-supply = <&vin>; 299 ldo5-supply = <&vin>; 300 ldo6-supply = <&v3v3>; 301 vref_ddr-supply = <&vin>; 302 boost-supply = <&vin>; 303 pwr_sw1-supply = <&bst_out>; 304 pwr_sw2-supply = <&bst_out>; 305 306 vddcore: buck1 { 307 regulator-name = "vddcore"; 308 regulator-min-microvolt = <1200000>; 309 regulator-max-microvolt = <1350000>; 310 regulator-always-on; 311 regulator-initial-mode = <0>; 312 regulator-over-current-protection; 313 }; 314 315 vdd_ddr: buck2 { 316 regulator-name = "vdd_ddr"; 317 regulator-min-microvolt = <1350000>; 318 regulator-max-microvolt = <1350000>; 319 regulator-always-on; 320 regulator-initial-mode = <0>; 321 regulator-over-current-protection; 322 }; 323 324 vdd: buck3 { 325 regulator-name = "vdd"; 326 regulator-min-microvolt = <3300000>; 327 regulator-max-microvolt = <3300000>; 328 regulator-always-on; 329 st,mask-reset; 330 regulator-initial-mode = <0>; 331 regulator-over-current-protection; 332 }; 333 334 v3v3: buck4 { 335 regulator-name = "v3v3"; 336 regulator-min-microvolt = <3300000>; 337 regulator-max-microvolt = <3300000>; 338 regulator-always-on; 339 regulator-over-current-protection; 340 regulator-initial-mode = <0>; 341 }; 342 343 v1v8_audio: ldo1 { 344 regulator-name = "v1v8_audio"; 345 regulator-min-microvolt = <1800000>; 346 regulator-max-microvolt = <1800000>; 347 regulator-always-on; 348 interrupts = <IT_CURLIM_LDO1 0>; 349 }; 350 351 v3v3_hdmi: ldo2 { 352 regulator-name = "v3v3_hdmi"; 353 regulator-min-microvolt = <3300000>; 354 regulator-max-microvolt = <3300000>; 355 regulator-always-on; 356 interrupts = <IT_CURLIM_LDO2 0>; 357 }; 358 359 vtt_ddr: ldo3 { 360 regulator-name = "vtt_ddr"; 361 regulator-min-microvolt = <500000>; 362 regulator-max-microvolt = <750000>; 363 regulator-always-on; 364 regulator-over-current-protection; 365 }; 366 367 vdd_usb: ldo4 { 368 regulator-name = "vdd_usb"; 369 interrupts = <IT_CURLIM_LDO4 0>; 370 }; 371 372 vdda: ldo5 { 373 regulator-name = "vdda"; 374 regulator-min-microvolt = <2900000>; 375 regulator-max-microvolt = <2900000>; 376 interrupts = <IT_CURLIM_LDO5 0>; 377 regulator-boot-on; 378 }; 379 380 v1v2_hdmi: ldo6 { 381 regulator-name = "v1v2_hdmi"; 382 regulator-min-microvolt = <1200000>; 383 regulator-max-microvolt = <1200000>; 384 regulator-always-on; 385 interrupts = <IT_CURLIM_LDO6 0>; 386 }; 387 388 vref_ddr: vref_ddr { 389 regulator-name = "vref_ddr"; 390 regulator-always-on; 391 }; 392 393 bst_out: boost { 394 regulator-name = "bst_out"; 395 interrupts = <IT_OCP_BOOST 0>; 396 }; 397 398 vbus_otg: pwr_sw1 { 399 regulator-name = "vbus_otg"; 400 interrupts = <IT_OCP_OTG 0>; 401 }; 402 403 vbus_sw: pwr_sw2 { 404 regulator-name = "vbus_sw"; 405 interrupts = <IT_OCP_SWOUT 0>; 406 regulator-active-discharge = <1>; 407 }; 408 }; 409 410 onkey { 411 compatible = "st,stpmic1-onkey"; 412 interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>; 413 interrupt-names = "onkey-falling", "onkey-rising"; 414 power-off-time-sec = <10>; 415 status = "okay"; 416 }; 417 418 watchdog { 419 compatible = "st,stpmic1-wdt"; 420 status = "disabled"; 421 }; 422 }; 423}; 424 425&i2c5 { 426 pinctrl-names = "default", "sleep"; 427 pinctrl-0 = <&i2c5_pins_a>; 428 pinctrl-1 = <&i2c5_sleep_pins_a>; 429 i2c-scl-rising-time-ns = <185>; 430 i2c-scl-falling-time-ns = <20>; 431 clock-frequency = <400000>; 432 /* spare dmas for other usage */ 433 /delete-property/dmas; 434 /delete-property/dma-names; 435 status = "disabled"; 436}; 437 438&i2s2 { 439 clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>; 440 clock-names = "pclk", "i2sclk", "x8k", "x11k"; 441 pinctrl-names = "default", "sleep"; 442 pinctrl-0 = <&i2s2_pins_a>; 443 pinctrl-1 = <&i2s2_sleep_pins_a>; 444 status = "okay"; 445 446 i2s2_port: port { 447 i2s2_endpoint: endpoint { 448 remote-endpoint = <&sii9022_tx_endpoint>; 449 dai-format = "i2s"; 450 mclk-fs = <256>; 451 }; 452 }; 453}; 454 455&ipcc { 456 status = "okay"; 457}; 458 459&iwdg2 { 460 timeout-sec = <32>; 461 status = "okay"; 462}; 463 464<dc { 465 pinctrl-names = "default", "sleep"; 466 pinctrl-0 = <<dc_pins_a>; 467 pinctrl-1 = <<dc_sleep_pins_a>; 468 status = "okay"; 469 470 port { 471 ltdc_ep0_out: endpoint { 472 remote-endpoint = <&sii9022_in>; 473 }; 474 }; 475}; 476 477&m4_rproc { 478 memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, 479 <&vdev0vring1>, <&vdev0buffer>; 480 mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>; 481 mbox-names = "vq0", "vq1", "shutdown", "detach"; 482 pinctrl-names = "default"; 483 pinctrl-0 = <&m4_leds_orange_pins_a>; 484 interrupt-parent = <&exti>; 485 interrupts = <68 1>; 486 status = "okay"; 487}; 488 489&pwr_regulators { 490 vdd-supply = <&vdd>; 491 vdd_3v3_usbfs-supply = <&vdd_usb>; 492}; 493 494&rng1 { 495 status = "okay"; 496}; 497 498&rtc { 499 status = "okay"; 500}; 501 502&sai2 { 503 clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>; 504 clock-names = "pclk", "x8k", "x11k"; 505 pinctrl-names = "default", "sleep"; 506 pinctrl-0 = <&sai2a_pins_a>, <&sai2b_pins_b>; 507 pinctrl-1 = <&sai2a_sleep_pins_a>, <&sai2b_sleep_pins_b>; 508 status = "okay"; 509 510 sai2a: audio-controller@4400b004 { 511 #clock-cells = <0>; 512 dma-names = "tx"; 513 status = "okay"; 514 515 sai2a_port: port { 516 sai2a_endpoint: endpoint { 517 remote-endpoint = <&cs42l51_tx_endpoint>; 518 dai-format = "i2s"; 519 mclk-fs = <256>; 520 system-clock-direction-out; 521 dai-tdm-slot-num = <2>; 522 dai-tdm-slot-width = <32>; 523 }; 524 }; 525 }; 526 527 sai2b: audio-controller@4400b024 { 528 dma-names = "rx"; 529 st,sync = <&sai2a 2>; 530 clocks = <&rcc SAI2_K>, <&sai2a>; 531 clock-names = "sai_ck", "MCLK"; 532 status = "okay"; 533 534 sai2b_port: port { 535 sai2b_endpoint: endpoint { 536 remote-endpoint = <&cs42l51_rx_endpoint>; 537 dai-format = "i2s"; 538 mclk-fs = <256>; 539 dai-tdm-slot-num = <2>; 540 dai-tdm-slot-width = <32>; 541 }; 542 }; 543 }; 544}; 545 546&sdmmc1 { 547 pinctrl-names = "default", "opendrain", "sleep"; 548 pinctrl-0 = <&sdmmc1_b4_pins_a>; 549 pinctrl-1 = <&sdmmc1_b4_od_pins_a>; 550 pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>; 551 cd-gpios = <&gpiob 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; 552 disable-wp; 553 st,neg-edge; 554 bus-width = <4>; 555 vmmc-supply = <&v3v3>; 556 status = "okay"; 557}; 558 559&sdmmc3 { 560 pinctrl-names = "default", "opendrain", "sleep"; 561 pinctrl-0 = <&sdmmc3_b4_pins_a>; 562 pinctrl-1 = <&sdmmc3_b4_od_pins_a>; 563 pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>; 564 broken-cd; 565 st,neg-edge; 566 bus-width = <4>; 567 vmmc-supply = <&v3v3>; 568 status = "disabled"; 569}; 570 571&timers1 { 572 /* spare dmas for other usage */ 573 /delete-property/dmas; 574 /delete-property/dma-names; 575 status = "disabled"; 576 counter { 577 status = "okay"; 578 }; 579 pwm { 580 pinctrl-0 = <&pwm1_pins_a>; 581 pinctrl-1 = <&pwm1_sleep_pins_a>; 582 pinctrl-names = "default", "sleep"; 583 status = "okay"; 584 }; 585 timer@0 { 586 status = "okay"; 587 }; 588}; 589 590&timers3 { 591 /delete-property/dmas; 592 /delete-property/dma-names; 593 status = "disabled"; 594 counter { 595 status = "okay"; 596 }; 597 pwm { 598 pinctrl-0 = <&pwm3_pins_a>; 599 pinctrl-1 = <&pwm3_sleep_pins_a>; 600 pinctrl-names = "default", "sleep"; 601 status = "okay"; 602 }; 603 timer@2 { 604 status = "okay"; 605 }; 606}; 607 608&timers4 { 609 /delete-property/dmas; 610 /delete-property/dma-names; 611 status = "disabled"; 612 counter { 613 status = "okay"; 614 }; 615 pwm { 616 pinctrl-0 = <&pwm4_pins_a &pwm4_pins_b>; 617 pinctrl-1 = <&pwm4_sleep_pins_a &pwm4_sleep_pins_b>; 618 pinctrl-names = "default", "sleep"; 619 status = "okay"; 620 }; 621 timer@3 { 622 status = "okay"; 623 }; 624}; 625 626&timers5 { 627 /delete-property/dmas; 628 /delete-property/dma-names; 629 status = "disabled"; 630 counter { 631 status = "okay"; 632 }; 633 pwm { 634 pinctrl-0 = <&pwm5_pins_a>; 635 pinctrl-1 = <&pwm5_sleep_pins_a>; 636 pinctrl-names = "default", "sleep"; 637 status = "okay"; 638 }; 639 timer@4 { 640 status = "okay"; 641 }; 642}; 643 644&timers6 { 645 /delete-property/dmas; 646 /delete-property/dma-names; 647 status = "disabled"; 648 counter { 649 status = "okay"; 650 }; 651 timer@5 { 652 status = "okay"; 653 }; 654}; 655 656&timers12 { 657 /delete-property/dmas; 658 /delete-property/dma-names; 659 status = "disabled"; 660 counter { 661 status = "okay"; 662 }; 663 pwm { 664 pinctrl-0 = <&pwm12_pins_a>; 665 pinctrl-1 = <&pwm12_sleep_pins_a>; 666 pinctrl-names = "default", "sleep"; 667 status = "okay"; 668 }; 669 timer@11 { 670 status = "okay"; 671 }; 672}; 673 674&uart4 { 675 pinctrl-names = "default", "sleep", "idle"; 676 pinctrl-0 = <&uart4_pins_a>; 677 pinctrl-1 = <&uart4_sleep_pins_a>; 678 pinctrl-2 = <&uart4_idle_pins_a>; 679 /delete-property/dmas; 680 /delete-property/dma-names; 681 status = "okay"; 682}; 683 684&uart7 { 685 pinctrl-names = "default", "sleep", "idle"; 686 pinctrl-0 = <&uart7_pins_c>; 687 pinctrl-1 = <&uart7_sleep_pins_c>; 688 pinctrl-2 = <&uart7_idle_pins_c>; 689 /delete-property/dmas; 690 /delete-property/dma-names; 691 status = "disabled"; 692}; 693 694&usart3 { 695 pinctrl-names = "default", "sleep", "idle"; 696 pinctrl-0 = <&usart3_pins_c>; 697 pinctrl-1 = <&usart3_sleep_pins_c>; 698 pinctrl-2 = <&usart3_idle_pins_c>; 699 uart-has-rtscts; 700 status = "disabled"; 701}; 702 703&usbh_ehci { 704 status = "okay"; 705 #address-cells = <1>; 706 #size-cells = <0>; 707 /* onboard HUB */ 708 hub@1 { 709 compatible = "usb424,2514"; 710 reg = <1>; 711 vdd-supply = <&v3v3>; 712 }; 713}; 714 715&usbotg_hs { 716 phys = <&usbphyc_port1 0>; 717 phy-names = "usb2-phy"; 718 usb-role-switch; 719 status = "okay"; 720 721 port { 722 usbotg_hs_ep: endpoint { 723 remote-endpoint = <&con_usbotg_hs_ep>; 724 }; 725 }; 726}; 727 728&usbphyc { 729 status = "okay"; 730}; 731 732&usbphyc_port0 { 733 phy-supply = <&vdd_usb>; 734 st,tune-hs-dc-level = <2>; 735 st,enable-fs-rftime-tuning; 736 st,enable-hs-rftime-reduction; 737 st,trim-hs-current = <15>; 738 st,trim-hs-impedance = <1>; 739 st,tune-squelch-level = <3>; 740 st,tune-hs-rx-offset = <2>; 741 st,no-lsfs-sc; 742}; 743 744&usbphyc_port1 { 745 phy-supply = <&vdd_usb>; 746 st,tune-hs-dc-level = <2>; 747 st,enable-fs-rftime-tuning; 748 st,enable-hs-rftime-reduction; 749 st,trim-hs-current = <15>; 750 st,trim-hs-impedance = <1>; 751 st,tune-squelch-level = <3>; 752 st,tune-hs-rx-offset = <2>; 753 st,no-lsfs-sc; 754}; 755 756&vrefbuf { 757 regulator-min-microvolt = <2500000>; 758 regulator-max-microvolt = <2500000>; 759 vdda-supply = <&vdd>; 760 status = "okay"; 761}; 762