1/* 2 * Copyright (c) 2019 Linaro Limited 3 * Copyright (c) 2019 Centaur Analytics, Inc 4 * Copyright (c) 2020 Teslabs Engineering S.L. 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 */ 8 9#include <arm/armv7-m.dtsi> 10#include <zephyr/dt-bindings/clock/stm32h7_clock.h> 11#include <zephyr/dt-bindings/gpio/gpio.h> 12#include <zephyr/dt-bindings/i2c/i2c.h> 13#include <zephyr/dt-bindings/pwm/pwm.h> 14#include <zephyr/dt-bindings/pwm/stm32_pwm.h> 15#include <zephyr/dt-bindings/dma/stm32_dma.h> 16#include <zephyr/dt-bindings/adc/stm32h7_adc.h> 17#include <zephyr/dt-bindings/reset/stm32h7_reset.h> 18#include <zephyr/dt-bindings/adc/adc.h> 19#include <zephyr/dt-bindings/memory-controller/stm32-fmc-sdram.h> 20#include <zephyr/dt-bindings/memory-attr/memory-attr.h> 21#include <zephyr/dt-bindings/memory-attr/memory-attr-arm.h> 22#include <freq.h> 23 24/ { 25 chosen { 26 zephyr,entropy = &rng; 27 zephyr,flash-controller = &flash; 28 }; 29 30 cpus { 31 #address-cells = <1>; 32 #size-cells = <0>; 33 34 cpu0: cpu@0 { 35 device_type = "cpu"; 36 compatible = "arm,cortex-m7"; 37 reg = <0>; 38 #address-cells = <1>; 39 #size-cells = <1>; 40 41 mpu: mpu@e000ed90 { 42 compatible = "arm,armv7m-mpu"; 43 reg = <0xe000ed90 0x40>; 44 arm,num-mpu-regions = <16>; 45 }; 46 }; 47 }; 48 49 quadspi_memory: memory@90000000 { 50 compatible = "zephyr,memory-region", "mmio-sram"; 51 reg = <0x90000000 DT_SIZE_M(256)>; 52 zephyr,memory-region = "QSPI"; 53 zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_EXTMEM) )>; 54 }; 55 56 clocks { 57 #address-cells = <1>; 58 #size-cells = <0>; 59 60 clk_hse: clk-hse { 61 #clock-cells = <0>; 62 compatible = "st,stm32-hse-clock"; 63 status = "disabled"; 64 }; 65 66 clk_hsi: clk-hsi { 67 #clock-cells = <0>; 68 compatible = "st,stm32h7-hsi-clock"; 69 clock-frequency = <DT_FREQ_M(64)>; 70 status = "disabled"; 71 }; 72 73 clk_hsi48: clk-hsi48 { 74 #clock-cells = <0>; 75 compatible = "fixed-clock"; 76 clock-frequency = <DT_FREQ_M(48)>; 77 status = "disabled"; 78 }; 79 80 clk_csi: clk-csi { 81 #clock-cells = <0>; 82 compatible = "fixed-clock"; 83 clock-frequency = <DT_FREQ_M(4)>; 84 status = "disabled"; 85 }; 86 87 clk_lse: clk-lse { 88 #clock-cells = <0>; 89 compatible = "st,stm32-lse-clock"; 90 clock-frequency = <32768>; 91 driving-capability = <0>; 92 status = "disabled"; 93 }; 94 95 clk_lsi: clk-lsi { 96 #clock-cells = <0>; 97 compatible = "fixed-clock"; 98 clock-frequency = <DT_FREQ_K(32)>; 99 status = "disabled"; 100 }; 101 102 pll: pll@0 { 103 #clock-cells = <0>; 104 compatible = "st,stm32h7-pll-clock"; 105 reg = <0>; 106 status = "disabled"; 107 }; 108 109 pll2: pll@1 { 110 #clock-cells = <0>; 111 compatible = "st,stm32h7-pll-clock"; 112 reg = <1>; 113 status = "disabled"; 114 }; 115 116 pll3: pll@2 { 117 #clock-cells = <0>; 118 compatible = "st,stm32h7-pll-clock"; 119 reg = <2>; 120 status = "disabled"; 121 }; 122 123 perck: perck { 124 #clock-cells = <0>; 125 compatible = "st,stm32-clock-mux"; 126 status = "disabled"; 127 }; 128 }; 129 130 soc { 131 flash: flash-controller@52002000 { 132 compatible = "st,stm32-flash-controller", "st,stm32h7-flash-controller"; 133 reg = <0x52002000 0x400>; 134 interrupts = <4 0>; 135 clocks = <&rcc STM32_CLOCK_BUS_AHB3 0x00000100>; 136 137 #address-cells = <1>; 138 #size-cells = <1>; 139 }; 140 141 rcc: rcc@58024400 { 142 compatible = "st,stm32h7-rcc"; 143 #clock-cells = <2>; 144 reg = <0x58024400 0x400>; 145 146 rctl: reset-controller { 147 compatible = "st,stm32-rcc-rctl"; 148 #reset-cells = <1>; 149 }; 150 }; 151 152 exti: interrupt-controller@58000000 { 153 compatible = "st,stm32-exti"; 154 interrupt-controller; 155 #interrupt-cells = <1>; 156 #address-cells = <1>; 157 reg = <0x58000000 0x400>; 158 num-lines = <16>; 159 interrupts = <6 0>, <7 0>, <8 0>, <9 0>, 160 <10 0>, <23 0>, <40 0>; 161 interrupt-names = "line0", "line1", "line2", "line3", 162 "line4", "line5-9", "line10-15"; 163 line-ranges = <0 1>, <1 1>, <2 1>, <3 1>, 164 <4 1>, <5 5>, <10 6>; 165 }; 166 167 pinctrl: pin-controller@58020000 { 168 compatible = "st,stm32-pinctrl"; 169 #address-cells = <1>; 170 #size-cells = <1>; 171 reg = <0x58020000 0x2400>; 172 173 gpioa: gpio@58020000 { 174 compatible = "st,stm32-gpio"; 175 gpio-controller; 176 #gpio-cells = <2>; 177 reg = <0x58020000 0x400>; 178 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000001>; 179 }; 180 181 gpiob: gpio@58020400 { 182 compatible = "st,stm32-gpio"; 183 gpio-controller; 184 #gpio-cells = <2>; 185 reg = <0x58020400 0x400>; 186 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000002>; 187 }; 188 189 gpioc: gpio@58020800 { 190 compatible = "st,stm32-gpio"; 191 gpio-controller; 192 #gpio-cells = <2>; 193 reg = <0x58020800 0x400>; 194 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000004>; 195 }; 196 197 gpiod: gpio@58020C00 { 198 compatible = "st,stm32-gpio"; 199 gpio-controller; 200 #gpio-cells = <2>; 201 reg = <0x58020C00 0x400>; 202 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000008>; 203 }; 204 205 gpioe: gpio@58021000 { 206 compatible = "st,stm32-gpio"; 207 gpio-controller; 208 #gpio-cells = <2>; 209 reg = <0x58021000 0x400>; 210 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000010>; 211 }; 212 213 gpiof: gpio@58021400 { 214 compatible = "st,stm32-gpio"; 215 gpio-controller; 216 #gpio-cells = <2>; 217 reg = <0x58021400 0x400>; 218 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000020>; 219 }; 220 221 gpiog: gpio@58021800 { 222 compatible = "st,stm32-gpio"; 223 gpio-controller; 224 #gpio-cells = <2>; 225 reg = <0x58021800 0x400>; 226 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000040>; 227 }; 228 229 gpioh: gpio@58021C00 { 230 compatible = "st,stm32-gpio"; 231 gpio-controller; 232 #gpio-cells = <2>; 233 reg = <0x58021C00 0x400>; 234 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000080>; 235 }; 236 237 gpioi: gpio@58022000 { 238 compatible = "st,stm32-gpio"; 239 gpio-controller; 240 #gpio-cells = <2>; 241 reg = <0x58022000 0x400>; 242 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000100>; 243 }; 244 245 gpioj: gpio@58022400 { 246 compatible = "st,stm32-gpio"; 247 gpio-controller; 248 #gpio-cells = <2>; 249 reg = <0x58022400 0x400>; 250 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000200>; 251 }; 252 253 gpiok: gpio@58022800 { 254 compatible = "st,stm32-gpio"; 255 gpio-controller; 256 #gpio-cells = <2>; 257 reg = <0x58022800 0x400>; 258 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00000400>; 259 }; 260 }; 261 262 iwdg: iwdg1: watchdog@58004800 { 263 compatible = "st,stm32-watchdog"; 264 reg = <0x58004800 0x400>; 265 status = "disabled"; 266 }; 267 268 wwdg: wwdg1: watchdog@50003000 { 269 compatible = "st,stm32-window-watchdog"; 270 reg = <0x50003000 0x1000>; 271 clocks = <&rcc STM32_CLOCK_BUS_APB3 0x00000040>; 272 interrupts = <0 7>; 273 status = "disabled"; 274 }; 275 276 usart1: serial@40011000 { 277 compatible = "st,stm32-usart", "st,stm32-uart"; 278 reg = <0x40011000 0x400>; 279 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00000010>; 280 resets = <&rctl STM32_RESET(APB2, 4U)>; 281 interrupts = <37 0>; 282 status = "disabled"; 283 }; 284 usart2: serial@40004400 { 285 compatible = "st,stm32-usart", "st,stm32-uart"; 286 reg = <0x40004400 0x400>; 287 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00020000>; 288 resets = <&rctl STM32_RESET(APB1L, 17U)>; 289 interrupts = <38 0>; 290 status = "disabled"; 291 }; 292 usart3: serial@40004800 { 293 compatible = "st,stm32-usart", "st,stm32-uart"; 294 reg = <0x40004800 0x400>; 295 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00040000>; 296 resets = <&rctl STM32_RESET(APB1L, 18U)>; 297 interrupts = <39 0>; 298 status = "disabled"; 299 }; 300 uart4: serial@40004c00 { 301 compatible ="st,stm32-uart"; 302 reg = <0x40004c00 0x400>; 303 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00080000>; 304 resets = <&rctl STM32_RESET(APB1L, 19U)>; 305 interrupts = <52 0>; 306 status = "disabled"; 307 }; 308 uart5: serial@40005000 { 309 compatible = "st,stm32-uart"; 310 reg = <0x40005000 0x400>; 311 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00100000>; 312 resets = <&rctl STM32_RESET(APB1L, 20U)>; 313 interrupts = <53 0>; 314 status = "disabled"; 315 }; 316 usart6: serial@40011400 { 317 compatible = "st,stm32-usart", "st,stm32-uart"; 318 reg = <0x40011400 0x400>; 319 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00000020>; 320 resets = <&rctl STM32_RESET(APB2, 5U)>; 321 interrupts = <71 0>; 322 status = "disabled"; 323 }; 324 uart7: serial@40007800 { 325 compatible = "st,stm32-uart"; 326 reg = <0x40007800 0x400>; 327 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x40000000>; 328 resets = <&rctl STM32_RESET(APB1L, 30U)>; 329 interrupts = <82 0>; 330 status = "disabled"; 331 }; 332 uart8: serial@40007c00 { 333 compatible = "st,stm32-uart"; 334 reg = <0x40007c00 0x400>; 335 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x80000000>; 336 resets = <&rctl STM32_RESET(APB1L, 31U)>; 337 interrupts = <83 0>; 338 status = "disabled"; 339 }; 340 341 lpuart1: serial@58000c00 { 342 compatible = "st,stm32-lpuart", "st,stm32-uart"; 343 reg = <0x58000c00 0x400>; 344 clocks = <&rcc STM32_CLOCK_BUS_APB4 0x00000008>; 345 resets = <&rctl STM32_RESET(APB4, 3U)>; 346 interrupts = <142 0>; 347 status = "disabled"; 348 }; 349 350 rtc: rtc@58004000 { 351 compatible = "st,stm32-rtc"; 352 reg = <0x58004000 0x400>; 353 interrupts = <41 0>; 354 clocks = <&rcc STM32_CLOCK_BUS_APB4 0x00010000>; 355 prescaler = <32768>; 356 status = "disabled"; 357 }; 358 359 i2c1: i2c@40005400 { 360 compatible = "st,stm32-i2c-v2"; 361 clock-frequency = <I2C_BITRATE_STANDARD>; 362 #address-cells = <1>; 363 #size-cells = <0>; 364 reg = <0x40005400 0x400>; 365 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00200000>; 366 interrupts = <31 0>, <32 0>; 367 interrupt-names = "event", "error"; 368 status = "disabled"; 369 }; 370 371 i2c2: i2c@40005800 { 372 compatible = "st,stm32-i2c-v2"; 373 clock-frequency = <I2C_BITRATE_STANDARD>; 374 #address-cells = <1>; 375 #size-cells = <0>; 376 reg = <0x40005800 0x400>; 377 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00400000>; 378 interrupts = <33 0>, <34 0>; 379 interrupt-names = "event", "error"; 380 status = "disabled"; 381 }; 382 383 i2c3: i2c@40005c00 { 384 compatible = "st,stm32-i2c-v2"; 385 clock-frequency = <I2C_BITRATE_STANDARD>; 386 #address-cells = <1>; 387 #size-cells = <0>; 388 reg = <0x40005c00 0x400>; 389 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00800000>; 390 interrupts = <72 0>, <73 0>; 391 interrupt-names = "event", "error"; 392 status = "disabled"; 393 }; 394 395 i2c4: i2c@58001c00 { 396 compatible = "st,stm32-i2c-v2"; 397 clock-frequency = <I2C_BITRATE_STANDARD>; 398 #address-cells = <1>; 399 #size-cells = <0>; 400 reg = <0x58001c00 0x400>; 401 clocks = <&rcc STM32_CLOCK_BUS_APB4 0x00000080>; 402 interrupts = <95 0>, <96 0>; 403 interrupt-names = "event", "error"; 404 status = "disabled"; 405 }; 406 407 spi1: spi@40013000 { 408 compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"; 409 #address-cells = <1>; 410 #size-cells = <0>; 411 reg = <0x40013000 0x400>; 412 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00001000>, 413 <&rcc STM32_SRC_PLL1_Q SPI123_SEL(0)>; 414 interrupts = <35 0>; 415 status = "disabled"; 416 }; 417 418 spi2: spi@40003800 { 419 compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"; 420 #address-cells = <1>; 421 #size-cells = <0>; 422 reg = <0x40003800 0x400>; 423 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00004000>, 424 <&rcc STM32_SRC_PLL1_Q SPI123_SEL(0)>; 425 interrupts = <36 0>; 426 status = "disabled"; 427 }; 428 429 spi3: spi@40003c00 { 430 compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"; 431 #address-cells = <1>; 432 #size-cells = <0>; 433 reg = <0x40003c00 0x400>; 434 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00008000>, 435 <&rcc STM32_SRC_PLL1_Q SPI123_SEL(0)>; 436 interrupts = <51 0>; 437 status = "disabled"; 438 }; 439 440 spi4: spi@40013400 { 441 compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"; 442 #address-cells = <1>; 443 #size-cells = <0>; 444 reg = <0x40013400 0x400>; 445 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00002000>; 446 interrupts = <84 0>; 447 status = "disabled"; 448 }; 449 450 spi5: spi@40015000 { 451 compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"; 452 #address-cells = <1>; 453 #size-cells = <0>; 454 reg = <0x40015000 0x400>; 455 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00100000>; 456 interrupts = <85 0>; 457 status = "disabled"; 458 }; 459 460 spi6: spi@58001400 { 461 compatible = "st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"; 462 #address-cells = <1>; 463 #size-cells = <0>; 464 reg = <0x58001400 0x400>; 465 clocks = <&rcc STM32_CLOCK_BUS_APB4 0x00000020>; 466 interrupts = <86 0>; 467 status = "disabled"; 468 }; 469 470 fdcan1: can@4000a000 { 471 compatible = "st,stm32h7-fdcan"; 472 reg = <0x4000a000 0x400>, <0x4000ac00 0x350>; 473 reg-names = "m_can", "message_ram"; 474 clocks = <&rcc STM32_CLOCK_BUS_APB1_2 0x00000100>; 475 interrupts = <19 0>, <21 0>, <63 0>; 476 interrupt-names = "LINE_0", "LINE_1", "CALIB"; 477 bosch,mram-cfg = <0x0 28 8 3 3 0 3 3>; 478 sample-point = <875>; 479 sample-point-data = <875>; 480 status = "disabled"; 481 }; 482 483 fdcan2: can@4000a400 { 484 compatible = "st,stm32h7-fdcan"; 485 reg = <0x4000a400 0x400>, <0x4000ac00 0x6a0>; 486 reg-names = "m_can", "message_ram"; 487 clocks = <&rcc STM32_CLOCK_BUS_APB1_2 0x00000100>; 488 interrupts = <20 0>, <22 0>, <63 0>; 489 interrupt-names = "LINE_0", "LINE_1", "CALIB"; 490 bosch,mram-cfg = <0x350 28 8 3 3 0 3 3>; 491 sample-point = <875>; 492 sample-point-data = <875>; 493 status = "disabled"; 494 }; 495 496 timers1: timers@40010000 { 497 compatible = "st,stm32-timers"; 498 reg = <0x40010000 0x400>; 499 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00000001>; 500 resets = <&rctl STM32_RESET(APB2, 0U)>; 501 interrupts = <24 0>, <25 0>, <26 0>, <27 0>; 502 interrupt-names = "brk", "up", "trgcom", "cc"; 503 st,prescaler = <0>; 504 status = "disabled"; 505 506 pwm { 507 compatible = "st,stm32-pwm"; 508 status = "disabled"; 509 #pwm-cells = <3>; 510 }; 511 }; 512 513 timers2: timers@40000000 { 514 compatible = "st,stm32-timers"; 515 reg = <0x40000000 0x400>; 516 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000001>; 517 resets = <&rctl STM32_RESET(APB1L, 0U)>; 518 interrupts = <28 0>; 519 interrupt-names = "global"; 520 st,prescaler = <0>; 521 status = "disabled"; 522 523 pwm { 524 compatible = "st,stm32-pwm"; 525 status = "disabled"; 526 #pwm-cells = <3>; 527 }; 528 529 counter { 530 compatible = "st,stm32-counter"; 531 status = "disabled"; 532 }; 533 }; 534 535 timers3: timers@40000400 { 536 compatible = "st,stm32-timers"; 537 reg = <0x40000400 0x400>; 538 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000002>; 539 resets = <&rctl STM32_RESET(APB1L, 1U)>; 540 interrupts = <29 0>; 541 interrupt-names = "global"; 542 st,prescaler = <0>; 543 status = "disabled"; 544 545 pwm { 546 compatible = "st,stm32-pwm"; 547 status = "disabled"; 548 #pwm-cells = <3>; 549 }; 550 551 counter { 552 compatible = "st,stm32-counter"; 553 status = "disabled"; 554 }; 555 }; 556 557 timers4: timers@40000800 { 558 compatible = "st,stm32-timers"; 559 reg = <0x40000800 0x400>; 560 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000004>; 561 resets = <&rctl STM32_RESET(APB1L, 2U)>; 562 interrupts = <30 0>; 563 interrupt-names = "global"; 564 st,prescaler = <0>; 565 status = "disabled"; 566 567 pwm { 568 compatible = "st,stm32-pwm"; 569 status = "disabled"; 570 #pwm-cells = <3>; 571 }; 572 573 counter { 574 compatible = "st,stm32-counter"; 575 status = "disabled"; 576 }; 577 }; 578 579 timers5: timers@40000c00 { 580 compatible = "st,stm32-timers"; 581 reg = <0x40000c00 0x400>; 582 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000008>; 583 resets = <&rctl STM32_RESET(APB1L, 3U)>; 584 interrupts = <50 0>; 585 interrupt-names = "global"; 586 st,prescaler = <0>; 587 status = "disabled"; 588 589 pwm { 590 compatible = "st,stm32-pwm"; 591 status = "disabled"; 592 #pwm-cells = <3>; 593 }; 594 595 counter { 596 compatible = "st,stm32-counter"; 597 status = "disabled"; 598 }; 599 }; 600 601 timers6: timers@40001000 { 602 compatible = "st,stm32-timers"; 603 reg = <0x40001000 0x400>; 604 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000010>; 605 resets = <&rctl STM32_RESET(APB1L, 4U)>; 606 interrupts = <54 0>; 607 interrupt-names = "global"; 608 st,prescaler = <0>; 609 status = "disabled"; 610 611 counter { 612 compatible = "st,stm32-counter"; 613 status = "disabled"; 614 }; 615 }; 616 617 timers7: timers@40001400 { 618 compatible = "st,stm32-timers"; 619 reg = <0x40001400 0x400>; 620 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000020>; 621 resets = <&rctl STM32_RESET(APB1L, 5U)>; 622 interrupts = <55 0>; 623 interrupt-names = "global"; 624 st,prescaler = <0>; 625 status = "disabled"; 626 627 counter { 628 compatible = "st,stm32-counter"; 629 status = "disabled"; 630 }; 631 }; 632 633 timers8: timers@40010400 { 634 compatible = "st,stm32-timers"; 635 reg = <0x40010400 0x400>; 636 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00000002>; 637 resets = <&rctl STM32_RESET(APB2, 1U)>; 638 interrupts = <43 0>, <44 0>, <45 0>, <46 0>; 639 interrupt-names = "brk", "up", "trgcom", "cc"; 640 st,prescaler = <0>; 641 status = "disabled"; 642 643 pwm { 644 compatible = "st,stm32-pwm"; 645 status = "disabled"; 646 #pwm-cells = <3>; 647 }; 648 }; 649 650 timers12: timers@40001800 { 651 compatible = "st,stm32-timers"; 652 reg = <0x40001800 0x400>; 653 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000040>; 654 resets = <&rctl STM32_RESET(APB1L, 6U)>; 655 interrupts = <43 0>; 656 interrupt-names = "global"; 657 st,prescaler = <0>; 658 status = "disabled"; 659 660 pwm { 661 compatible = "st,stm32-pwm"; 662 status = "disabled"; 663 #pwm-cells = <3>; 664 }; 665 666 counter { 667 compatible = "st,stm32-counter"; 668 status = "disabled"; 669 }; 670 }; 671 672 timers13: timers@40001c00 { 673 compatible = "st,stm32-timers"; 674 reg = <0x40001c00 0x400>; 675 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000080>; 676 resets = <&rctl STM32_RESET(APB1L, 7U)>; 677 interrupts = <44 0>; 678 interrupt-names = "global"; 679 st,prescaler = <0>; 680 status = "disabled"; 681 682 pwm { 683 compatible = "st,stm32-pwm"; 684 status = "disabled"; 685 #pwm-cells = <3>; 686 }; 687 688 counter { 689 compatible = "st,stm32-counter"; 690 status = "disabled"; 691 }; 692 }; 693 694 timers14: timers@40002000 { 695 compatible = "st,stm32-timers"; 696 reg = <0x40002000 0x400>; 697 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000100>; 698 resets = <&rctl STM32_RESET(APB1L, 8U)>; 699 interrupts = <45 0>; 700 interrupt-names = "global"; 701 st,prescaler = <0>; 702 status = "disabled"; 703 704 pwm { 705 compatible = "st,stm32-pwm"; 706 status = "disabled"; 707 #pwm-cells = <3>; 708 }; 709 710 counter { 711 compatible = "st,stm32-counter"; 712 status = "disabled"; 713 }; 714 }; 715 716 timers15: timers@40014000 { 717 compatible = "st,stm32-timers"; 718 reg = <0x40014000 0x400>; 719 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00010000>; 720 resets = <&rctl STM32_RESET(APB2, 16U)>; 721 interrupts = <116 0>; 722 interrupt-names = "global"; 723 st,prescaler = <0>; 724 status = "disabled"; 725 726 pwm { 727 compatible = "st,stm32-pwm"; 728 status = "disabled"; 729 #pwm-cells = <3>; 730 }; 731 732 counter { 733 compatible = "st,stm32-counter"; 734 status = "disabled"; 735 }; 736 }; 737 738 timers16: timers@40014400 { 739 compatible = "st,stm32-timers"; 740 reg = <0x40014400 0x400>; 741 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00020000>; 742 resets = <&rctl STM32_RESET(APB2, 17U)>; 743 interrupts = <117 0>; 744 interrupt-names = "global"; 745 st,prescaler = <0>; 746 status = "disabled"; 747 748 pwm { 749 compatible = "st,stm32-pwm"; 750 status = "disabled"; 751 #pwm-cells = <3>; 752 }; 753 754 counter { 755 compatible = "st,stm32-counter"; 756 status = "disabled"; 757 }; 758 }; 759 760 timers17: timers@40014800 { 761 compatible = "st,stm32-timers"; 762 reg = <0x40014800 0x400>; 763 clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00040000>; 764 resets = <&rctl STM32_RESET(APB2, 18U)>; 765 interrupts = <118 0>; 766 interrupt-names = "global"; 767 st,prescaler = <0>; 768 status = "disabled"; 769 770 pwm { 771 compatible = "st,stm32-pwm"; 772 status = "disabled"; 773 #pwm-cells = <3>; 774 }; 775 776 counter { 777 compatible = "st,stm32-counter"; 778 status = "disabled"; 779 }; 780 }; 781 782 lptim1: timers@40002400 { 783 compatible = "st,stm32-lptim"; 784 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000200>; 785 #address-cells = <1>; 786 #size-cells = <0>; 787 reg = <0x40002400 0x400>; 788 interrupts = <93 1>; 789 interrupt-names = "wakeup"; 790 status = "disabled"; 791 }; 792 793 /* 794 * For devices STM32H742, H743, H750 & H753, revision Y only, 795 * resolution 14 and 12 shall be replaced, respectively, by 796 * STM32_ADC_RES(14, 0x01) and STM32_ADC_RES(12, 0x02) 797 * for all ADCs 798 * See RM0433 for more details 799 */ 800 adc1: adc@40022000 { 801 compatible = "st,stm32-adc"; 802 reg = <0x40022000 0x400>; 803 clocks = <&rcc STM32_CLOCK_BUS_AHB1 0x00000020>; 804 interrupts = <18 0>; 805 status = "disabled"; 806 #io-channel-cells = <1>; 807 resolutions = <STM32_ADC_RES(16, 0x00) 808 STM32_ADC_RES(14, 0x05) 809 STM32_ADC_RES(12, 0x06) 810 STM32_ADC_RES(10, 0x03) 811 STM32_ADC_RES(8, 0x07)>; 812 sampling-times = <2 3 9 17 33 65 388 811>; 813 st,adc-sequencer = <FULLY_CONFIGURABLE>; 814 }; 815 816 adc2: adc@40022100 { 817 compatible = "st,stm32-adc"; 818 reg = <0x40022100 0x400>; 819 clocks = <&rcc STM32_CLOCK_BUS_AHB1 0x00000020>; 820 interrupts = <18 0>; 821 status = "disabled"; 822 #io-channel-cells = <1>; 823 resolutions = <STM32_ADC_RES(16, 0x00) 824 STM32_ADC_RES(14, 0x05) 825 STM32_ADC_RES(12, 0x06) 826 STM32_ADC_RES(10, 0x03) 827 STM32_ADC_RES(8, 0x07)>; 828 sampling-times = <2 3 9 17 33 65 388 811>; 829 st,adc-sequencer = <FULLY_CONFIGURABLE>; 830 }; 831 832 /* dual mode: adc1 and adc2 coupled */ 833 adc1_2: adc@40022300 { 834 compatible = "st,stm32-adc"; 835 reg = <0x40022300 0x400>; 836 clocks = <&rcc STM32_CLOCK_BUS_AHB1 0x00000020>; 837 interrupts = <18 0>; 838 status = "disabled"; 839 #io-channel-cells = <1>; 840 resolutions = <STM32_ADC_RES(16, 0x00) 841 STM32_ADC_RES(14, 0x05) 842 STM32_ADC_RES(12, 0x06) 843 STM32_ADC_RES(10, 0x03) 844 STM32_ADC_RES(8, 0x07)>; 845 sampling-times = <2 3 9 17 33 65 388 811>; 846 st,adc-sequencer = <FULLY_CONFIGURABLE>; 847 }; 848 849 adc3: adc@58026000 { 850 compatible = "st,stm32-adc"; 851 reg = <0x58026000 0x400>; 852 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x01000000>; 853 interrupts = <127 0>; 854 status = "disabled"; 855 #io-channel-cells = <1>; 856 resolutions = <STM32_ADC_RES(16, 0x00) 857 STM32_ADC_RES(14, 0x05) 858 STM32_ADC_RES(12, 0x06) 859 STM32_ADC_RES(10, 0x03) 860 STM32_ADC_RES(8, 0x07)>; 861 sampling-times = <2 3 9 17 33 65 388 811>; 862 st,adc-sequencer = <FULLY_CONFIGURABLE>; 863 }; 864 865 dac1: dac@40007400 { 866 compatible = "st,stm32-dac"; 867 reg = <0x40007400 0x400>; 868 clocks = <&rcc STM32_CLOCK_BUS_APB1 0x20000000>; 869 status = "disabled"; 870 #io-channel-cells = <1>; 871 }; 872 873 dma1: dma@40020000 { 874 compatible = "st,stm32-dma-v1"; 875 #dma-cells = <4>; 876 reg = <0x40020000 0x400>; 877 interrupts = <11 0>, <12 0>, <13 0>, <14 0>, <15 0>, <16 0>, 878 <17 0>, <47 0>; 879 clocks = <&rcc STM32_CLOCK_BUS_AHB1 0x00000001>; 880 st,mem2mem; 881 dma-offset = <0>; 882 dma-requests = <8>; 883 status = "disabled"; 884 }; 885 886 dma2: dma@40020400 { 887 compatible = "st,stm32-dma-v1"; 888 #dma-cells = <4>; 889 reg = <0x40020400 0x400>; 890 interrupts = <56 0>, <57 0>, <58 0>, <59 0>, <60 0>, <68 0>, 891 <69 0>, <70 0>; 892 clocks = <&rcc STM32_CLOCK_BUS_AHB1 0x00000002>; 893 st,mem2mem; 894 dma-offset = <8>; 895 dma-requests = <8>; 896 status = "disabled"; 897 }; 898 899 bdma1: bdma@58025400 { 900 compatible = "st,stm32-bdma"; 901 #dma-cells = <4>; 902 reg = <0x58025400 0x400>; 903 interrupts = <129 0>, <130 0>, <131 0>, <132 0>, <133 0>, <134 0>, 904 <135 0>, <136 0>; 905 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00200000>; 906 st,mem2mem; 907 dma-offset = <0>; 908 dma-requests = <8>; 909 status = "disabled"; 910 }; 911 912 dmamux1: dmamux@40020800 { 913 compatible = "st,stm32-dmamux"; 914 #dma-cells = <3>; 915 reg = <0x40020800 0x400>; 916 interrupts = <102 0>; 917 /* dmamux1 has no dedicated clock, so we enable dma1 clock */ 918 clocks = <&rcc STM32_CLOCK_BUS_AHB1 0x00000001>; 919 dma-channels = <16>; 920 dma-generators = <8>; 921 status = "disabled"; 922 /* 923 * dma-requests is different among h7 socs, 924 * so we set in specific dtsi files 925 */ 926 }; 927 928 dmamux2: dmamux@58025800 { 929 compatible = "st,stm32-dmamux"; 930 #dma-cells = <3>; 931 reg = <0x58025800 0x400>; 932 interrupts = <128 0>; 933 /* dmamux2 has no dedicated clock, so we enable bdma clock */ 934 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x00200000>; 935 dma-channels = <8>; 936 dma-generators = <8>; 937 status = "disabled"; 938 /* 939 * dma-requests is different among h7 socs, 940 * so we set in specific dtsi files 941 */ 942 }; 943 944 rng: rng@48021800 { 945 compatible = "st,stm32-rng"; 946 reg = <0x48021800 0x400>; 947 clocks = <&rcc STM32_CLOCK_BUS_AHB2 0x00000040>; 948 interrupts = <80 0>; 949 status = "disabled"; 950 }; 951 952 sdmmc1: sdmmc@52007000 { 953 compatible = "st,stm32-sdmmc"; 954 reg = <0x52007000 0x400>; 955 clocks = <&rcc STM32_CLOCK_BUS_AHB3 0x00010000>, 956 <&rcc STM32_SRC_PLL1_Q SDMMC_SEL(0)>; 957 resets = <&rctl STM32_RESET(AHB3, 16U)>; 958 interrupts = <49 0>; 959 status = "disabled"; 960 }; 961 962 sdmmc2: sdmmc@48022400 { 963 compatible = "st,stm32-sdmmc"; 964 reg = <0x48022400 0x400>; 965 clocks = <&rcc STM32_CLOCK_BUS_AHB2 0x00000200>, 966 <&rcc STM32_SRC_PLL1_Q SDMMC_SEL(0)>; 967 resets = <&rctl STM32_RESET(AHB2, 9U)>; 968 interrupts = <124 0>; 969 status = "disabled"; 970 }; 971 972 mac: ethernet@40028000 { 973 compatible = "st,stm32-ethernet"; 974 reg = <0x40028000 0x8000>; 975 interrupts = <61 0>; 976 clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx"; 977 clocks = <&rcc STM32_CLOCK_BUS_AHB1 0x00008000>, 978 <&rcc STM32_CLOCK_BUS_AHB1 0x00010000>, 979 <&rcc STM32_CLOCK_BUS_AHB1 0x00020000>; 980 status = "disabled"; 981 }; 982 983 fmc: memory-controller@52004000 { 984 compatible = "st,stm32h7-fmc"; 985 reg = <0x52004000 0x400>; 986 clocks = <&rcc STM32_CLOCK_BUS_AHB3 0x00001000>; 987 status = "disabled"; 988 989 sdram: sdram { 990 compatible = "st,stm32-fmc-sdram"; 991 #address-cells = <1>; 992 #size-cells = <0>; 993 status = "disabled"; 994 }; 995 }; 996 997 backup_sram: memory@38800000 { 998 compatible = "zephyr,memory-region", "st,stm32-backup-sram"; 999 reg = <0x38800000 DT_SIZE_K(4)>; 1000 clocks = <&rcc STM32_CLOCK_BUS_AHB4 0x10000000>; 1001 zephyr,memory-region = "BACKUP_SRAM"; 1002 status = "disabled"; 1003 }; 1004 1005 quadspi: quadspi@52005000 { 1006 compatible = "st,stm32-qspi"; 1007 #address-cells = <0x1>; 1008 #size-cells = <0x0>; 1009 reg = <0x52005000 0x34>; 1010 interrupts = <92 0>; 1011 clocks = <&rcc STM32_CLOCK_BUS_AHB3 0x00004000>; 1012 status = "disabled"; 1013 }; 1014 }; 1015 1016 die_temp: dietemp { 1017 compatible = "st,stm32-temp-cal"; 1018 ts-cal1-addr = <0x1FF1E820>; 1019 ts-cal2-addr = <0x1FF1E840>; 1020 ts-cal1-temp = <30>; 1021 ts-cal2-temp = <110>; 1022 ts-cal-vrefanalog = <3300>; 1023 ts-cal-resolution = <16>; 1024 io-channels = <&adc3 18>; 1025 status = "disabled"; 1026 }; 1027 1028 vbat: vbat { 1029 compatible = "st,stm32-vbat"; 1030 ratio = <4>; 1031 status = "disabled"; 1032 }; 1033 1034 vref: vref { 1035 compatible = "st,stm32-vref"; 1036 vrefint-cal-addr = <0x1FF1E860>; 1037 vrefint-cal-mv = <3300>; 1038 status = "disabled"; 1039 }; 1040}; 1041 1042&nvic { 1043 arm,num-irq-priority-bits = <4>; 1044}; 1045