xref: /optee_os/core/arch/arm/dts/stm32mp251.dtsi (revision c84ab37b52e807adf4497a1253df246121fd3868)
1// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
2/*
3 * Copyright (C) STMicroelectronics 2023 - All Rights Reserved
4 * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
5 */
6
7#include <dt-bindings/clock/st,stm32mp25-rcc.h>
8#include <dt-bindings/firewall/stm32mp25-rif.h>
9#include <dt-bindings/firewall/stm32mp25-rifsc.h>
10#include <dt-bindings/firewall/stm32mp25-risaf.h>
11#include <dt-bindings/firewall/stm32mp25-risab.h>
12#include <dt-bindings/interrupt-controller/arm-gic.h>
13#include <dt-bindings/reset/st,stm32mp25-rcc.h>
14
15/ {
16	#address-cells = <2>;
17	#size-cells = <2>;
18
19	cpus {
20		#address-cells = <1>;
21		#size-cells = <0>;
22
23		cpu0: cpu@0 {
24			compatible = "arm,cortex-a35";
25			device_type = "cpu";
26			reg = <0>;
27			enable-method = "psci";
28		};
29	};
30
31	psci {
32		compatible = "arm,psci-1.0";
33		method = "smc";
34	};
35
36	intc: interrupt-controller@4ac00000 {
37		compatible = "arm,cortex-a7-gic";
38		#interrupt-cells = <3>;
39		interrupt-controller;
40		reg = <0x0 0x4ac10000 0x0 0x1000>,
41		      <0x0 0x4ac20000 0x0 0x2000>,
42		      <0x0 0x4ac40000 0x0 0x2000>,
43		      <0x0 0x4ac60000 0x0 0x2000>;
44		#address-cells = <1>;
45	};
46
47	clocks {
48		clk_hse: clk-hse {
49			#clock-cells = <0>;
50			compatible = "fixed-clock";
51			clock-frequency = <24000000>;
52		};
53
54		clk_hsi: clk-hsi {
55			#clock-cells = <0>;
56			compatible = "fixed-clock";
57			clock-frequency = <64000000>;
58		};
59
60		clk_lse: clk-lse {
61			#clock-cells = <0>;
62			compatible = "fixed-clock";
63			clock-frequency = <32768>;
64		};
65
66		clk_lsi: clk-lsi {
67			#clock-cells = <0>;
68			compatible = "fixed-clock";
69			clock-frequency = <32000>;
70		};
71
72		clk_msi: clk-msi {
73			#clock-cells = <0>;
74			compatible = "fixed-clock";
75			clock-frequency = <4000000>;
76		};
77
78		clk_i2sin: clk-i2sin {
79			#clock-cells = <0>;
80			compatible = "fixed-clock";
81			clock-frequency = <0>;
82		};
83
84		clk_rcbsec: clk-rcbsec {
85			#clock-cells = <0>;
86			compatible = "fixed-clock";
87			clock-frequency = <64000000>;
88		};
89	};
90
91	soc@0 {
92		compatible = "simple-bus";
93		#address-cells = <1>;
94		#size-cells = <1>;
95		interrupt-parent = <&intc>;
96		ranges = <0x0 0x0 0x0 0x80000000>;
97
98		hpdma1: dma-controller@40400000 {
99			compatible = "st,stm32-dma3";
100			reg = <0x40400000 0x1000>;
101			clocks = <&rcc CK_BUS_HPDMA1>;
102			resets = <&rcc HPDMA1_R>;
103			#dma-cells = <4>;
104			status = "disabled";
105		};
106
107		hpdma2: dma-controller@40410000 {
108			compatible = "st,stm32-dma3";
109			reg = <0x40410000 0x1000>;
110			clocks = <&rcc CK_BUS_HPDMA2>;
111			resets = <&rcc HPDMA2_R>;
112			#dma-cells = <4>;
113			status = "disabled";
114		};
115
116		hpdma3: dma-controller@40420000 {
117			compatible = "st,stm32-dma3";
118			reg = <0x40420000 0x1000>;
119			clocks = <&rcc CK_BUS_HPDMA3>;
120			resets = <&rcc HPDMA3_R>;
121			#dma-cells = <4>;
122			status = "disabled";
123		};
124
125		ipcc1: mailbox@40490000 {
126			compatible = "st,stm32mp25-ipcc";
127			reg = <0x40490000 0x400>;
128			interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
129			interrupt-names = "rx";
130			clocks = <&rcc CK_BUS_IPCC1>;
131			status = "disabled";
132		};
133
134		rifsc: rifsc@42080000 {
135			compatible = "st,stm32mp25-rifsc", "simple-bus";
136			reg = <0x42080000 0x1000>;
137			#address-cells = <1>;
138			#size-cells = <1>;
139			#access-controller-cells = <1>;
140
141			usart2: serial@400e0000 {
142				compatible = "st,stm32h7-uart";
143				reg = <0x400e0000 0x400>;
144				interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
145				clocks = <&rcc CK_KER_USART2>;
146				access-controllers = <&rifsc STM32MP25_RIFSC_USART2_ID>;
147				status = "disabled";
148			};
149
150			rng: rng@42020000 {
151				compatible = "st,stm32mp25-rng";
152				reg = <0x42020000 0x400>;
153				clocks = <&clk_rcbsec>, <&rcc CK_BUS_RNG>;
154				clock-names = "rng_clk", "rng_hclk";
155				resets = <&rcc RNG_R>;
156				access-controllers = <&rifsc STM32MP25_RIFSC_RNG_ID>;
157			};
158		};
159
160		iac: iac@42090000 {
161			compatible = "st,stm32mp25-iac";
162			reg = <0x42090000 0x400>;
163			interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
164		};
165
166		risaf1: risaf@420a0000 {
167			compatible = "st,stm32mp25-risaf";
168			reg = <0x420a0000 0x1000>;
169			clocks = <&rcc CK_BUS_BKPSRAM>;
170			st,mem-map = <0x0 0x42000000 0x0 0x2000>;
171			#access-controller-cells = <1>;
172		};
173
174		risaf2: risaf@420b0000 {
175			compatible = "st,stm32mp25-risaf";
176			reg = <0x420b0000 0x1000>;
177			clocks = <&rcc CK_KER_OSPI1>;
178			st,mem-map = <0x0 0x60000000 0x0 0x10000000>;
179			#access-controller-cells = <1>;
180			status = "disabled";
181		};
182
183		risaf4: risaf@420d0000 {
184			compatible = "st,stm32mp25-risaf-enc";
185			reg = <0x420d0000 0x1000>;
186			clocks = <&rcc CK_BUS_RISAF4>;
187			st,mem-map = <0x0 0x80000000 0x1 0x00000000>;
188			#access-controller-cells = <1>;
189		};
190
191		risaf5: risaf@420e0000 {
192			compatible = "st,stm32mp25-risaf";
193			reg = <0x420e0000 0x1000>;
194			clocks = <&rcc CK_BUS_PCIE>;
195			st,mem-map = <0x0 0x10000000 0x0 0x10000000>;
196			#access-controller-cells = <1>;
197			status = "disabled";
198		};
199
200		risab1: risab@420f0000 {
201			compatible = "st,stm32mp25-risab";
202			reg = <0x420f0000 0x1000>;
203			clocks = <&rcc CK_ICN_LS_MCU>;
204			st,mem-map = <0xa000000 0x20000>;
205			#access-controller-cells = <1>;
206		};
207
208		risab2: risab@42100000 {
209			compatible = "st,stm32mp25-risab";
210			reg = <0x42100000 0x1000>;
211			clocks = <&rcc CK_ICN_LS_MCU>;
212			st,mem-map = <0xa020000 0x20000>;
213			#access-controller-cells = <1>;
214		};
215
216		risab3: risab@42110000 {
217			compatible = "st,stm32mp25-risab";
218			reg = <0x42110000 0x1000>;
219			clocks = <&rcc CK_ICN_LS_MCU>;
220			st,mem-map = <0xa040000 0x20000>;
221			#access-controller-cells = <1>;
222		};
223
224		risab4: risab@42120000 {
225			compatible = "st,stm32mp25-risab";
226			reg = <0x42120000 0x1000>;
227			clocks = <&rcc CK_ICN_LS_MCU>;
228			st,mem-map = <0xa060000 0x20000>;
229			#access-controller-cells = <1>;
230		};
231
232		risab5: risab@42130000 {
233			compatible = "st,stm32mp25-risab";
234			reg = <0x42130000 0x1000>;
235			clocks = <&rcc CK_ICN_LS_MCU>;
236			st,mem-map = <0xa080000 0x20000>;
237			#access-controller-cells = <1>;
238		};
239
240		risab6: risab@42140000 {
241			compatible = "st,stm32mp25-risab";
242			reg = <0x42140000 0x1000>;
243			clocks = <&rcc CK_ICN_LS_MCU>;
244			st,mem-map = <0xa0a0000 0x20000>;
245			#access-controller-cells = <1>;
246			status = "disabled";
247		};
248
249		serc: serc@44080000 {
250			compatible = "st,stm32mp25-serc";
251			reg = <0x44080000 0x1000>;
252			interrupts = <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>;
253			clocks = <&rcc CK_BUS_SERC>;
254		};
255
256		rcc: rcc@44200000 {
257			compatible = "st,stm32mp25-rcc", "syscon";
258			reg = <0x44200000 0x10000>;
259			interrupts = <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>;
260
261			#clock-cells = <1>;
262			#reset-cells = <1>;
263			clocks = <&clk_hse>, <&clk_hsi>, <&clk_lse>,
264				 <&clk_lsi>, <&clk_msi>, <&clk_i2sin>;
265			clock-names = "clk-hse", "clk-hsi", "clk-lse",
266				      "clk-lsi", "clk-msi", "clk-i2sin";
267
268			hsi_calibration: hsi-calibration {
269				compatible = "st,hsi-cal";
270				st,cal_hsi_dev = <31>;
271				st,cal_hsi_ref = <1953>;
272				status = "disabled";
273			};
274
275			msi_calibration: msi-calibration {
276				compatible = "st,msi-cal";
277				status = "disabled";
278			};
279		};
280
281		syscfg: syscon@44230000 {
282			reg = <0x44230000 0x10000>;
283			status = "disabled";
284		};
285
286		pinctrl: pinctrl@44240000 {
287			#address-cells = <1>;
288			#size-cells = <1>;
289			compatible = "st,stm32mp257-pinctrl";
290			ranges = <0 0x44240000 0xa0400>;
291			pins-are-numbered;
292
293			gpioa: gpio@44240000 {
294				gpio-controller;
295				#gpio-cells = <2>;
296				interrupt-controller;
297				#interrupt-cells = <2>;
298				#access-controller-cells = <1>;
299				reg = <0x0 0x400>;
300				clocks = <&rcc CK_BUS_GPIOA>;
301				st,bank-name = "GPIOA";
302				status = "disabled";
303			};
304
305			gpiob: gpio@44250000 {
306				gpio-controller;
307				#gpio-cells = <2>;
308				interrupt-controller;
309				#interrupt-cells = <2>;
310				#access-controller-cells = <1>;
311				reg = <0x10000 0x400>;
312				clocks = <&rcc CK_BUS_GPIOB>;
313				st,bank-name = "GPIOB";
314				status = "disabled";
315			};
316
317			gpioc: gpio@44260000 {
318				gpio-controller;
319				#gpio-cells = <2>;
320				interrupt-controller;
321				#interrupt-cells = <2>;
322				#access-controller-cells = <1>;
323				reg = <0x20000 0x400>;
324				clocks = <&rcc CK_BUS_GPIOC>;
325				st,bank-name = "GPIOC";
326				status = "disabled";
327			};
328
329			gpiod: gpio@44270000 {
330				gpio-controller;
331				#gpio-cells = <2>;
332				interrupt-controller;
333				#interrupt-cells = <2>;
334				#access-controller-cells = <1>;
335				reg = <0x30000 0x400>;
336				clocks = <&rcc CK_BUS_GPIOD>;
337				st,bank-name = "GPIOD";
338				status = "disabled";
339			};
340
341			gpioe: gpio@44280000 {
342				gpio-controller;
343				#gpio-cells = <2>;
344				interrupt-controller;
345				#interrupt-cells = <2>;
346				#access-controller-cells = <1>;
347				reg = <0x40000 0x400>;
348				clocks = <&rcc CK_BUS_GPIOE>;
349				st,bank-name = "GPIOE";
350				status = "disabled";
351			};
352
353			gpiof: gpio@44290000 {
354				gpio-controller;
355				#gpio-cells = <2>;
356				interrupt-controller;
357				#interrupt-cells = <2>;
358				#access-controller-cells = <1>;
359				reg = <0x50000 0x400>;
360				clocks = <&rcc CK_BUS_GPIOF>;
361				st,bank-name = "GPIOF";
362				status = "disabled";
363			};
364
365			gpiog: gpio@442a0000 {
366				gpio-controller;
367				#gpio-cells = <2>;
368				interrupt-controller;
369				#interrupt-cells = <2>;
370				#access-controller-cells = <1>;
371				reg = <0x60000 0x400>;
372				clocks = <&rcc CK_BUS_GPIOG>;
373				st,bank-name = "GPIOG";
374				status = "disabled";
375			};
376
377			gpioh: gpio@442b0000 {
378				gpio-controller;
379				#gpio-cells = <2>;
380				interrupt-controller;
381				#interrupt-cells = <2>;
382				#access-controller-cells = <1>;
383				reg = <0x70000 0x400>;
384				clocks = <&rcc CK_BUS_GPIOH>;
385				st,bank-name = "GPIOH";
386				status = "disabled";
387			};
388
389			gpioi: gpio@442c0000 {
390				gpio-controller;
391				#gpio-cells = <2>;
392				interrupt-controller;
393				#interrupt-cells = <2>;
394				#access-controller-cells = <1>;
395				reg = <0x80000 0x400>;
396				clocks = <&rcc CK_BUS_GPIOI>;
397				st,bank-name = "GPIOI";
398				status = "disabled";
399			};
400
401			gpioj: gpio@442d0000 {
402				gpio-controller;
403				#gpio-cells = <2>;
404				interrupt-controller;
405				#interrupt-cells = <2>;
406				#access-controller-cells = <1>;
407				reg = <0x90000 0x400>;
408				clocks = <&rcc CK_BUS_GPIOJ>;
409				st,bank-name = "GPIOJ";
410				status = "disabled";
411			};
412
413			gpiok: gpio@442e0000 {
414				gpio-controller;
415				#gpio-cells = <2>;
416				interrupt-controller;
417				#interrupt-cells = <2>;
418				#access-controller-cells = <1>;
419				reg = <0xa0000 0x400>;
420				clocks = <&rcc CK_BUS_GPIOK>;
421				st,bank-name = "GPIOK";
422				status = "disabled";
423			};
424		};
425
426		rtc: rtc@46000000 {
427			compatible = "st,stm32mp25-rtc";
428			reg = <0x46000000 0x400>;
429			clocks = <&rcc CK_BUS_RTC>, <&rcc RTC_CK>;
430			clock-names = "pclk", "rtc_ck";
431			interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
432		};
433
434		tamp: tamp@46010000 {
435			compatible = "st,stm32mp25-tamp";
436			reg = <0x46010000 0x400>;
437			clocks = <&rcc CK_BUS_RTC>;
438			interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
439			#address-cells = <1>;
440			#size-cells = <1>;
441			ranges;
442			st,backup-zones = <24 24 24 24 12 12 8>;
443		};
444
445		pinctrl_z: pinctrl-z@46200000 {
446			#address-cells = <1>;
447			#size-cells = <1>;
448			compatible = "st,stm32mp257-z-pinctrl";
449			ranges = <0 0x46200000 0x400>;
450			pins-are-numbered;
451
452			gpioz: gpio@46200000 {
453				gpio-controller;
454				#gpio-cells = <2>;
455				interrupt-controller;
456				#interrupt-cells = <2>;
457				#access-controller-cells = <1>;
458				reg = <0 0x400>;
459				clocks = <&rcc CK_BUS_GPIOZ>;
460				st,bank-name = "GPIOZ";
461				st,bank-ioport = <11>;
462				status = "disabled";
463			};
464		};
465
466		hsem: hwspinlock@46240000 {
467			compatible = "st,stm32mp25-hsem";
468			reg = <0x46240000 0x400>;
469			interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
470			clocks = <&rcc CK_BUS_HSEM>;
471			status = "disabled";
472		};
473
474		ipcc2: mailbox@46250000 {
475			compatible = "st,stm32mp25-ipcc";
476			reg = <0x46250000 0x400>;
477			clocks = <&rcc CK_BUS_IPCC2>;
478			status = "disabled";
479		};
480
481		stgenc: stgen@48080000 {
482			compatible = "st,stm32mp25-stgen";
483			reg = <0x48080000 0x1000>;
484			clocks = <&rcc CK_BUS_STGEN>, <&rcc CK_KER_STGEN>;
485			clock-names = "bus", "stgen_clk";
486		};
487
488		fmc: memory-controller@48200000 {
489			#address-cells = <2>;
490			#size-cells = <1>;
491			compatible = "st,stm32mp25-fmc2-ebi";
492			reg = <0x48200000 0x400>;
493			clocks = <&rcc CK_KER_FMC>;
494			resets = <&rcc FMC_R>;
495			status = "disabled";
496
497			ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */
498				 <1 0 0x64000000 0x04000000>, /* EBI CS 2 */
499				 <2 0 0x68000000 0x04000000>, /* EBI CS 3 */
500				 <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */
501				 <4 0 0x80000000 0x10000000>; /* NAND */
502		};
503	};
504};
505