1 // SPDX-License-Identifier: GPL-2.0+ OR X11
3 * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
7 #include "armv7-m.dtsi"
8 #include <dt-bindings/clock/stm32h7-clks.h>
9 #include <dt-bindings/mfd/stm32h7-rcc.h>
10 #include <dt-bindings/interrupt-controller/irq.h>
19 compatible = "fixed-clock";
20 clock-frequency = <0>;
25 compatible = "fixed-clock";
26 clock-frequency = <32768>;
31 compatible = "fixed-clock";
32 clock-frequency = <0>;
37 timer5: timer@40000c00 {
38 compatible = "st,stm32-timer";
39 reg = <0x40000c00 0x400>;
41 clocks = <&rcc TIM5_CK>;
44 lptimer1: timer@40002400 {
47 compatible = "st,stm32-lptimer";
48 reg = <0x40002400 0x400>;
49 clocks = <&rcc LPTIM1_CK>;
54 compatible = "st,stm32-pwm-lp";
60 compatible = "st,stm32-lptimer-trigger";
66 compatible = "st,stm32-lptimer-counter";
74 compatible = "st,stm32h7-spi";
75 reg = <0x40003800 0x400>;
77 resets = <&rcc STM32H7_APB1L_RESET(SPI2)>;
78 clocks = <&rcc SPI2_CK>;
86 compatible = "st,stm32h7-spi";
87 reg = <0x40003c00 0x400>;
89 resets = <&rcc STM32H7_APB1L_RESET(SPI3)>;
90 clocks = <&rcc SPI3_CK>;
94 usart2: serial@40004400 {
95 compatible = "st,stm32h7-uart";
96 reg = <0x40004400 0x400>;
99 clocks = <&rcc USART2_CK>;
102 usart3: serial@40004800 {
103 compatible = "st,stm32h7-uart";
104 reg = <0x40004800 0x400>;
107 clocks = <&rcc USART3_CK>;
110 uart4: serial@40004c00 {
111 compatible = "st,stm32h7-uart";
112 reg = <0x40004c00 0x400>;
115 clocks = <&rcc UART4_CK>;
119 compatible = "st,stm32f7-i2c";
120 #address-cells = <1>;
122 reg = <0x40005400 0x400>;
125 resets = <&rcc STM32H7_APB1L_RESET(I2C1)>;
126 clocks = <&rcc I2C1_CK>;
131 compatible = "st,stm32f7-i2c";
132 #address-cells = <1>;
134 reg = <0x40005800 0x400>;
137 resets = <&rcc STM32H7_APB1L_RESET(I2C2)>;
138 clocks = <&rcc I2C2_CK>;
143 compatible = "st,stm32f7-i2c";
144 #address-cells = <1>;
146 reg = <0x40005C00 0x400>;
149 resets = <&rcc STM32H7_APB1L_RESET(I2C3)>;
150 clocks = <&rcc I2C3_CK>;
155 compatible = "st,stm32h7-dac-core";
156 reg = <0x40007400 0x400>;
157 clocks = <&rcc DAC12_CK>;
158 clock-names = "pclk";
159 #address-cells = <1>;
164 compatible = "st,stm32-dac";
165 #io-channel-cells = <1>;
171 compatible = "st,stm32-dac";
172 #io-channel-cells = <1>;
178 usart1: serial@40011000 {
179 compatible = "st,stm32h7-uart";
180 reg = <0x40011000 0x400>;
183 clocks = <&rcc USART1_CK>;
187 #address-cells = <1>;
189 compatible = "st,stm32h7-spi";
190 reg = <0x40013000 0x400>;
192 resets = <&rcc STM32H7_APB2_RESET(SPI1)>;
193 clocks = <&rcc SPI1_CK>;
198 #address-cells = <1>;
200 compatible = "st,stm32h7-spi";
201 reg = <0x40013400 0x400>;
203 resets = <&rcc STM32H7_APB2_RESET(SPI4)>;
204 clocks = <&rcc SPI4_CK>;
209 #address-cells = <1>;
211 compatible = "st,stm32h7-spi";
212 reg = <0x40015000 0x400>;
214 resets = <&rcc STM32H7_APB2_RESET(SPI5)>;
215 clocks = <&rcc SPI5_CK>;
219 dma1: dma-controller@40020000 {
220 compatible = "st,stm32-dma";
221 reg = <0x40020000 0x400>;
230 clocks = <&rcc DMA1_CK>;
237 dma2: dma-controller@40020400 {
238 compatible = "st,stm32-dma";
239 reg = <0x40020400 0x400>;
248 clocks = <&rcc DMA2_CK>;
255 dmamux1: dma-router@40020800 {
256 compatible = "st,stm32h7-dmamux";
257 reg = <0x40020800 0x40>;
260 dma-requests = <128>;
261 dma-masters = <&dma1 &dma2>;
262 clocks = <&rcc DMA1_CK>;
265 adc_12: adc@40022000 {
266 compatible = "st,stm32h7-adc-core";
267 reg = <0x40022000 0x400>;
269 clocks = <&rcc ADC12_CK>;
271 interrupt-controller;
272 #interrupt-cells = <1>;
273 #address-cells = <1>;
278 compatible = "st,stm32h7-adc";
279 #io-channel-cells = <1>;
281 interrupt-parent = <&adc_12>;
287 compatible = "st,stm32h7-adc";
288 #io-channel-cells = <1>;
290 interrupt-parent = <&adc_12>;
296 usbotg_hs: usb@40040000 {
297 compatible = "st,stm32f7-hsotg";
298 reg = <0x40040000 0x40000>;
300 clocks = <&rcc USB1OTG_CK>;
302 g-rx-fifo-size = <256>;
303 g-np-tx-fifo-size = <32>;
304 g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
308 usbotg_fs: usb@40080000 {
309 compatible = "st,stm32f4x9-fsotg";
310 reg = <0x40080000 0x40000>;
312 clocks = <&rcc USB2OTG_CK>;
317 ltdc: display-controller@50001000 {
318 compatible = "st,stm32-ltdc";
319 reg = <0x50001000 0x200>;
320 interrupts = <88>, <89>;
321 resets = <&rcc STM32H7_APB3_RESET(LTDC)>;
322 clocks = <&rcc LTDC_CK>;
327 mdma1: dma-controller@52000000 {
328 compatible = "st,stm32h7-mdma";
329 reg = <0x52000000 0x1000>;
331 clocks = <&rcc MDMA_CK>;
337 sdmmc1: sdmmc@52007000 {
338 compatible = "arm,pl18x", "arm,primecell";
339 arm,primecell-periphid = <0x10153180>;
340 reg = <0x52007000 0x1000>;
342 interrupt-names = "cmd_irq";
343 clocks = <&rcc SDMMC1_CK>;
344 clock-names = "apb_pclk";
345 resets = <&rcc STM32H7_AHB3_RESET(SDMMC1)>;
348 max-frequency = <120000000>;
351 sdmmc2: sdmmc@48022400 {
352 compatible = "arm,pl18x", "arm,primecell";
353 arm,primecell-periphid = <0x10153180>;
354 reg = <0x48022400 0x400>;
356 interrupt-names = "cmd_irq";
357 clocks = <&rcc SDMMC2_CK>;
358 clock-names = "apb_pclk";
359 resets = <&rcc STM32H7_AHB2_RESET(SDMMC2)>;
362 max-frequency = <120000000>;
365 exti: interrupt-controller@58000000 {
366 compatible = "st,stm32h7-exti";
367 interrupt-controller;
368 #interrupt-cells = <2>;
369 reg = <0x58000000 0x400>;
370 interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <62>, <76>;
373 syscfg: syscon@58000400 {
374 compatible = "st,stm32-syscfg", "syscon";
375 reg = <0x58000400 0x400>;
379 #address-cells = <1>;
381 compatible = "st,stm32h7-spi";
382 reg = <0x58001400 0x400>;
384 resets = <&rcc STM32H7_APB4_RESET(SPI6)>;
385 clocks = <&rcc SPI6_CK>;
390 compatible = "st,stm32f7-i2c";
391 #address-cells = <1>;
393 reg = <0x58001C00 0x400>;
396 resets = <&rcc STM32H7_APB4_RESET(I2C4)>;
397 clocks = <&rcc I2C4_CK>;
401 lptimer2: timer@58002400 {
402 #address-cells = <1>;
404 compatible = "st,stm32-lptimer";
405 reg = <0x58002400 0x400>;
406 clocks = <&rcc LPTIM2_CK>;
411 compatible = "st,stm32-pwm-lp";
417 compatible = "st,stm32-lptimer-trigger";
423 compatible = "st,stm32-lptimer-counter";
428 lptimer3: timer@58002800 {
429 #address-cells = <1>;
431 compatible = "st,stm32-lptimer";
432 reg = <0x58002800 0x400>;
433 clocks = <&rcc LPTIM3_CK>;
438 compatible = "st,stm32-pwm-lp";
444 compatible = "st,stm32-lptimer-trigger";
450 lptimer4: timer@58002c00 {
451 #address-cells = <1>;
453 compatible = "st,stm32-lptimer";
454 reg = <0x58002c00 0x400>;
455 clocks = <&rcc LPTIM4_CK>;
460 compatible = "st,stm32-pwm-lp";
466 lptimer5: timer@58003000 {
467 #address-cells = <1>;
469 compatible = "st,stm32-lptimer";
470 reg = <0x58003000 0x400>;
471 clocks = <&rcc LPTIM5_CK>;
476 compatible = "st,stm32-pwm-lp";
482 vrefbuf: regulator@58003c00 {
483 compatible = "st,stm32-vrefbuf";
484 reg = <0x58003C00 0x8>;
485 clocks = <&rcc VREF_CK>;
486 regulator-min-microvolt = <1500000>;
487 regulator-max-microvolt = <2500000>;
492 compatible = "st,stm32h7-rtc";
493 reg = <0x58004000 0x400>;
494 clocks = <&rcc RTCAPB_CK>, <&rcc RTC_CK>;
495 clock-names = "pclk", "rtc_ck";
496 assigned-clocks = <&rcc RTC_CK>;
497 assigned-clock-parents = <&rcc LSE_CK>;
498 interrupt-parent = <&exti>;
499 interrupts = <17 IRQ_TYPE_EDGE_RISING>;
500 st,syscfg = <&pwrcfg 0x00 0x100>;
504 rcc: reset-clock-controller@58024400 {
505 compatible = "st,stm32h743-rcc", "st,stm32-rcc";
506 reg = <0x58024400 0x400>;
509 clocks = <&clk_hse>, <&clk_lse>, <&clk_i2s>;
510 st,syscfg = <&pwrcfg>;
513 pwrcfg: power-config@58024800 {
514 compatible = "st,stm32-power-config", "syscon";
515 reg = <0x58024800 0x400>;
518 adc_3: adc@58026000 {
519 compatible = "st,stm32h7-adc-core";
520 reg = <0x58026000 0x400>;
522 clocks = <&rcc ADC3_CK>;
524 interrupt-controller;
525 #interrupt-cells = <1>;
526 #address-cells = <1>;
531 compatible = "st,stm32h7-adc";
532 #io-channel-cells = <1>;
534 interrupt-parent = <&adc_3>;
540 mac: ethernet@40028000 {
541 compatible = "st,stm32-dwmac", "snps,dwmac-4.10a";
542 reg = <0x40028000 0x8000>;
543 reg-names = "stmmaceth";
545 interrupt-names = "macirq";
546 clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
547 clocks = <&rcc ETH1MAC_CK>, <&rcc ETH1TX_CK>, <&rcc ETH1RX_CK>;
548 st,syscon = <&syscfg 0x4>;
553 pinctrl: pin-controller@58020000 {
554 #address-cells = <1>;
556 compatible = "st,stm32h743-pinctrl";
557 ranges = <0 0x58020000 0x3000>;
558 interrupt-parent = <&exti>;
559 st,syscfg = <&syscfg 0x8>;
562 gpioa: gpio@58020000 {
566 clocks = <&rcc GPIOA_CK>;
567 st,bank-name = "GPIOA";
568 interrupt-controller;
569 #interrupt-cells = <2>;
571 gpio-ranges = <&pinctrl 0 0 16>;
574 gpiob: gpio@58020400 {
578 clocks = <&rcc GPIOB_CK>;
579 st,bank-name = "GPIOB";
580 interrupt-controller;
581 #interrupt-cells = <2>;
583 gpio-ranges = <&pinctrl 0 16 16>;
586 gpioc: gpio@58020800 {
590 clocks = <&rcc GPIOC_CK>;
591 st,bank-name = "GPIOC";
592 interrupt-controller;
593 #interrupt-cells = <2>;
595 gpio-ranges = <&pinctrl 0 32 16>;
598 gpiod: gpio@58020c00 {
602 clocks = <&rcc GPIOD_CK>;
603 st,bank-name = "GPIOD";
604 interrupt-controller;
605 #interrupt-cells = <2>;
607 gpio-ranges = <&pinctrl 0 48 16>;
610 gpioe: gpio@58021000 {
613 reg = <0x1000 0x400>;
614 clocks = <&rcc GPIOE_CK>;
615 st,bank-name = "GPIOE";
616 interrupt-controller;
617 #interrupt-cells = <2>;
619 gpio-ranges = <&pinctrl 0 64 16>;
622 gpiof: gpio@58021400 {
625 reg = <0x1400 0x400>;
626 clocks = <&rcc GPIOF_CK>;
627 st,bank-name = "GPIOF";
628 interrupt-controller;
629 #interrupt-cells = <2>;
631 gpio-ranges = <&pinctrl 0 80 16>;
634 gpiog: gpio@58021800 {
637 reg = <0x1800 0x400>;
638 clocks = <&rcc GPIOG_CK>;
639 st,bank-name = "GPIOG";
640 interrupt-controller;
641 #interrupt-cells = <2>;
643 gpio-ranges = <&pinctrl 0 96 16>;
646 gpioh: gpio@58021c00 {
649 reg = <0x1c00 0x400>;
650 clocks = <&rcc GPIOH_CK>;
651 st,bank-name = "GPIOH";
652 interrupt-controller;
653 #interrupt-cells = <2>;
655 gpio-ranges = <&pinctrl 0 112 16>;
658 gpioi: gpio@58022000 {
661 reg = <0x2000 0x400>;
662 clocks = <&rcc GPIOI_CK>;
663 st,bank-name = "GPIOI";
664 interrupt-controller;
665 #interrupt-cells = <2>;
667 gpio-ranges = <&pinctrl 0 128 16>;
670 gpioj: gpio@58022400 {
673 reg = <0x2400 0x400>;
674 clocks = <&rcc GPIOJ_CK>;
675 st,bank-name = "GPIOJ";
676 interrupt-controller;
677 #interrupt-cells = <2>;
679 gpio-ranges = <&pinctrl 0 144 16>;
682 gpiok: gpio@58022800 {
685 reg = <0x2800 0x400>;
686 clocks = <&rcc GPIOK_CK>;
687 st,bank-name = "GPIOK";
688 interrupt-controller;
689 #interrupt-cells = <2>;
691 gpio-ranges = <&pinctrl 0 160 8>;
698 clock-frequency = <250000000>;