xref: /linux/arch/arm64/boot/dts/st/stm32mp251.dtsi (revision 8f5b5f78113e881cb8570c961b0dc42b218a1b9e)
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#include <dt-bindings/clock/st,stm32mp25-rcc.h>
7#include <dt-bindings/interrupt-controller/arm-gic.h>
8#include <dt-bindings/reset/st,stm32mp25-rcc.h>
9
10/ {
11	#address-cells = <2>;
12	#size-cells = <2>;
13
14	cpus {
15		#address-cells = <1>;
16		#size-cells = <0>;
17
18		cpu0: cpu@0 {
19			compatible = "arm,cortex-a35";
20			device_type = "cpu";
21			reg = <0>;
22			enable-method = "psci";
23		};
24	};
25
26	arm-pmu {
27		compatible = "arm,cortex-a35-pmu";
28		interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>;
29		interrupt-affinity = <&cpu0>;
30		interrupt-parent = <&intc>;
31	};
32
33	arm_wdt: watchdog {
34		compatible = "arm,smc-wdt";
35		arm,smc-id = <0xb200005a>;
36		status = "disabled";
37	};
38
39	clocks {
40		clk_dsi_txbyte: txbyteclk {
41			#clock-cells = <0>;
42			compatible = "fixed-clock";
43			clock-frequency = <0>;
44		};
45
46		clk_rcbsec: clk-rcbsec {
47			#clock-cells = <0>;
48			compatible = "fixed-clock";
49			clock-frequency = <64000000>;
50		};
51	};
52
53	firmware {
54		optee {
55			compatible = "linaro,optee-tz";
56			method = "smc";
57		};
58
59		scmi {
60			compatible = "linaro,scmi-optee";
61			#address-cells = <1>;
62			#size-cells = <0>;
63			linaro,optee-channel-id = <0>;
64
65			scmi_clk: protocol@14 {
66				reg = <0x14>;
67				#clock-cells = <1>;
68			};
69
70			scmi_reset: protocol@16 {
71				reg = <0x16>;
72				#reset-cells = <1>;
73			};
74		};
75	};
76
77	intc: interrupt-controller@4ac00000 {
78		compatible = "arm,cortex-a7-gic";
79		#interrupt-cells = <3>;
80		#address-cells = <1>;
81		interrupt-controller;
82		reg = <0x0 0x4ac10000 0x0 0x1000>,
83		      <0x0 0x4ac20000 0x0 0x2000>,
84		      <0x0 0x4ac40000 0x0 0x2000>,
85		      <0x0 0x4ac60000 0x0 0x2000>;
86	};
87
88	psci {
89		compatible = "arm,psci-1.0";
90		method = "smc";
91	};
92
93	timer {
94		compatible = "arm,armv8-timer";
95		interrupt-parent = <&intc>;
96		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
97			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
98			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
99			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
100		always-on;
101	};
102
103	soc@0 {
104		compatible = "simple-bus";
105		#address-cells = <1>;
106		#size-cells = <1>;
107		interrupt-parent = <&intc>;
108		ranges = <0x0 0x0 0x0 0x80000000>;
109
110		rifsc: bus@42080000 {
111			compatible = "st,stm32mp25-rifsc", "simple-bus";
112			reg = <0x42080000 0x1000>;
113			#address-cells = <1>;
114			#size-cells = <1>;
115			#access-controller-cells = <1>;
116			ranges;
117
118			spi2: spi@400b0000 {
119				#address-cells = <1>;
120				#size-cells = <0>;
121				compatible = "st,stm32mp25-spi";
122				reg = <0x400b0000 0x400>;
123				interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
124				clocks = <&rcc CK_KER_SPI2>;
125				resets = <&rcc SPI2_R>;
126				access-controllers = <&rifsc 23>;
127				status = "disabled";
128			};
129
130			spi3: spi@400c0000 {
131				#address-cells = <1>;
132				#size-cells = <0>;
133				compatible = "st,stm32mp25-spi";
134				reg = <0x400c0000 0x400>;
135				interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
136				clocks = <&rcc CK_KER_SPI3>;
137				resets = <&rcc SPI3_R>;
138				access-controllers = <&rifsc 24>;
139				status = "disabled";
140			};
141
142			usart2: serial@400e0000 {
143				compatible = "st,stm32h7-uart";
144				reg = <0x400e0000 0x400>;
145				interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
146				clocks = <&rcc CK_KER_USART2>;
147				access-controllers = <&rifsc 32>;
148				status = "disabled";
149			};
150
151			i2c1: i2c@40120000 {
152				compatible = "st,stm32mp25-i2c";
153				reg = <0x40120000 0x400>;
154				interrupt-names = "event";
155				interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
156				clocks = <&rcc CK_KER_I2C1>;
157				resets = <&rcc I2C1_R>;
158				#address-cells = <1>;
159				#size-cells = <0>;
160				access-controllers = <&rifsc 41>;
161				status = "disabled";
162			};
163
164			i2c2: i2c@40130000 {
165				compatible = "st,stm32mp25-i2c";
166				reg = <0x40130000 0x400>;
167				interrupt-names = "event";
168				interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
169				clocks = <&rcc CK_KER_I2C2>;
170				resets = <&rcc I2C2_R>;
171				#address-cells = <1>;
172				#size-cells = <0>;
173				access-controllers = <&rifsc 42>;
174				status = "disabled";
175			};
176
177			i2c3: i2c@40140000 {
178				compatible = "st,stm32mp25-i2c";
179				reg = <0x40140000 0x400>;
180				interrupt-names = "event";
181				interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
182				clocks = <&rcc CK_KER_I2C3>;
183				resets = <&rcc I2C3_R>;
184				#address-cells = <1>;
185				#size-cells = <0>;
186				access-controllers = <&rifsc 43>;
187				status = "disabled";
188			};
189
190			i2c4: i2c@40150000 {
191				compatible = "st,stm32mp25-i2c";
192				reg = <0x40150000 0x400>;
193				interrupt-names = "event";
194				interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
195				clocks = <&rcc CK_KER_I2C4>;
196				resets = <&rcc I2C4_R>;
197				#address-cells = <1>;
198				#size-cells = <0>;
199				access-controllers = <&rifsc 44>;
200				status = "disabled";
201			};
202
203			i2c5: i2c@40160000 {
204				compatible = "st,stm32mp25-i2c";
205				reg = <0x40160000 0x400>;
206				interrupt-names = "event";
207				interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
208				clocks = <&rcc CK_KER_I2C5>;
209				resets = <&rcc I2C5_R>;
210				#address-cells = <1>;
211				#size-cells = <0>;
212				access-controllers = <&rifsc 45>;
213				status = "disabled";
214			};
215
216			i2c6: i2c@40170000 {
217				compatible = "st,stm32mp25-i2c";
218				reg = <0x40170000 0x400>;
219				interrupt-names = "event";
220				interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
221				clocks = <&rcc CK_KER_I2C6>;
222				resets = <&rcc I2C6_R>;
223				#address-cells = <1>;
224				#size-cells = <0>;
225				access-controllers = <&rifsc 46>;
226				status = "disabled";
227			};
228
229			i2c7: i2c@40180000 {
230				compatible = "st,stm32mp25-i2c";
231				reg = <0x40180000 0x400>;
232				interrupt-names = "event";
233				interrupts = <GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>;
234				clocks = <&rcc CK_KER_I2C7>;
235				resets = <&rcc I2C7_R>;
236				#address-cells = <1>;
237				#size-cells = <0>;
238				access-controllers = <&rifsc 47>;
239				status = "disabled";
240			};
241
242			spi1: spi@40230000 {
243				#address-cells = <1>;
244				#size-cells = <0>;
245				compatible = "st,stm32mp25-spi";
246				reg = <0x40230000 0x400>;
247				interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
248				clocks = <&rcc CK_KER_SPI1>;
249				resets = <&rcc SPI1_R>;
250				access-controllers = <&rifsc 22>;
251				status = "disabled";
252			};
253
254			spi4: spi@40240000 {
255				#address-cells = <1>;
256				#size-cells = <0>;
257				compatible = "st,stm32mp25-spi";
258				reg = <0x40240000 0x400>;
259				interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
260				clocks = <&rcc CK_KER_SPI4>;
261				resets = <&rcc SPI4_R>;
262				access-controllers = <&rifsc 25>;
263				status = "disabled";
264			};
265
266			spi5: spi@40280000 {
267				#address-cells = <1>;
268				#size-cells = <0>;
269				compatible = "st,stm32mp25-spi";
270				reg = <0x40280000 0x400>;
271				interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
272				clocks = <&rcc CK_KER_SPI5>;
273				resets = <&rcc SPI5_R>;
274				access-controllers = <&rifsc 26>;
275				status = "disabled";
276			};
277
278			spi6: spi@40350000 {
279				#address-cells = <1>;
280				#size-cells = <0>;
281				compatible = "st,stm32mp25-spi";
282				reg = <0x40350000 0x400>;
283				interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
284				clocks = <&rcc CK_KER_SPI6>;
285				resets = <&rcc SPI6_R>;
286				access-controllers = <&rifsc 27>;
287				status = "disabled";
288			};
289
290			spi7: spi@40360000 {
291				#address-cells = <1>;
292				#size-cells = <0>;
293				compatible = "st,stm32mp25-spi";
294				reg = <0x40360000 0x400>;
295				interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
296				clocks = <&rcc CK_KER_SPI7>;
297				resets = <&rcc SPI7_R>;
298				access-controllers = <&rifsc 28>;
299				status = "disabled";
300			};
301
302			spi8: spi@46020000 {
303				#address-cells = <1>;
304				#size-cells = <0>;
305				compatible = "st,stm32mp25-spi";
306				reg = <0x46020000 0x400>;
307				interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
308				clocks = <&rcc CK_KER_SPI8>;
309				resets = <&rcc SPI8_R>;
310				access-controllers = <&rifsc 29>;
311				status = "disabled";
312			};
313
314			i2c8: i2c@46040000 {
315				compatible = "st,stm32mp25-i2c";
316				reg = <0x46040000 0x400>;
317				interrupt-names = "event";
318				interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
319				clocks = <&rcc CK_KER_I2C8>;
320				resets = <&rcc I2C8_R>;
321				#address-cells = <1>;
322				#size-cells = <0>;
323				access-controllers = <&rifsc 48>;
324				status = "disabled";
325			};
326
327			sdmmc1: mmc@48220000 {
328				compatible = "st,stm32mp25-sdmmc2", "arm,pl18x", "arm,primecell";
329				arm,primecell-periphid = <0x00353180>;
330				reg = <0x48220000 0x400>, <0x44230400 0x8>;
331				interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
332				clocks = <&rcc CK_KER_SDMMC1 >;
333				clock-names = "apb_pclk";
334				resets = <&rcc SDMMC1_R>;
335				cap-sd-highspeed;
336				cap-mmc-highspeed;
337				max-frequency = <120000000>;
338				access-controllers = <&rifsc 76>;
339				status = "disabled";
340			};
341		};
342
343		bsec: efuse@44000000 {
344			compatible = "st,stm32mp25-bsec";
345			reg = <0x44000000 0x1000>;
346			#address-cells = <1>;
347			#size-cells = <1>;
348
349			part_number_otp@24 {
350				reg = <0x24 0x4>;
351			};
352
353			package_otp@1e8 {
354				reg = <0x1e8 0x1>;
355				bits = <0 3>;
356			};
357		};
358
359		rcc: clock-controller@44200000 {
360			compatible = "st,stm32mp25-rcc";
361			reg = <0x44200000 0x10000>;
362			#clock-cells = <1>;
363			#reset-cells = <1>;
364			clocks = <&scmi_clk CK_SCMI_HSE>,
365				<&scmi_clk CK_SCMI_HSI>,
366				<&scmi_clk CK_SCMI_MSI>,
367				<&scmi_clk CK_SCMI_LSE>,
368				<&scmi_clk CK_SCMI_LSI>,
369				<&scmi_clk CK_SCMI_HSE_DIV2>,
370				<&scmi_clk CK_SCMI_ICN_HS_MCU>,
371				<&scmi_clk CK_SCMI_ICN_LS_MCU>,
372				<&scmi_clk CK_SCMI_ICN_SDMMC>,
373				<&scmi_clk CK_SCMI_ICN_DDR>,
374				<&scmi_clk CK_SCMI_ICN_DISPLAY>,
375				<&scmi_clk CK_SCMI_ICN_HSL>,
376				<&scmi_clk CK_SCMI_ICN_NIC>,
377				<&scmi_clk CK_SCMI_ICN_VID>,
378				<&scmi_clk CK_SCMI_FLEXGEN_07>,
379				<&scmi_clk CK_SCMI_FLEXGEN_08>,
380				<&scmi_clk CK_SCMI_FLEXGEN_09>,
381				<&scmi_clk CK_SCMI_FLEXGEN_10>,
382				<&scmi_clk CK_SCMI_FLEXGEN_11>,
383				<&scmi_clk CK_SCMI_FLEXGEN_12>,
384				<&scmi_clk CK_SCMI_FLEXGEN_13>,
385				<&scmi_clk CK_SCMI_FLEXGEN_14>,
386				<&scmi_clk CK_SCMI_FLEXGEN_15>,
387				<&scmi_clk CK_SCMI_FLEXGEN_16>,
388				<&scmi_clk CK_SCMI_FLEXGEN_17>,
389				<&scmi_clk CK_SCMI_FLEXGEN_18>,
390				<&scmi_clk CK_SCMI_FLEXGEN_19>,
391				<&scmi_clk CK_SCMI_FLEXGEN_20>,
392				<&scmi_clk CK_SCMI_FLEXGEN_21>,
393				<&scmi_clk CK_SCMI_FLEXGEN_22>,
394				<&scmi_clk CK_SCMI_FLEXGEN_23>,
395				<&scmi_clk CK_SCMI_FLEXGEN_24>,
396				<&scmi_clk CK_SCMI_FLEXGEN_25>,
397				<&scmi_clk CK_SCMI_FLEXGEN_26>,
398				<&scmi_clk CK_SCMI_FLEXGEN_27>,
399				<&scmi_clk CK_SCMI_FLEXGEN_28>,
400				<&scmi_clk CK_SCMI_FLEXGEN_29>,
401				<&scmi_clk CK_SCMI_FLEXGEN_30>,
402				<&scmi_clk CK_SCMI_FLEXGEN_31>,
403				<&scmi_clk CK_SCMI_FLEXGEN_32>,
404				<&scmi_clk CK_SCMI_FLEXGEN_33>,
405				<&scmi_clk CK_SCMI_FLEXGEN_34>,
406				<&scmi_clk CK_SCMI_FLEXGEN_35>,
407				<&scmi_clk CK_SCMI_FLEXGEN_36>,
408				<&scmi_clk CK_SCMI_FLEXGEN_37>,
409				<&scmi_clk CK_SCMI_FLEXGEN_38>,
410				<&scmi_clk CK_SCMI_FLEXGEN_39>,
411				<&scmi_clk CK_SCMI_FLEXGEN_40>,
412				<&scmi_clk CK_SCMI_FLEXGEN_41>,
413				<&scmi_clk CK_SCMI_FLEXGEN_42>,
414				<&scmi_clk CK_SCMI_FLEXGEN_43>,
415				<&scmi_clk CK_SCMI_FLEXGEN_44>,
416				<&scmi_clk CK_SCMI_FLEXGEN_45>,
417				<&scmi_clk CK_SCMI_FLEXGEN_46>,
418				<&scmi_clk CK_SCMI_FLEXGEN_47>,
419				<&scmi_clk CK_SCMI_FLEXGEN_48>,
420				<&scmi_clk CK_SCMI_FLEXGEN_49>,
421				<&scmi_clk CK_SCMI_FLEXGEN_50>,
422				<&scmi_clk CK_SCMI_FLEXGEN_51>,
423				<&scmi_clk CK_SCMI_FLEXGEN_52>,
424				<&scmi_clk CK_SCMI_FLEXGEN_53>,
425				<&scmi_clk CK_SCMI_FLEXGEN_54>,
426				<&scmi_clk CK_SCMI_FLEXGEN_55>,
427				<&scmi_clk CK_SCMI_FLEXGEN_56>,
428				<&scmi_clk CK_SCMI_FLEXGEN_57>,
429				<&scmi_clk CK_SCMI_FLEXGEN_58>,
430				<&scmi_clk CK_SCMI_FLEXGEN_59>,
431				<&scmi_clk CK_SCMI_FLEXGEN_60>,
432				<&scmi_clk CK_SCMI_FLEXGEN_61>,
433				<&scmi_clk CK_SCMI_FLEXGEN_62>,
434				<&scmi_clk CK_SCMI_FLEXGEN_63>,
435				<&scmi_clk CK_SCMI_ICN_APB1>,
436				<&scmi_clk CK_SCMI_ICN_APB2>,
437				<&scmi_clk CK_SCMI_ICN_APB3>,
438				<&scmi_clk CK_SCMI_ICN_APB4>,
439				<&scmi_clk CK_SCMI_ICN_APBDBG>,
440				<&scmi_clk CK_SCMI_TIMG1>,
441				<&scmi_clk CK_SCMI_TIMG2>,
442				<&scmi_clk CK_SCMI_PLL3>,
443				<&clk_dsi_txbyte>;
444		};
445
446		syscfg: syscon@44230000 {
447			compatible = "st,stm32mp25-syscfg", "syscon";
448			reg = <0x44230000 0x10000>;
449		};
450
451		pinctrl: pinctrl@44240000 {
452			#address-cells = <1>;
453			#size-cells = <1>;
454			compatible = "st,stm32mp257-pinctrl";
455			ranges = <0 0x44240000 0xa0400>;
456			pins-are-numbered;
457
458			gpioa: gpio@44240000 {
459				gpio-controller;
460				#gpio-cells = <2>;
461				interrupt-controller;
462				#interrupt-cells = <2>;
463				reg = <0x0 0x400>;
464				clocks = <&scmi_clk CK_SCMI_GPIOA>;
465				st,bank-name = "GPIOA";
466				status = "disabled";
467			};
468
469			gpiob: gpio@44250000 {
470				gpio-controller;
471				#gpio-cells = <2>;
472				interrupt-controller;
473				#interrupt-cells = <2>;
474				reg = <0x10000 0x400>;
475				clocks = <&scmi_clk CK_SCMI_GPIOB>;
476				st,bank-name = "GPIOB";
477				status = "disabled";
478			};
479
480			gpioc: gpio@44260000 {
481				gpio-controller;
482				#gpio-cells = <2>;
483				interrupt-controller;
484				#interrupt-cells = <2>;
485				reg = <0x20000 0x400>;
486				clocks = <&scmi_clk CK_SCMI_GPIOC>;
487				st,bank-name = "GPIOC";
488				status = "disabled";
489			};
490
491			gpiod: gpio@44270000 {
492				gpio-controller;
493				#gpio-cells = <2>;
494				interrupt-controller;
495				#interrupt-cells = <2>;
496				reg = <0x30000 0x400>;
497				clocks = <&scmi_clk CK_SCMI_GPIOD>;
498				st,bank-name = "GPIOD";
499				status = "disabled";
500			};
501
502			gpioe: gpio@44280000 {
503				gpio-controller;
504				#gpio-cells = <2>;
505				interrupt-controller;
506				#interrupt-cells = <2>;
507				reg = <0x40000 0x400>;
508				clocks = <&scmi_clk CK_SCMI_GPIOE>;
509				st,bank-name = "GPIOE";
510				status = "disabled";
511			};
512
513			gpiof: gpio@44290000 {
514				gpio-controller;
515				#gpio-cells = <2>;
516				interrupt-controller;
517				#interrupt-cells = <2>;
518				reg = <0x50000 0x400>;
519				clocks = <&scmi_clk CK_SCMI_GPIOF>;
520				st,bank-name = "GPIOF";
521				status = "disabled";
522			};
523
524			gpiog: gpio@442a0000 {
525				gpio-controller;
526				#gpio-cells = <2>;
527				interrupt-controller;
528				#interrupt-cells = <2>;
529				reg = <0x60000 0x400>;
530				clocks = <&scmi_clk CK_SCMI_GPIOG>;
531				st,bank-name = "GPIOG";
532				status = "disabled";
533			};
534
535			gpioh: gpio@442b0000 {
536				gpio-controller;
537				#gpio-cells = <2>;
538				interrupt-controller;
539				#interrupt-cells = <2>;
540				reg = <0x70000 0x400>;
541				clocks = <&scmi_clk CK_SCMI_GPIOH>;
542				st,bank-name = "GPIOH";
543				status = "disabled";
544			};
545
546			gpioi: gpio@442c0000 {
547				gpio-controller;
548				#gpio-cells = <2>;
549				interrupt-controller;
550				#interrupt-cells = <2>;
551				reg = <0x80000 0x400>;
552				clocks = <&scmi_clk CK_SCMI_GPIOI>;
553				st,bank-name = "GPIOI";
554				status = "disabled";
555			};
556
557			gpioj: gpio@442d0000 {
558				gpio-controller;
559				#gpio-cells = <2>;
560				interrupt-controller;
561				#interrupt-cells = <2>;
562				reg = <0x90000 0x400>;
563				clocks = <&scmi_clk CK_SCMI_GPIOJ>;
564				st,bank-name = "GPIOJ";
565				status = "disabled";
566			};
567
568			gpiok: gpio@442e0000 {
569				gpio-controller;
570				#gpio-cells = <2>;
571				interrupt-controller;
572				#interrupt-cells = <2>;
573				reg = <0xa0000 0x400>;
574				clocks = <&scmi_clk CK_SCMI_GPIOK>;
575				st,bank-name = "GPIOK";
576				status = "disabled";
577			};
578		};
579
580		pinctrl_z: pinctrl@46200000 {
581			#address-cells = <1>;
582			#size-cells = <1>;
583			compatible = "st,stm32mp257-z-pinctrl";
584			ranges = <0 0x46200000 0x400>;
585			pins-are-numbered;
586
587			gpioz: gpio@46200000 {
588				gpio-controller;
589				#gpio-cells = <2>;
590				interrupt-controller;
591				#interrupt-cells = <2>;
592				reg = <0 0x400>;
593				clocks = <&scmi_clk CK_SCMI_GPIOZ>;
594				st,bank-name = "GPIOZ";
595				st,bank-ioport = <11>;
596				status = "disabled";
597			};
598
599		};
600	};
601};
602