xref: /freebsd-src/sys/contrib/device-tree/src/arm64/st/stm32mp251.dtsi (revision 01950c46b8155250f64374fb72fc11faa44bf099)
1f126890aSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
2f126890aSEmmanuel Vadot/*
3f126890aSEmmanuel Vadot * Copyright (C) STMicroelectronics 2023 - All Rights Reserved
4f126890aSEmmanuel Vadot * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
5f126890aSEmmanuel Vadot */
6f126890aSEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
7f126890aSEmmanuel Vadot
8f126890aSEmmanuel Vadot/ {
9f126890aSEmmanuel Vadot	#address-cells = <2>;
10f126890aSEmmanuel Vadot	#size-cells = <2>;
11f126890aSEmmanuel Vadot
12f126890aSEmmanuel Vadot	cpus {
13f126890aSEmmanuel Vadot		#address-cells = <1>;
14f126890aSEmmanuel Vadot		#size-cells = <0>;
15f126890aSEmmanuel Vadot
16f126890aSEmmanuel Vadot		cpu0: cpu@0 {
17f126890aSEmmanuel Vadot			compatible = "arm,cortex-a35";
18f126890aSEmmanuel Vadot			device_type = "cpu";
19f126890aSEmmanuel Vadot			reg = <0>;
20f126890aSEmmanuel Vadot			enable-method = "psci";
21f126890aSEmmanuel Vadot		};
22f126890aSEmmanuel Vadot	};
23f126890aSEmmanuel Vadot
24f126890aSEmmanuel Vadot	arm-pmu {
25f126890aSEmmanuel Vadot		compatible = "arm,cortex-a35-pmu";
26f126890aSEmmanuel Vadot		interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>;
27f126890aSEmmanuel Vadot		interrupt-affinity = <&cpu0>;
28f126890aSEmmanuel Vadot		interrupt-parent = <&intc>;
29f126890aSEmmanuel Vadot	};
30f126890aSEmmanuel Vadot
3184943d6fSEmmanuel Vadot	arm_wdt: watchdog {
3284943d6fSEmmanuel Vadot		compatible = "arm,smc-wdt";
3384943d6fSEmmanuel Vadot		arm,smc-id = <0xb200005a>;
3484943d6fSEmmanuel Vadot		status = "disabled";
3584943d6fSEmmanuel Vadot	};
3684943d6fSEmmanuel Vadot
37f126890aSEmmanuel Vadot	clocks {
38f126890aSEmmanuel Vadot		ck_flexgen_08: ck-flexgen-08 {
39f126890aSEmmanuel Vadot			#clock-cells = <0>;
40f126890aSEmmanuel Vadot			compatible = "fixed-clock";
41f126890aSEmmanuel Vadot			clock-frequency = <100000000>;
42f126890aSEmmanuel Vadot		};
43f126890aSEmmanuel Vadot
44f126890aSEmmanuel Vadot		ck_flexgen_51: ck-flexgen-51 {
45f126890aSEmmanuel Vadot			#clock-cells = <0>;
46f126890aSEmmanuel Vadot			compatible = "fixed-clock";
47f126890aSEmmanuel Vadot			clock-frequency = <200000000>;
48f126890aSEmmanuel Vadot		};
49f126890aSEmmanuel Vadot
50f126890aSEmmanuel Vadot		ck_icn_ls_mcu: ck-icn-ls-mcu {
51f126890aSEmmanuel Vadot			#clock-cells = <0>;
52f126890aSEmmanuel Vadot			compatible = "fixed-clock";
53f126890aSEmmanuel Vadot			clock-frequency = <200000000>;
54f126890aSEmmanuel Vadot		};
55*01950c46SEmmanuel Vadot
56*01950c46SEmmanuel Vadot		ck_icn_p_vdec: ck-icn-p-vdec {
57*01950c46SEmmanuel Vadot			#clock-cells = <0>;
58*01950c46SEmmanuel Vadot			compatible = "fixed-clock";
59*01950c46SEmmanuel Vadot			clock-frequency = <200000000>;
60*01950c46SEmmanuel Vadot		};
61*01950c46SEmmanuel Vadot
62*01950c46SEmmanuel Vadot		ck_icn_p_venc: ck-icn-p-venc {
63*01950c46SEmmanuel Vadot			#clock-cells = <0>;
64*01950c46SEmmanuel Vadot			compatible = "fixed-clock";
65*01950c46SEmmanuel Vadot			clock-frequency = <200000000>;
66*01950c46SEmmanuel Vadot		};
67f126890aSEmmanuel Vadot	};
68f126890aSEmmanuel Vadot
69f126890aSEmmanuel Vadot	firmware {
70f126890aSEmmanuel Vadot		optee {
71f126890aSEmmanuel Vadot			compatible = "linaro,optee-tz";
72f126890aSEmmanuel Vadot			method = "smc";
73f126890aSEmmanuel Vadot		};
74f126890aSEmmanuel Vadot
75f126890aSEmmanuel Vadot		scmi {
76f126890aSEmmanuel Vadot			compatible = "linaro,scmi-optee";
77f126890aSEmmanuel Vadot			#address-cells = <1>;
78f126890aSEmmanuel Vadot			#size-cells = <0>;
79f126890aSEmmanuel Vadot			linaro,optee-channel-id = <0>;
80f126890aSEmmanuel Vadot
81f126890aSEmmanuel Vadot			scmi_clk: protocol@14 {
82f126890aSEmmanuel Vadot				reg = <0x14>;
83f126890aSEmmanuel Vadot				#clock-cells = <1>;
84f126890aSEmmanuel Vadot			};
85f126890aSEmmanuel Vadot
86f126890aSEmmanuel Vadot			scmi_reset: protocol@16 {
87f126890aSEmmanuel Vadot				reg = <0x16>;
88f126890aSEmmanuel Vadot				#reset-cells = <1>;
89f126890aSEmmanuel Vadot			};
90f126890aSEmmanuel Vadot		};
91f126890aSEmmanuel Vadot	};
92f126890aSEmmanuel Vadot
93f126890aSEmmanuel Vadot	intc: interrupt-controller@4ac00000 {
94f126890aSEmmanuel Vadot		compatible = "arm,cortex-a7-gic";
95f126890aSEmmanuel Vadot		#interrupt-cells = <3>;
96f126890aSEmmanuel Vadot		#address-cells = <1>;
97f126890aSEmmanuel Vadot		interrupt-controller;
98f126890aSEmmanuel Vadot		reg = <0x0 0x4ac10000 0x0 0x1000>,
99f126890aSEmmanuel Vadot		      <0x0 0x4ac20000 0x0 0x2000>,
100f126890aSEmmanuel Vadot		      <0x0 0x4ac40000 0x0 0x2000>,
101f126890aSEmmanuel Vadot		      <0x0 0x4ac60000 0x0 0x2000>;
102f126890aSEmmanuel Vadot	};
103f126890aSEmmanuel Vadot
104f126890aSEmmanuel Vadot	psci {
105f126890aSEmmanuel Vadot		compatible = "arm,psci-1.0";
106f126890aSEmmanuel Vadot		method = "smc";
107f126890aSEmmanuel Vadot	};
108f126890aSEmmanuel Vadot
109f126890aSEmmanuel Vadot	timer {
110f126890aSEmmanuel Vadot		compatible = "arm,armv8-timer";
111f126890aSEmmanuel Vadot		interrupt-parent = <&intc>;
112f126890aSEmmanuel Vadot		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
113f126890aSEmmanuel Vadot			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
114f126890aSEmmanuel Vadot			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
115f126890aSEmmanuel Vadot			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
116f126890aSEmmanuel Vadot		always-on;
117f126890aSEmmanuel Vadot	};
118f126890aSEmmanuel Vadot
119f126890aSEmmanuel Vadot	soc@0 {
120f126890aSEmmanuel Vadot		compatible = "simple-bus";
121f126890aSEmmanuel Vadot		#address-cells = <1>;
122f126890aSEmmanuel Vadot		#size-cells = <1>;
123f126890aSEmmanuel Vadot		interrupt-parent = <&intc>;
124f126890aSEmmanuel Vadot		ranges = <0x0 0x0 0x0 0x80000000>;
125f126890aSEmmanuel Vadot
126f126890aSEmmanuel Vadot		rifsc: rifsc-bus@42080000 {
127f126890aSEmmanuel Vadot			compatible = "simple-bus";
128f126890aSEmmanuel Vadot			reg = <0x42080000 0x1000>;
129f126890aSEmmanuel Vadot			#address-cells = <1>;
130f126890aSEmmanuel Vadot			#size-cells = <1>;
131f126890aSEmmanuel Vadot			ranges;
132f126890aSEmmanuel Vadot
133f126890aSEmmanuel Vadot			usart2: serial@400e0000 {
134f126890aSEmmanuel Vadot				compatible = "st,stm32h7-uart";
135f126890aSEmmanuel Vadot				reg = <0x400e0000 0x400>;
136f126890aSEmmanuel Vadot				interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
137f126890aSEmmanuel Vadot				clocks = <&ck_flexgen_08>;
138f126890aSEmmanuel Vadot				status = "disabled";
139f126890aSEmmanuel Vadot			};
14084943d6fSEmmanuel Vadot
14184943d6fSEmmanuel Vadot			sdmmc1: mmc@48220000 {
14284943d6fSEmmanuel Vadot				compatible = "st,stm32mp25-sdmmc2", "arm,pl18x", "arm,primecell";
14384943d6fSEmmanuel Vadot				arm,primecell-periphid = <0x00353180>;
14484943d6fSEmmanuel Vadot				reg = <0x48220000 0x400>, <0x44230400 0x8>;
14584943d6fSEmmanuel Vadot				interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
14684943d6fSEmmanuel Vadot				clocks = <&ck_flexgen_51>;
14784943d6fSEmmanuel Vadot				clock-names = "apb_pclk";
14884943d6fSEmmanuel Vadot				cap-sd-highspeed;
14984943d6fSEmmanuel Vadot				cap-mmc-highspeed;
15084943d6fSEmmanuel Vadot				max-frequency = <120000000>;
15184943d6fSEmmanuel Vadot				status = "disabled";
15284943d6fSEmmanuel Vadot			};
153f126890aSEmmanuel Vadot		};
154f126890aSEmmanuel Vadot
1558d13bc63SEmmanuel Vadot		bsec: efuse@44000000 {
1568d13bc63SEmmanuel Vadot			compatible = "st,stm32mp25-bsec";
1578d13bc63SEmmanuel Vadot			reg = <0x44000000 0x1000>;
1588d13bc63SEmmanuel Vadot			#address-cells = <1>;
1598d13bc63SEmmanuel Vadot			#size-cells = <1>;
1608d13bc63SEmmanuel Vadot
1618d13bc63SEmmanuel Vadot			part_number_otp@24 {
1628d13bc63SEmmanuel Vadot				reg = <0x24 0x4>;
1638d13bc63SEmmanuel Vadot			};
1648d13bc63SEmmanuel Vadot
1658d13bc63SEmmanuel Vadot			package_otp@1e8 {
1668d13bc63SEmmanuel Vadot				reg = <0x1e8 0x1>;
1678d13bc63SEmmanuel Vadot				bits = <0 3>;
1688d13bc63SEmmanuel Vadot			};
1698d13bc63SEmmanuel Vadot		};
1708d13bc63SEmmanuel Vadot
171f126890aSEmmanuel Vadot		syscfg: syscon@44230000 {
172f126890aSEmmanuel Vadot			compatible = "st,stm32mp25-syscfg", "syscon";
173f126890aSEmmanuel Vadot			reg = <0x44230000 0x10000>;
174f126890aSEmmanuel Vadot		};
175f126890aSEmmanuel Vadot
176f126890aSEmmanuel Vadot		pinctrl: pinctrl@44240000 {
177f126890aSEmmanuel Vadot			#address-cells = <1>;
178f126890aSEmmanuel Vadot			#size-cells = <1>;
179f126890aSEmmanuel Vadot			compatible = "st,stm32mp257-pinctrl";
180f126890aSEmmanuel Vadot			ranges = <0 0x44240000 0xa0400>;
181f126890aSEmmanuel Vadot			pins-are-numbered;
182f126890aSEmmanuel Vadot
183f126890aSEmmanuel Vadot			gpioa: gpio@44240000 {
184f126890aSEmmanuel Vadot				gpio-controller;
185f126890aSEmmanuel Vadot				#gpio-cells = <2>;
186f126890aSEmmanuel Vadot				interrupt-controller;
187f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
188f126890aSEmmanuel Vadot				reg = <0x0 0x400>;
189f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
190f126890aSEmmanuel Vadot				st,bank-name = "GPIOA";
191f126890aSEmmanuel Vadot				status = "disabled";
192f126890aSEmmanuel Vadot			};
193f126890aSEmmanuel Vadot
194f126890aSEmmanuel Vadot			gpiob: gpio@44250000 {
195f126890aSEmmanuel Vadot				gpio-controller;
196f126890aSEmmanuel Vadot				#gpio-cells = <2>;
197f126890aSEmmanuel Vadot				interrupt-controller;
198f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
199f126890aSEmmanuel Vadot				reg = <0x10000 0x400>;
200f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
201f126890aSEmmanuel Vadot				st,bank-name = "GPIOB";
202f126890aSEmmanuel Vadot				status = "disabled";
203f126890aSEmmanuel Vadot			};
204f126890aSEmmanuel Vadot
205f126890aSEmmanuel Vadot			gpioc: gpio@44260000 {
206f126890aSEmmanuel Vadot				gpio-controller;
207f126890aSEmmanuel Vadot				#gpio-cells = <2>;
208f126890aSEmmanuel Vadot				interrupt-controller;
209f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
210f126890aSEmmanuel Vadot				reg = <0x20000 0x400>;
211f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
212f126890aSEmmanuel Vadot				st,bank-name = "GPIOC";
213f126890aSEmmanuel Vadot				status = "disabled";
214f126890aSEmmanuel Vadot			};
215f126890aSEmmanuel Vadot
216f126890aSEmmanuel Vadot			gpiod: gpio@44270000 {
217f126890aSEmmanuel Vadot				gpio-controller;
218f126890aSEmmanuel Vadot				#gpio-cells = <2>;
219f126890aSEmmanuel Vadot				interrupt-controller;
220f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
221f126890aSEmmanuel Vadot				reg = <0x30000 0x400>;
222f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
223f126890aSEmmanuel Vadot				st,bank-name = "GPIOD";
224f126890aSEmmanuel Vadot				status = "disabled";
225f126890aSEmmanuel Vadot			};
226f126890aSEmmanuel Vadot
227f126890aSEmmanuel Vadot			gpioe: gpio@44280000 {
228f126890aSEmmanuel Vadot				gpio-controller;
229f126890aSEmmanuel Vadot				#gpio-cells = <2>;
230f126890aSEmmanuel Vadot				interrupt-controller;
231f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
232f126890aSEmmanuel Vadot				reg = <0x40000 0x400>;
233f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
234f126890aSEmmanuel Vadot				st,bank-name = "GPIOE";
235f126890aSEmmanuel Vadot				status = "disabled";
236f126890aSEmmanuel Vadot			};
237f126890aSEmmanuel Vadot
238f126890aSEmmanuel Vadot			gpiof: gpio@44290000 {
239f126890aSEmmanuel Vadot				gpio-controller;
240f126890aSEmmanuel Vadot				#gpio-cells = <2>;
241f126890aSEmmanuel Vadot				interrupt-controller;
242f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
243f126890aSEmmanuel Vadot				reg = <0x50000 0x400>;
244f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
245f126890aSEmmanuel Vadot				st,bank-name = "GPIOF";
246f126890aSEmmanuel Vadot				status = "disabled";
247f126890aSEmmanuel Vadot			};
248f126890aSEmmanuel Vadot
249f126890aSEmmanuel Vadot			gpiog: gpio@442a0000 {
250f126890aSEmmanuel Vadot				gpio-controller;
251f126890aSEmmanuel Vadot				#gpio-cells = <2>;
252f126890aSEmmanuel Vadot				interrupt-controller;
253f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
254f126890aSEmmanuel Vadot				reg = <0x60000 0x400>;
255f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
256f126890aSEmmanuel Vadot				st,bank-name = "GPIOG";
257f126890aSEmmanuel Vadot				status = "disabled";
258f126890aSEmmanuel Vadot			};
259f126890aSEmmanuel Vadot
260f126890aSEmmanuel Vadot			gpioh: gpio@442b0000 {
261f126890aSEmmanuel Vadot				gpio-controller;
262f126890aSEmmanuel Vadot				#gpio-cells = <2>;
263f126890aSEmmanuel Vadot				interrupt-controller;
264f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
265f126890aSEmmanuel Vadot				reg = <0x70000 0x400>;
266f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
267f126890aSEmmanuel Vadot				st,bank-name = "GPIOH";
268f126890aSEmmanuel Vadot				status = "disabled";
269f126890aSEmmanuel Vadot			};
270f126890aSEmmanuel Vadot
271f126890aSEmmanuel Vadot			gpioi: gpio@442c0000 {
272f126890aSEmmanuel Vadot				gpio-controller;
273f126890aSEmmanuel Vadot				#gpio-cells = <2>;
274f126890aSEmmanuel Vadot				interrupt-controller;
275f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
276f126890aSEmmanuel Vadot				reg = <0x80000 0x400>;
277f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
278f126890aSEmmanuel Vadot				st,bank-name = "GPIOI";
279f126890aSEmmanuel Vadot				status = "disabled";
280f126890aSEmmanuel Vadot			};
281f126890aSEmmanuel Vadot
282f126890aSEmmanuel Vadot			gpioj: gpio@442d0000 {
283f126890aSEmmanuel Vadot				gpio-controller;
284f126890aSEmmanuel Vadot				#gpio-cells = <2>;
285f126890aSEmmanuel Vadot				interrupt-controller;
286f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
287f126890aSEmmanuel Vadot				reg = <0x90000 0x400>;
288f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
289f126890aSEmmanuel Vadot				st,bank-name = "GPIOJ";
290f126890aSEmmanuel Vadot				status = "disabled";
291f126890aSEmmanuel Vadot			};
292f126890aSEmmanuel Vadot
293f126890aSEmmanuel Vadot			gpiok: gpio@442e0000 {
294f126890aSEmmanuel Vadot				gpio-controller;
295f126890aSEmmanuel Vadot				#gpio-cells = <2>;
296f126890aSEmmanuel Vadot				interrupt-controller;
297f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
298f126890aSEmmanuel Vadot				reg = <0xa0000 0x400>;
299f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
300f126890aSEmmanuel Vadot				st,bank-name = "GPIOK";
301f126890aSEmmanuel Vadot				status = "disabled";
302f126890aSEmmanuel Vadot			};
303f126890aSEmmanuel Vadot		};
304f126890aSEmmanuel Vadot
305f126890aSEmmanuel Vadot		pinctrl_z: pinctrl@46200000 {
306f126890aSEmmanuel Vadot			#address-cells = <1>;
307f126890aSEmmanuel Vadot			#size-cells = <1>;
308f126890aSEmmanuel Vadot			compatible = "st,stm32mp257-z-pinctrl";
309f126890aSEmmanuel Vadot			ranges = <0 0x46200000 0x400>;
310f126890aSEmmanuel Vadot			pins-are-numbered;
311f126890aSEmmanuel Vadot
312f126890aSEmmanuel Vadot			gpioz: gpio@46200000 {
313f126890aSEmmanuel Vadot				gpio-controller;
314f126890aSEmmanuel Vadot				#gpio-cells = <2>;
315f126890aSEmmanuel Vadot				interrupt-controller;
316f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
317f126890aSEmmanuel Vadot				reg = <0 0x400>;
318f126890aSEmmanuel Vadot				clocks = <&ck_icn_ls_mcu>;
319f126890aSEmmanuel Vadot				st,bank-name = "GPIOZ";
320f126890aSEmmanuel Vadot				st,bank-ioport = <11>;
321f126890aSEmmanuel Vadot				status = "disabled";
322f126890aSEmmanuel Vadot			};
323f126890aSEmmanuel Vadot
324f126890aSEmmanuel Vadot		};
325f126890aSEmmanuel Vadot	};
326f126890aSEmmanuel Vadot};
327