1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2/* 3 * Copyright (C) STMicroelectronics 2022 - All Rights Reserved 4 * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics. 5 */ 6#include <dt-bindings/clock/stm32mp13-clks.h> 7#include <dt-bindings/interrupt-controller/arm-gic.h> 8#include <dt-bindings/reset/stm32mp13-resets.h> 9 10/ { 11 #address-cells = <1>; 12 #size-cells = <1>; 13 14 cpus { 15 #address-cells = <1>; 16 #size-cells = <0>; 17 18 cpu0: cpu@0 { 19 compatible = "arm,cortex-a7"; 20 device_type = "cpu"; 21 reg = <0>; 22 clocks = <&rcc CK_MPU>; 23 clock-names = "cpu"; 24 nvmem-cells = <&part_number_otp>; 25 nvmem-cell-names = "part_number"; 26 }; 27 }; 28 29 clocks { 30 clk_csi: clk-csi { 31 #clock-cells = <0>; 32 compatible = "fixed-clock"; 33 clock-frequency = <4000000>; 34 }; 35 36 clk_hse: clk-hse { 37 #clock-cells = <0>; 38 compatible = "fixed-clock"; 39 clock-frequency = <24000000>; 40 }; 41 42 clk_hsi: clk-hsi { 43 #clock-cells = <0>; 44 compatible = "fixed-clock"; 45 clock-frequency = <64000000>; 46 }; 47 48 clk_lse: clk-lse { 49 #clock-cells = <0>; 50 compatible = "fixed-clock"; 51 clock-frequency = <32768>; 52 }; 53 54 clk_lsi: clk-lsi { 55 #clock-cells = <0>; 56 compatible = "fixed-clock"; 57 clock-frequency = <32000>; 58 }; 59 }; 60 61 intc: interrupt-controller@a0021000 { 62 compatible = "arm,cortex-a7-gic"; 63 #interrupt-cells = <3>; 64 interrupt-controller; 65 reg = <0xa0021000 0x1000>, 66 <0xa0022000 0x2000>; 67 }; 68 69 psci { 70 compatible = "arm,psci-1.0"; 71 method = "smc"; 72 }; 73 74 soc { 75 compatible = "simple-bus"; 76 #address-cells = <1>; 77 #size-cells = <1>; 78 interrupt-parent = <&intc>; 79 ranges; 80 81 usart3: serial@4000f000 { 82 compatible = "st,stm32h7-uart"; 83 reg = <0x4000f000 0x400>; 84 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; 85 clocks = <&rcc USART3_K>; 86 resets = <&rcc USART3_R>; 87 status = "disabled"; 88 }; 89 90 uart4: serial@40010000 { 91 compatible = "st,stm32h7-uart"; 92 reg = <0x40010000 0x400>; 93 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; 94 clocks = <&rcc UART4_K>; 95 resets = <&rcc UART4_R>; 96 status = "disabled"; 97 }; 98 99 uart5: serial@40011000 { 100 compatible = "st,stm32h7-uart"; 101 reg = <0x40011000 0x400>; 102 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; 103 clocks = <&rcc UART5_K>; 104 resets = <&rcc UART5_R>; 105 status = "disabled"; 106 }; 107 108 uart7: serial@40018000 { 109 compatible = "st,stm32h7-uart"; 110 reg = <0x40018000 0x400>; 111 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 112 clocks = <&rcc UART7_K>; 113 resets = <&rcc UART7_R>; 114 status = "disabled"; 115 }; 116 117 uart8: serial@40019000 { 118 compatible = "st,stm32h7-uart"; 119 reg = <0x40019000 0x400>; 120 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 121 clocks = <&rcc UART8_K>; 122 resets = <&rcc UART8_R>; 123 status = "disabled"; 124 }; 125 126 usart6: serial@44003000 { 127 compatible = "st,stm32h7-uart"; 128 reg = <0x44003000 0x400>; 129 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 130 clocks = <&rcc USART6_K>; 131 resets = <&rcc USART6_R>; 132 status = "disabled"; 133 }; 134 135 usbotg_hs: usb-otg@49000000 { 136 compatible = "st,stm32mp15-hsotg", "snps,dwc2"; 137 reg = <0x49000000 0x40000>; 138 clocks = <&rcc USBO_K>; 139 clock-names = "otg"; 140 resets = <&rcc USBO_R>; 141 reset-names = "dwc2"; 142 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 143 g-rx-fifo-size = <512>; 144 g-np-tx-fifo-size = <32>; 145 g-tx-fifo-size = <256 16 16 16 16 16 16 16>; 146 dr_mode = "otg"; 147 usb33d-supply = <&usb33>; 148 status = "disabled"; 149 }; 150 151 usart1: serial@4c000000 { 152 compatible = "st,stm32h7-uart"; 153 reg = <0x4c000000 0x400>; 154 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; 155 clocks = <&rcc USART1_K>; 156 resets = <&rcc USART1_R>; 157 status = "disabled"; 158 }; 159 160 usart2: serial@4c001000 { 161 compatible = "st,stm32h7-uart"; 162 reg = <0x4c001000 0x400>; 163 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; 164 clocks = <&rcc USART2_K>; 165 resets = <&rcc USART2_R>; 166 status = "disabled"; 167 }; 168 169 i2c3: i2c@4c004000 { 170 compatible = "st,stm32mp13-i2c"; 171 reg = <0x4c004000 0x400>; 172 interrupt-names = "event", "error"; 173 interrupts-extended = <&exti 23 IRQ_TYPE_LEVEL_HIGH>, 174 <&intc GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; 175 clocks = <&rcc I2C3_K>; 176 resets = <&rcc I2C3_R>; 177 #address-cells = <1>; 178 #size-cells = <0>; 179 st,syscfg-fmp = <&syscfg 0x4 0x4>; 180 i2c-analog-filter; 181 status = "disabled"; 182 }; 183 184 i2c4: i2c@4c005000 { 185 compatible = "st,stm32mp13-i2c"; 186 reg = <0x4c005000 0x400>; 187 interrupt-names = "event", "error"; 188 interrupts-extended = <&exti 24 IRQ_TYPE_LEVEL_HIGH>, 189 <&intc GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>; 190 clocks = <&rcc I2C4_K>; 191 resets = <&rcc I2C4_R>; 192 #address-cells = <1>; 193 #size-cells = <0>; 194 st,syscfg-fmp = <&syscfg 0x4 0x8>; 195 i2c-analog-filter; 196 status = "disabled"; 197 }; 198 199 i2c5: i2c@4c006000 { 200 compatible = "st,stm32mp13-i2c"; 201 reg = <0x4c006000 0x400>; 202 interrupt-names = "event", "error"; 203 interrupts-extended = <&exti 25 IRQ_TYPE_LEVEL_HIGH>, 204 <&intc GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>; 205 clocks = <&rcc I2C5_K>; 206 resets = <&rcc I2C5_R>; 207 #address-cells = <1>; 208 #size-cells = <0>; 209 st,syscfg-fmp = <&syscfg 0x4 0x10>; 210 i2c-analog-filter; 211 status = "disabled"; 212 }; 213 214 rcc: rcc@50000000 { 215 compatible = "st,stm32mp13-rcc", "syscon"; 216 reg = <0x50000000 0x1000>; 217 #address-cells = <1>; 218 #size-cells = <0>; 219 #clock-cells = <1>; 220 #reset-cells = <1>; 221 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 222 secure-interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; 223 secure-interrupt-names = "wakeup"; 224 }; 225 226 pwr_regulators: pwr@50001000 { 227 compatible = "st,stm32mp1,pwr-reg"; 228 reg = <0x50001000 0x10>; 229 230 reg11: reg11 { 231 regulator-name = "reg11"; 232 regulator-min-microvolt = <1100000>; 233 regulator-max-microvolt = <1100000>; 234 }; 235 236 reg18: reg18 { 237 regulator-name = "reg18"; 238 regulator-min-microvolt = <1800000>; 239 regulator-max-microvolt = <1800000>; 240 }; 241 242 usb33: usb33 { 243 regulator-name = "usb33"; 244 regulator-min-microvolt = <3300000>; 245 regulator-max-microvolt = <3300000>; 246 }; 247 }; 248 249 exti: interrupt-controller@5000d000 { 250 compatible = "st,stm32mp13-exti", "syscon"; 251 interrupt-controller; 252 #interrupt-cells = <2>; 253 reg = <0x5000d000 0x400>; 254 }; 255 256 syscfg: syscon@50020000 { 257 compatible = "st,stm32mp157-syscfg", "syscon"; 258 reg = <0x50020000 0x400>; 259 clocks = <&rcc SYSCFG>; 260 }; 261 262 hash: hash@54003000 { 263 compatible = "st,stm32mp13-hash"; 264 reg = <0x54003000 0x400>; 265 clocks = <&rcc HASH1>; 266 resets = <&rcc HASH1_R>; 267 status = "disabled"; 268 }; 269 270 rng: rng@54004000 { 271 compatible = "st,stm32mp13-rng"; 272 reg = <0x54004000 0x400>; 273 clocks = <&rcc RNG1_K>; 274 resets = <&rcc RNG1_R>; 275 status = "disabled"; 276 }; 277 278 fmc: memory-controller@58002000 { 279 #address-cells = <2>; 280 #size-cells = <1>; 281 compatible = "st,stm32mp1-fmc2-ebi"; 282 reg = <0x58002000 0x1000>; 283 clocks = <&rcc FMC_K>; 284 resets = <&rcc FMC_R>; 285 status = "disabled"; 286 287 ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */ 288 <1 0 0x64000000 0x04000000>, /* EBI CS 2 */ 289 <2 0 0x68000000 0x04000000>, /* EBI CS 3 */ 290 <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */ 291 <4 0 0x80000000 0x10000000>; /* NAND */ 292 293 nand-controller@4,0 { 294 #address-cells = <1>; 295 #size-cells = <0>; 296 compatible = "st,stm32mp1-fmc2-nfc"; 297 reg = <4 0x00000000 0x1000>, 298 <4 0x08010000 0x1000>, 299 <4 0x08020000 0x1000>, 300 <4 0x01000000 0x1000>, 301 <4 0x09010000 0x1000>, 302 <4 0x09020000 0x1000>; 303 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; 304 status = "disabled"; 305 }; 306 }; 307 308 qspi: spi@58003000 { 309 compatible = "st,stm32f469-qspi"; 310 reg = <0x58003000 0x1000>, <0x70000000 0x10000000>; 311 reg-names = "qspi", "qspi_mm"; 312 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; 313 clocks = <&rcc QSPI_K>; 314 resets = <&rcc QSPI_R>; 315 status = "disabled"; 316 }; 317 318 sdmmc1: mmc@58005000 { 319 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell"; 320 arm,primecell-periphid = <0x20253180>; 321 reg = <0x58005000 0x1000>, <0x58006000 0x1000>; 322 clocks = <&rcc SDMMC1_K>; 323 clock-names = "apb_pclk"; 324 resets = <&rcc SDMMC1_R>; 325 cap-sd-highspeed; 326 cap-mmc-highspeed; 327 max-frequency = <130000000>; 328 status = "disabled"; 329 }; 330 331 sdmmc2: mmc@58007000 { 332 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell"; 333 arm,primecell-periphid = <0x20253180>; 334 reg = <0x58007000 0x1000>, <0x58008000 0x1000>; 335 clocks = <&rcc SDMMC2_K>; 336 clock-names = "apb_pclk"; 337 resets = <&rcc SDMMC2_R>; 338 cap-sd-highspeed; 339 cap-mmc-highspeed; 340 max-frequency = <130000000>; 341 status = "disabled"; 342 }; 343 344 usbh_ohci: usbh-ohci@5800c000 { 345 compatible = "generic-ohci"; 346 reg = <0x5800c000 0x1000>; 347 clocks = <&rcc USBH>; 348 resets = <&rcc USBH_R>; 349 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; 350 status = "disabled"; 351 }; 352 353 usbh_ehci: usbh-ehci@5800d000 { 354 compatible = "generic-ehci"; 355 reg = <0x5800d000 0x1000>; 356 clocks = <&rcc USBH>; 357 resets = <&rcc USBH_R>; 358 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; 359 companion = <&usbh_ohci>; 360 status = "disabled"; 361 }; 362 363 iwdg2: watchdog@5a002000 { 364 compatible = "st,stm32mp1-iwdg"; 365 reg = <0x5a002000 0x400>; 366 clocks = <&rcc IWDG2>, <&rcc CK_LSI>; 367 clock-names = "pclk", "lsi"; 368 status = "disabled"; 369 }; 370 371 ddr: ddr@5a003000 { 372 compatible = "st,stm32mp13-ddr"; 373 reg = <0x5a003000 0x550>, <0x5a004000 0x234>; 374 clocks = <&rcc AXIDCG>, 375 <&rcc DDRC1>, 376 <&rcc DDRPHYC>, 377 <&rcc DDRCAPB>, 378 <&rcc DDRPHYCAPB>; 379 clock-names = "axidcg", 380 "ddrc1", 381 "ddrphyc", 382 "ddrcapb", 383 "ddrphycapb"; 384 }; 385 386 usbphyc: usbphyc@5a006000 { 387 #address-cells = <1>; 388 #size-cells = <0>; 389 #clock-cells = <0>; 390 compatible = "st,stm32mp1-usbphyc"; 391 reg = <0x5a006000 0x1000>; 392 clocks = <&rcc USBPHY_K>; 393 resets = <&rcc USBPHY_R>; 394 vdda1v1-supply = <®11>; 395 vdda1v8-supply = <®18>; 396 status = "disabled"; 397 398 usbphyc_port0: usb-phy@0 { 399 #phy-cells = <0>; 400 reg = <0>; 401 }; 402 403 usbphyc_port1: usb-phy@1 { 404 #phy-cells = <1>; 405 reg = <1>; 406 }; 407 }; 408 409 iwdg1: watchdog@5c003000 { 410 compatible = "st,stm32mp1-iwdg"; 411 reg = <0x5c003000 0x400>; 412 interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>; 413 clocks = <&rcc IWDG1>, <&rcc CK_LSI>; 414 clock-names = "pclk", "lsi"; 415 status = "disabled"; 416 }; 417 418 bsec: efuse@5c005000 { 419 compatible = "st,stm32mp15-bsec"; 420 reg = <0x5c005000 0x400>; 421 #address-cells = <1>; 422 #size-cells = <1>; 423 424 cfg0_otp: cfg0_otp@0 { 425 reg = <0x0 0x2>; 426 }; 427 part_number_otp: part_number_otp@4 { 428 reg = <0x4 0x2>; 429 }; 430 monotonic_otp: monotonic_otp@10 { 431 reg = <0x10 0x4>; 432 }; 433 nand_otp: cfg9_otp@24 { 434 reg = <0x24 0x4>; 435 }; 436 nand2_otp: cfg10_otp@28 { 437 reg = <0x28 0x4>; 438 }; 439 uid_otp: uid_otp@34 { 440 reg = <0x34 0xc>; 441 }; 442 hw2_otp: hw2_otp@48 { 443 reg = <0x48 0x4>; 444 }; 445 ts_cal1: calib@5c { 446 reg = <0x5c 0x2>; 447 }; 448 ts_cal2: calib@5e { 449 reg = <0x5e 0x2>; 450 }; 451 pkh_otp: pkh_otp@60 { 452 reg = <0x60 0x20>; 453 }; 454 mac_addr: mac_addr@e4 { 455 reg = <0xe4 0xc>; 456 st,non-secure-otp; 457 }; 458 enckey_otp: enckey_otp@170 { 459 reg = <0x170 0x10>; 460 }; 461 }; 462 /* 463 * Break node order to solve dependency probe issue between 464 * pinctrl and exti. 465 */ 466 pinctrl: pinctrl@50002000 { 467 #address-cells = <1>; 468 #size-cells = <1>; 469 compatible = "st,stm32mp135-pinctrl"; 470 ranges = <0 0x50002000 0x8400>; 471 interrupt-parent = <&exti>; 472 st,syscfg = <&exti 0x60 0xff>; 473 pins-are-numbered; 474 475 gpioa: gpio@50002000 { 476 gpio-controller; 477 #gpio-cells = <2>; 478 interrupt-controller; 479 #interrupt-cells = <2>; 480 reg = <0x0 0x400>; 481 clocks = <&rcc GPIOA>; 482 st,bank-name = "GPIOA"; 483 ngpios = <16>; 484 gpio-ranges = <&pinctrl 0 0 16>; 485 }; 486 487 gpiob: gpio@50003000 { 488 gpio-controller; 489 #gpio-cells = <2>; 490 interrupt-controller; 491 #interrupt-cells = <2>; 492 reg = <0x1000 0x400>; 493 clocks = <&rcc GPIOB>; 494 st,bank-name = "GPIOB"; 495 ngpios = <16>; 496 gpio-ranges = <&pinctrl 0 16 16>; 497 }; 498 499 gpioc: gpio@50004000 { 500 gpio-controller; 501 #gpio-cells = <2>; 502 interrupt-controller; 503 #interrupt-cells = <2>; 504 reg = <0x2000 0x400>; 505 clocks = <&rcc GPIOC>; 506 st,bank-name = "GPIOC"; 507 ngpios = <16>; 508 gpio-ranges = <&pinctrl 0 32 16>; 509 }; 510 511 gpiod: gpio@50005000 { 512 gpio-controller; 513 #gpio-cells = <2>; 514 interrupt-controller; 515 #interrupt-cells = <2>; 516 reg = <0x3000 0x400>; 517 clocks = <&rcc GPIOD>; 518 st,bank-name = "GPIOD"; 519 ngpios = <16>; 520 gpio-ranges = <&pinctrl 0 48 16>; 521 }; 522 523 gpioe: gpio@50006000 { 524 gpio-controller; 525 #gpio-cells = <2>; 526 interrupt-controller; 527 #interrupt-cells = <2>; 528 reg = <0x4000 0x400>; 529 clocks = <&rcc GPIOE>; 530 st,bank-name = "GPIOE"; 531 ngpios = <16>; 532 gpio-ranges = <&pinctrl 0 64 16>; 533 }; 534 535 gpiof: gpio@50007000 { 536 gpio-controller; 537 #gpio-cells = <2>; 538 interrupt-controller; 539 #interrupt-cells = <2>; 540 reg = <0x5000 0x400>; 541 clocks = <&rcc GPIOF>; 542 st,bank-name = "GPIOF"; 543 ngpios = <16>; 544 gpio-ranges = <&pinctrl 0 80 16>; 545 }; 546 547 gpiog: gpio@50008000 { 548 gpio-controller; 549 #gpio-cells = <2>; 550 interrupt-controller; 551 #interrupt-cells = <2>; 552 reg = <0x6000 0x400>; 553 clocks = <&rcc GPIOG>; 554 st,bank-name = "GPIOG"; 555 ngpios = <16>; 556 gpio-ranges = <&pinctrl 0 96 16>; 557 }; 558 559 gpioh: gpio@50009000 { 560 gpio-controller; 561 #gpio-cells = <2>; 562 interrupt-controller; 563 #interrupt-cells = <2>; 564 reg = <0x7000 0x400>; 565 clocks = <&rcc GPIOH>; 566 st,bank-name = "GPIOH"; 567 ngpios = <15>; 568 gpio-ranges = <&pinctrl 0 112 15>; 569 }; 570 571 gpioi: gpio@5000a000 { 572 gpio-controller; 573 #gpio-cells = <2>; 574 interrupt-controller; 575 #interrupt-cells = <2>; 576 reg = <0x8000 0x400>; 577 clocks = <&rcc GPIOI>; 578 st,bank-name = "GPIOI"; 579 ngpios = <8>; 580 gpio-ranges = <&pinctrl 0 128 8>; 581 }; 582 }; 583 }; 584}; 585