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