1 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
3 * Copyright (C) STMicroelectronics 2017 - All Rights Reserved
4 * Author: Ludovic Barre <ludovic.barre@st.com> for STMicroelectronics.
6 #include <dt-bindings/interrupt-controller/arm-gic.h>
7 #include <dt-bindings/clock/stm32mp1-clks.h>
8 #include <dt-bindings/reset/stm32mp1-resets.h>
19 compatible = "arm,cortex-a7";
25 compatible = "arm,cortex-a7";
32 compatible = "arm,psci";
34 cpu_off = <0x84000002>;
35 cpu_on = <0x84000003>;
60 intc: interrupt-controller@a0021000 {
61 compatible = "arm,cortex-a7-gic";
62 #interrupt-cells = <3>;
64 reg = <0xa0021000 0x1000>,
69 compatible = "arm,armv7-timer";
70 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
71 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
72 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
73 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
74 interrupt-parent = <&intc>;
80 compatible = "fixed-clock";
81 clock-frequency = <24000000>;
86 compatible = "fixed-clock";
87 clock-frequency = <64000000>;
92 compatible = "fixed-clock";
93 clock-frequency = <32768>;
98 compatible = "fixed-clock";
99 clock-frequency = <32000>;
104 compatible = "fixed-clock";
105 clock-frequency = <4000000>;
110 compatible = "simple-bus";
111 #address-cells = <1>;
113 interrupt-parent = <&intc>;
116 timers2: timer@40000000 {
117 #address-cells = <1>;
119 compatible = "st,stm32-timers";
120 reg = <0x40000000 0x400>;
121 clocks = <&rcc TIM2_K>;
126 compatible = "st,stm32-pwm";
131 compatible = "st,stm32h7-timer-trigger";
137 timers3: timer@40001000 {
138 #address-cells = <1>;
140 compatible = "st,stm32-timers";
141 reg = <0x40001000 0x400>;
142 clocks = <&rcc TIM3_K>;
147 compatible = "st,stm32-pwm";
152 compatible = "st,stm32h7-timer-trigger";
158 timers4: timer@40002000 {
159 #address-cells = <1>;
161 compatible = "st,stm32-timers";
162 reg = <0x40002000 0x400>;
163 clocks = <&rcc TIM4_K>;
168 compatible = "st,stm32-pwm";
173 compatible = "st,stm32h7-timer-trigger";
179 timers5: timer@40003000 {
180 #address-cells = <1>;
182 compatible = "st,stm32-timers";
183 reg = <0x40003000 0x400>;
184 clocks = <&rcc TIM5_K>;
189 compatible = "st,stm32-pwm";
194 compatible = "st,stm32h7-timer-trigger";
200 timers6: timer@40004000 {
201 #address-cells = <1>;
203 compatible = "st,stm32-timers";
204 reg = <0x40004000 0x400>;
205 clocks = <&rcc TIM6_K>;
210 compatible = "st,stm32h7-timer-trigger";
216 timers7: timer@40005000 {
217 #address-cells = <1>;
219 compatible = "st,stm32-timers";
220 reg = <0x40005000 0x400>;
221 clocks = <&rcc TIM7_K>;
226 compatible = "st,stm32h7-timer-trigger";
232 timers12: timer@40006000 {
233 #address-cells = <1>;
235 compatible = "st,stm32-timers";
236 reg = <0x40006000 0x400>;
237 clocks = <&rcc TIM12_K>;
242 compatible = "st,stm32-pwm";
247 compatible = "st,stm32h7-timer-trigger";
253 timers13: timer@40007000 {
254 #address-cells = <1>;
256 compatible = "st,stm32-timers";
257 reg = <0x40007000 0x400>;
258 clocks = <&rcc TIM13_K>;
263 compatible = "st,stm32-pwm";
268 compatible = "st,stm32h7-timer-trigger";
274 timers14: timer@40008000 {
275 #address-cells = <1>;
277 compatible = "st,stm32-timers";
278 reg = <0x40008000 0x400>;
279 clocks = <&rcc TIM14_K>;
284 compatible = "st,stm32-pwm";
289 compatible = "st,stm32h7-timer-trigger";
295 lptimer1: timer@40009000 {
296 #address-cells = <1>;
298 compatible = "st,stm32-lptimer";
299 reg = <0x40009000 0x400>;
300 clocks = <&rcc LPTIM1_K>;
305 compatible = "st,stm32-pwm-lp";
311 compatible = "st,stm32-lptimer-trigger";
317 compatible = "st,stm32-lptimer-counter";
322 usart2: serial@4000e000 {
323 compatible = "st,stm32h7-uart";
324 reg = <0x4000e000 0x400>;
325 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
326 clocks = <&rcc USART2_K>;
330 usart3: serial@4000f000 {
331 compatible = "st,stm32h7-uart";
332 reg = <0x4000f000 0x400>;
333 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
334 clocks = <&rcc USART3_K>;
338 uart4: serial@40010000 {
339 compatible = "st,stm32h7-uart";
340 reg = <0x40010000 0x400>;
341 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
342 clocks = <&rcc UART4_K>;
346 uart5: serial@40011000 {
347 compatible = "st,stm32h7-uart";
348 reg = <0x40011000 0x400>;
349 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
350 clocks = <&rcc UART5_K>;
355 compatible = "st,stm32f7-i2c";
356 reg = <0x40012000 0x400>;
357 interrupt-names = "event", "error";
358 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
359 <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
360 clocks = <&rcc I2C1_K>;
361 resets = <&rcc I2C1_R>;
362 #address-cells = <1>;
368 compatible = "st,stm32f7-i2c";
369 reg = <0x40013000 0x400>;
370 interrupt-names = "event", "error";
371 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
372 <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
373 clocks = <&rcc I2C2_K>;
374 resets = <&rcc I2C2_R>;
375 #address-cells = <1>;
381 compatible = "st,stm32f7-i2c";
382 reg = <0x40014000 0x400>;
383 interrupt-names = "event", "error";
384 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
385 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
386 clocks = <&rcc I2C3_K>;
387 resets = <&rcc I2C3_R>;
388 #address-cells = <1>;
394 compatible = "st,stm32f7-i2c";
395 reg = <0x40015000 0x400>;
396 interrupt-names = "event", "error";
397 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
398 <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
399 clocks = <&rcc I2C5_K>;
400 resets = <&rcc I2C5_R>;
401 #address-cells = <1>;
407 compatible = "st,stm32-cec";
408 reg = <0x40016000 0x400>;
409 interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
410 clocks = <&rcc CEC_K>, <&clk_lse>;
411 clock-names = "cec", "hdmi-cec";
416 compatible = "st,stm32h7-dac-core";
417 reg = <0x40017000 0x400>;
418 clocks = <&rcc DAC12>;
419 clock-names = "pclk";
420 #address-cells = <1>;
425 compatible = "st,stm32-dac";
426 #io-channels-cells = <1>;
432 compatible = "st,stm32-dac";
433 #io-channels-cells = <1>;
439 uart7: serial@40018000 {
440 compatible = "st,stm32h7-uart";
441 reg = <0x40018000 0x400>;
442 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
443 clocks = <&rcc UART7_K>;
447 uart8: serial@40019000 {
448 compatible = "st,stm32h7-uart";
449 reg = <0x40019000 0x400>;
450 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
451 clocks = <&rcc UART8_K>;
455 timers1: timer@44000000 {
456 #address-cells = <1>;
458 compatible = "st,stm32-timers";
459 reg = <0x44000000 0x400>;
460 clocks = <&rcc TIM1_K>;
465 compatible = "st,stm32-pwm";
470 compatible = "st,stm32h7-timer-trigger";
476 timers8: timer@44001000 {
477 #address-cells = <1>;
479 compatible = "st,stm32-timers";
480 reg = <0x44001000 0x400>;
481 clocks = <&rcc TIM8_K>;
486 compatible = "st,stm32-pwm";
491 compatible = "st,stm32h7-timer-trigger";
497 usart6: serial@44003000 {
498 compatible = "st,stm32h7-uart";
499 reg = <0x44003000 0x400>;
500 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
501 clocks = <&rcc USART6_K>;
505 timers15: timer@44006000 {
506 #address-cells = <1>;
508 compatible = "st,stm32-timers";
509 reg = <0x44006000 0x400>;
510 clocks = <&rcc TIM15_K>;
515 compatible = "st,stm32-pwm";
520 compatible = "st,stm32h7-timer-trigger";
526 timers16: timer@44007000 {
527 #address-cells = <1>;
529 compatible = "st,stm32-timers";
530 reg = <0x44007000 0x400>;
531 clocks = <&rcc TIM16_K>;
536 compatible = "st,stm32-pwm";
540 compatible = "st,stm32h7-timer-trigger";
546 timers17: timer@44008000 {
547 #address-cells = <1>;
549 compatible = "st,stm32-timers";
550 reg = <0x44008000 0x400>;
551 clocks = <&rcc TIM17_K>;
556 compatible = "st,stm32-pwm";
561 compatible = "st,stm32h7-timer-trigger";
568 compatible = "st,stm32-dma";
569 reg = <0x48000000 0x400>;
570 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
571 <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
572 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
573 <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
574 <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
575 <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
576 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
577 <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
578 clocks = <&rcc DMA1>;
585 compatible = "st,stm32-dma";
586 reg = <0x48001000 0x400>;
587 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
588 <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
589 <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
590 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
591 <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
592 <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
593 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
594 <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
595 clocks = <&rcc DMA2>;
601 dmamux1: dma-router@48002000 {
602 compatible = "st,stm32h7-dmamux";
603 reg = <0x48002000 0x1c>;
605 dma-requests = <128>;
606 dma-masters = <&dma1 &dma2>;
608 clocks = <&rcc DMAMUX>;
611 sdmmc3: sdmmc@48004000 {
612 compatible = "st,stm32-sdmmc2";
613 reg = <0x48004000 0x400>, <0x48005000 0x400>;
614 reg-names = "sdmmc", "delay";
615 interrupts = <GIC_SPI 137 IRQ_TYPE_NONE>;
616 clocks = <&rcc SDMMC3_K>;
617 resets = <&rcc SDMMC3_R>;
621 max-frequency = <120000000>;
626 compatible = "st,stm32mp1-rcc", "syscon";
627 reg = <0x50000000 0x1000>;
632 rcc_reboot: rcc-reboot@50000000 {
633 compatible = "syscon-reboot";
640 compatible = "st,stm32mp1-pwr", "st,stm32-pwr", "syscon", "simple-mfd";
641 reg = <0x50001000 0x400>;
642 system-power-controller;
643 interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
645 clocks = <&rcc PLL2_R>;
646 clock-names = "phyclk";
649 compatible = "st,stm32mp1,pwr-reg";
650 st,tzcr = <&rcc 0x0 0x1>;
653 regulator-name = "reg11";
654 regulator-min-microvolt = <1100000>;
655 regulator-max-microvolt = <1100000>;
659 regulator-name = "reg18";
660 regulator-min-microvolt = <1800000>;
661 regulator-max-microvolt = <1800000>;
665 regulator-name = "usb33";
666 regulator-min-microvolt = <3300000>;
667 regulator-max-microvolt = <3300000>;
672 exti: interrupt-controller@5000d000 {
673 compatible = "st,stm32mp1-exti", "syscon";
674 interrupt-controller;
675 #interrupt-cells = <2>;
676 reg = <0x5000d000 0x400>;
679 syscfg: system-config@50020000 {
680 compatible = "st,stm32-syscfg", "syscon";
681 reg = <0x50020000 0x400>;
684 lptimer2: timer@50021000 {
685 #address-cells = <1>;
687 compatible = "st,stm32-lptimer";
688 reg = <0x50021000 0x400>;
689 clocks = <&rcc LPTIM2_K>;
694 compatible = "st,stm32-pwm-lp";
700 compatible = "st,stm32-lptimer-trigger";
706 compatible = "st,stm32-lptimer-counter";
711 lptimer3: timer@50022000 {
712 #address-cells = <1>;
714 compatible = "st,stm32-lptimer";
715 reg = <0x50022000 0x400>;
716 clocks = <&rcc LPTIM3_K>;
721 compatible = "st,stm32-pwm-lp";
727 compatible = "st,stm32-lptimer-trigger";
733 lptimer4: timer@50023000 {
734 compatible = "st,stm32-lptimer";
735 reg = <0x50023000 0x400>;
736 clocks = <&rcc LPTIM4_K>;
741 compatible = "st,stm32-pwm-lp";
747 lptimer5: timer@50024000 {
748 compatible = "st,stm32-lptimer";
749 reg = <0x50024000 0x400>;
750 clocks = <&rcc LPTIM5_K>;
755 compatible = "st,stm32-pwm-lp";
761 vrefbuf: vrefbuf@50025000 {
762 compatible = "st,stm32-vrefbuf";
763 reg = <0x50025000 0x8>;
764 regulator-min-microvolt = <1500000>;
765 regulator-max-microvolt = <2500000>;
766 clocks = <&rcc VREF>;
770 cryp1: cryp@54001000 {
771 compatible = "st,stm32mp1-cryp";
772 reg = <0x54001000 0x400>;
773 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
774 clocks = <&rcc CRYP1>;
775 resets = <&rcc CRYP1_R>;
780 compatible = "st,stm32-rng";
781 reg = <0x54003000 0x400>;
782 clocks = <&rcc RNG1_K>;
783 resets = <&rcc RNG1_R>;
787 mdma1: dma@58000000 {
788 compatible = "st,stm32h7-mdma";
789 reg = <0x58000000 0x1000>;
790 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
791 clocks = <&rcc MDMA>;
797 qspi: qspi@58003000 {
798 compatible = "st,stm32f469-qspi";
799 reg = <0x58003000 0x1000>, <0x70000000 0x10000000>;
800 reg-names = "qspi", "qspi_mm";
801 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
802 clocks = <&rcc QSPI_K>;
803 resets = <&rcc QSPI_R>;
807 sdmmc1: sdmmc@58005000 {
808 compatible = "st,stm32-sdmmc2";
809 reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
810 reg-names = "sdmmc", "delay";
811 clocks = <&rcc SDMMC1_K>;
812 resets = <&rcc SDMMC1_R>;
816 max-frequency = <120000000>;
820 sdmmc2: sdmmc@58007000 {
821 compatible = "st,stm32-sdmmc2";
822 reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
823 reg-names = "sdmmc", "delay";
824 interrupts = <GIC_SPI 124 IRQ_TYPE_NONE>;
825 clocks = <&rcc SDMMC2_K>;
826 resets = <&rcc SDMMC2_R>;
830 max-frequency = <120000000>;
835 compatible = "st,stm32f7-crc";
836 reg = <0x58009000 0x400>;
837 clocks = <&rcc CRC1>;
841 usbh_ohci: usbh-ohci@5800c000 {
842 compatible = "generic-ohci";
843 reg = <0x5800c000 0x1000>;
844 clocks = <&rcc USBH>;
845 resets = <&rcc USBH_R>;
846 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
850 usbh_ehci: usbh-ehci@5800d000 {
851 compatible = "generic-ehci";
852 reg = <0x5800d000 0x1000>;
853 clocks = <&rcc USBH>;
854 resets = <&rcc USBH_R>;
855 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
856 companion = <&usbh_ohci>;
861 compatible = "st,stm32-dsi";
862 reg = <0x5a000000 0x800>;
863 clocks = <&rcc DSI_K>, <&clk_hse>, <&rcc DSI_PX>;
864 clock-names = "pclk", "ref", "px_clk";
865 resets = <&rcc DSI_R>;
870 ltdc: display-controller@5a001000 {
871 compatible = "st,stm32-ltdc";
872 reg = <0x5a001000 0x400>;
873 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
874 <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
875 clocks = <&rcc LTDC_PX>;
877 resets = <&rcc LTDC_R>;
881 usbphyc: usbphyc@5a006000 {
882 #address-cells = <1>;
884 compatible = "st,stm32mp1-usbphyc";
885 reg = <0x5a006000 0x1000>;
886 clocks = <&rcc USBPHY_K>;
887 resets = <&rcc USBPHY_R>;
890 usbphyc_port0: usb-phy@0 {
895 usbphyc_port1: usb-phy@1 {
901 usart1: serial@5c000000 {
902 compatible = "st,stm32h7-uart";
903 reg = <0x5c000000 0x400>;
904 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
905 clocks = <&rcc USART1_K>;
910 compatible = "st,stm32f7-i2c";
911 reg = <0x5c002000 0x400>;
912 interrupt-names = "event", "error";
913 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
914 <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
915 clocks = <&rcc I2C4_K>;
916 resets = <&rcc I2C4_R>;
917 #address-cells = <1>;
923 compatible = "st,stm32f7-i2c";
924 reg = <0x5c009000 0x400>;
925 interrupt-names = "event", "error";
926 interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
927 <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
928 clocks = <&rcc I2C6_K>;
929 resets = <&rcc I2C6_R>;
930 #address-cells = <1>;