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>;
52 intc: interrupt-controller@a0021000 {
53 compatible = "arm,cortex-a7-gic";
54 #interrupt-cells = <3>;
56 reg = <0xa0021000 0x1000>,
61 compatible = "arm,armv7-timer";
62 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
63 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
64 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
65 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
66 interrupt-parent = <&intc>;
72 compatible = "fixed-clock";
73 clock-frequency = <24000000>;
78 compatible = "fixed-clock";
79 clock-frequency = <64000000>;
84 compatible = "fixed-clock";
85 clock-frequency = <32768>;
90 compatible = "fixed-clock";
91 clock-frequency = <32000>;
96 compatible = "fixed-clock";
97 clock-frequency = <4000000>;
102 compatible = "simple-bus";
103 #address-cells = <1>;
105 interrupt-parent = <&intc>;
108 timers2: timer@40000000 {
109 #address-cells = <1>;
111 compatible = "st,stm32-timers";
112 reg = <0x40000000 0x400>;
113 clocks = <&rcc TIM2_K>;
118 compatible = "st,stm32-pwm";
123 compatible = "st,stm32h7-timer-trigger";
129 timers3: timer@40001000 {
130 #address-cells = <1>;
132 compatible = "st,stm32-timers";
133 reg = <0x40001000 0x400>;
134 clocks = <&rcc TIM3_K>;
139 compatible = "st,stm32-pwm";
144 compatible = "st,stm32h7-timer-trigger";
150 timers4: timer@40002000 {
151 #address-cells = <1>;
153 compatible = "st,stm32-timers";
154 reg = <0x40002000 0x400>;
155 clocks = <&rcc TIM4_K>;
160 compatible = "st,stm32-pwm";
165 compatible = "st,stm32h7-timer-trigger";
171 timers5: timer@40003000 {
172 #address-cells = <1>;
174 compatible = "st,stm32-timers";
175 reg = <0x40003000 0x400>;
176 clocks = <&rcc TIM5_K>;
181 compatible = "st,stm32-pwm";
186 compatible = "st,stm32h7-timer-trigger";
192 timers6: timer@40004000 {
193 #address-cells = <1>;
195 compatible = "st,stm32-timers";
196 reg = <0x40004000 0x400>;
197 clocks = <&rcc TIM6_K>;
202 compatible = "st,stm32h7-timer-trigger";
208 timers7: timer@40005000 {
209 #address-cells = <1>;
211 compatible = "st,stm32-timers";
212 reg = <0x40005000 0x400>;
213 clocks = <&rcc TIM7_K>;
218 compatible = "st,stm32h7-timer-trigger";
224 timers12: timer@40006000 {
225 #address-cells = <1>;
227 compatible = "st,stm32-timers";
228 reg = <0x40006000 0x400>;
229 clocks = <&rcc TIM12_K>;
234 compatible = "st,stm32-pwm";
239 compatible = "st,stm32h7-timer-trigger";
245 timers13: timer@40007000 {
246 #address-cells = <1>;
248 compatible = "st,stm32-timers";
249 reg = <0x40007000 0x400>;
250 clocks = <&rcc TIM13_K>;
255 compatible = "st,stm32-pwm";
260 compatible = "st,stm32h7-timer-trigger";
266 timers14: timer@40008000 {
267 #address-cells = <1>;
269 compatible = "st,stm32-timers";
270 reg = <0x40008000 0x400>;
271 clocks = <&rcc TIM14_K>;
276 compatible = "st,stm32-pwm";
281 compatible = "st,stm32h7-timer-trigger";
287 lptimer1: timer@40009000 {
288 #address-cells = <1>;
290 compatible = "st,stm32-lptimer";
291 reg = <0x40009000 0x400>;
292 clocks = <&rcc LPTIM1_K>;
297 compatible = "st,stm32-pwm-lp";
303 compatible = "st,stm32-lptimer-trigger";
309 compatible = "st,stm32-lptimer-counter";
314 usart2: serial@4000e000 {
315 compatible = "st,stm32h7-uart";
316 reg = <0x4000e000 0x400>;
317 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
318 clocks = <&rcc USART2_K>;
322 usart3: serial@4000f000 {
323 compatible = "st,stm32h7-uart";
324 reg = <0x4000f000 0x400>;
325 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
326 clocks = <&rcc USART3_K>;
330 uart4: serial@40010000 {
331 compatible = "st,stm32h7-uart";
332 reg = <0x40010000 0x400>;
333 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
334 clocks = <&rcc UART4_K>;
338 uart5: serial@40011000 {
339 compatible = "st,stm32h7-uart";
340 reg = <0x40011000 0x400>;
341 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
342 clocks = <&rcc UART5_K>;
347 compatible = "st,stm32f7-i2c";
348 reg = <0x40012000 0x400>;
349 interrupt-names = "event", "error";
350 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
351 <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
352 clocks = <&rcc I2C1_K>;
353 resets = <&rcc I2C1_R>;
354 #address-cells = <1>;
360 compatible = "st,stm32f7-i2c";
361 reg = <0x40013000 0x400>;
362 interrupt-names = "event", "error";
363 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
364 <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
365 clocks = <&rcc I2C2_K>;
366 resets = <&rcc I2C2_R>;
367 #address-cells = <1>;
373 compatible = "st,stm32f7-i2c";
374 reg = <0x40014000 0x400>;
375 interrupt-names = "event", "error";
376 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
377 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
378 clocks = <&rcc I2C3_K>;
379 resets = <&rcc I2C3_R>;
380 #address-cells = <1>;
386 compatible = "st,stm32f7-i2c";
387 reg = <0x40015000 0x400>;
388 interrupt-names = "event", "error";
389 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
390 <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
391 clocks = <&rcc I2C5_K>;
392 resets = <&rcc I2C5_R>;
393 #address-cells = <1>;
399 compatible = "st,stm32-cec";
400 reg = <0x40016000 0x400>;
401 interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
402 clocks = <&rcc CEC_K>, <&clk_lse>;
403 clock-names = "cec", "hdmi-cec";
408 compatible = "st,stm32h7-dac-core";
409 reg = <0x40017000 0x400>;
410 clocks = <&rcc DAC12>;
411 clock-names = "pclk";
412 #address-cells = <1>;
417 compatible = "st,stm32-dac";
418 #io-channels-cells = <1>;
424 compatible = "st,stm32-dac";
425 #io-channels-cells = <1>;
431 uart7: serial@40018000 {
432 compatible = "st,stm32h7-uart";
433 reg = <0x40018000 0x400>;
434 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
435 clocks = <&rcc UART7_K>;
439 uart8: serial@40019000 {
440 compatible = "st,stm32h7-uart";
441 reg = <0x40019000 0x400>;
442 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
443 clocks = <&rcc UART8_K>;
447 timers1: timer@44000000 {
448 #address-cells = <1>;
450 compatible = "st,stm32-timers";
451 reg = <0x44000000 0x400>;
452 clocks = <&rcc TIM1_K>;
457 compatible = "st,stm32-pwm";
462 compatible = "st,stm32h7-timer-trigger";
468 timers8: timer@44001000 {
469 #address-cells = <1>;
471 compatible = "st,stm32-timers";
472 reg = <0x44001000 0x400>;
473 clocks = <&rcc TIM8_K>;
478 compatible = "st,stm32-pwm";
483 compatible = "st,stm32h7-timer-trigger";
489 usart6: serial@44003000 {
490 compatible = "st,stm32h7-uart";
491 reg = <0x44003000 0x400>;
492 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
493 clocks = <&rcc USART6_K>;
497 timers15: timer@44006000 {
498 #address-cells = <1>;
500 compatible = "st,stm32-timers";
501 reg = <0x44006000 0x400>;
502 clocks = <&rcc TIM15_K>;
507 compatible = "st,stm32-pwm";
512 compatible = "st,stm32h7-timer-trigger";
518 timers16: timer@44007000 {
519 #address-cells = <1>;
521 compatible = "st,stm32-timers";
522 reg = <0x44007000 0x400>;
523 clocks = <&rcc TIM16_K>;
528 compatible = "st,stm32-pwm";
532 compatible = "st,stm32h7-timer-trigger";
538 timers17: timer@44008000 {
539 #address-cells = <1>;
541 compatible = "st,stm32-timers";
542 reg = <0x44008000 0x400>;
543 clocks = <&rcc TIM17_K>;
548 compatible = "st,stm32-pwm";
553 compatible = "st,stm32h7-timer-trigger";
559 m_can1: can@4400e000 {
560 compatible = "bosch,m_can";
561 reg = <0x4400e000 0x400>, <0x44011000 0x2800>;
562 reg-names = "m_can", "message_ram";
563 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
564 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
565 interrupt-names = "int0", "int1";
566 clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>;
567 clock-names = "hclk", "cclk";
568 bosch,mram-cfg = <0x0 0 0 32 0 0 2 2>;
572 m_can2: can@4400f000 {
573 compatible = "bosch,m_can";
574 reg = <0x4400f000 0x400>, <0x44011000 0x2800>;
575 reg-names = "m_can", "message_ram";
576 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
577 <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
578 interrupt-names = "int0", "int1";
579 clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>;
580 clock-names = "hclk", "cclk";
581 bosch,mram-cfg = <0x0 0 0 32 0 0 2 2>;
586 compatible = "st,stm32-dma";
587 reg = <0x48000000 0x400>;
588 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
589 <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
590 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
591 <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
592 <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
593 <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
594 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
595 <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
596 clocks = <&rcc DMA1>;
603 compatible = "st,stm32-dma";
604 reg = <0x48001000 0x400>;
605 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
606 <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
607 <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
608 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
609 <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
610 <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
611 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
612 <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
613 clocks = <&rcc DMA2>;
619 dmamux1: dma-router@48002000 {
620 compatible = "st,stm32h7-dmamux";
621 reg = <0x48002000 0x1c>;
623 dma-requests = <128>;
624 dma-masters = <&dma1 &dma2>;
626 clocks = <&rcc DMAMUX>;
629 usbotg_hs: usb-otg@49000000 {
630 compatible = "snps,dwc2";
631 reg = <0x49000000 0x10000>;
632 clocks = <&rcc USBO_K>;
634 resets = <&rcc USBO_R>;
635 reset-names = "dwc2";
636 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
637 g-rx-fifo-size = <256>;
638 g-np-tx-fifo-size = <32>;
639 g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
645 compatible = "st,stm32mp1-rcc", "syscon";
646 reg = <0x50000000 0x1000>;
651 exti: interrupt-controller@5000d000 {
652 compatible = "st,stm32mp1-exti", "syscon";
653 interrupt-controller;
654 #interrupt-cells = <2>;
655 reg = <0x5000d000 0x400>;
658 lptimer2: timer@50021000 {
659 #address-cells = <1>;
661 compatible = "st,stm32-lptimer";
662 reg = <0x50021000 0x400>;
663 clocks = <&rcc LPTIM2_K>;
668 compatible = "st,stm32-pwm-lp";
674 compatible = "st,stm32-lptimer-trigger";
680 compatible = "st,stm32-lptimer-counter";
685 lptimer3: timer@50022000 {
686 #address-cells = <1>;
688 compatible = "st,stm32-lptimer";
689 reg = <0x50022000 0x400>;
690 clocks = <&rcc LPTIM3_K>;
695 compatible = "st,stm32-pwm-lp";
701 compatible = "st,stm32-lptimer-trigger";
707 lptimer4: timer@50023000 {
708 compatible = "st,stm32-lptimer";
709 reg = <0x50023000 0x400>;
710 clocks = <&rcc LPTIM4_K>;
715 compatible = "st,stm32-pwm-lp";
721 lptimer5: timer@50024000 {
722 compatible = "st,stm32-lptimer";
723 reg = <0x50024000 0x400>;
724 clocks = <&rcc LPTIM5_K>;
729 compatible = "st,stm32-pwm-lp";
735 vrefbuf: vrefbuf@50025000 {
736 compatible = "st,stm32-vrefbuf";
737 reg = <0x50025000 0x8>;
738 regulator-min-microvolt = <1500000>;
739 regulator-max-microvolt = <2500000>;
740 clocks = <&rcc VREF>;
744 cryp1: cryp@54001000 {
745 compatible = "st,stm32mp1-cryp";
746 reg = <0x54001000 0x400>;
747 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
748 clocks = <&rcc CRYP1>;
749 resets = <&rcc CRYP1_R>;
753 hash1: hash@54002000 {
754 compatible = "st,stm32f756-hash";
755 reg = <0x54002000 0x400>;
756 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
757 clocks = <&rcc HASH1>;
758 resets = <&rcc HASH1_R>;
759 dmas = <&mdma1 31 0x10 0x1000A02 0x0 0x0 0x0>;
766 compatible = "st,stm32-rng";
767 reg = <0x54003000 0x400>;
768 clocks = <&rcc RNG1_K>;
769 resets = <&rcc RNG1_R>;
773 mdma1: dma@58000000 {
774 compatible = "st,stm32h7-mdma";
775 reg = <0x58000000 0x1000>;
776 interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
777 clocks = <&rcc MDMA>;
783 qspi: qspi@58003000 {
784 compatible = "st,stm32f469-qspi";
785 reg = <0x58003000 0x1000>, <0x70000000 0x10000000>;
786 reg-names = "qspi", "qspi_mm";
787 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
788 clocks = <&rcc QSPI_K>;
789 resets = <&rcc QSPI_R>;
794 compatible = "st,stm32f7-crc";
795 reg = <0x58009000 0x400>;
796 clocks = <&rcc CRC1>;
800 usbh_ohci: usbh-ohci@5800c000 {
801 compatible = "generic-ohci";
802 reg = <0x5800c000 0x1000>;
803 clocks = <&rcc USBH>;
804 resets = <&rcc USBH_R>;
805 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
809 usbh_ehci: usbh-ehci@5800d000 {
810 compatible = "generic-ehci";
811 reg = <0x5800d000 0x1000>;
812 clocks = <&rcc USBH>;
813 resets = <&rcc USBH_R>;
814 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
815 companion = <&usbh_ohci>;
820 compatible = "st,stm32-dsi";
821 reg = <0x5a000000 0x800>;
822 clocks = <&rcc DSI_K>, <&clk_hse>, <&rcc DSI_PX>;
823 clock-names = "pclk", "ref", "px_clk";
824 resets = <&rcc DSI_R>;
829 ltdc: display-controller@5a001000 {
830 compatible = "st,stm32-ltdc";
831 reg = <0x5a001000 0x400>;
832 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
833 <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
834 clocks = <&rcc LTDC_PX>;
836 resets = <&rcc LTDC_R>;
840 usbphyc: usbphyc@5a006000 {
841 #address-cells = <1>;
843 compatible = "st,stm32mp1-usbphyc";
844 reg = <0x5a006000 0x1000>;
845 clocks = <&rcc USBPHY_K>;
846 resets = <&rcc USBPHY_R>;
849 usbphyc_port0: usb-phy@0 {
854 usbphyc_port1: usb-phy@1 {
860 usart1: serial@5c000000 {
861 compatible = "st,stm32h7-uart";
862 reg = <0x5c000000 0x400>;
863 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
864 clocks = <&rcc USART1_K>;
869 compatible = "st,stm32f7-i2c";
870 reg = <0x5c002000 0x400>;
871 interrupt-names = "event", "error";
872 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
873 <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
874 clocks = <&rcc I2C4_K>;
875 resets = <&rcc I2C4_R>;
876 #address-cells = <1>;
882 compatible = "st,stm32mp1-rtc";
883 reg = <0x5c004000 0x400>;
884 clocks = <&rcc RTCAPB>, <&rcc RTC>;
885 clock-names = "pclk", "rtc_ck";
886 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
891 compatible = "st,stm32f7-i2c";
892 reg = <0x5c009000 0x400>;
893 interrupt-names = "event", "error";
894 interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
895 <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
896 clocks = <&rcc I2C6_K>;
897 resets = <&rcc I2C6_R>;
898 #address-cells = <1>;