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