blob: 84e16bb2f2bf6bd2653a5cb335c3d357e152837f [file] [log] [blame]
Patrick Delaunay8e34fbb2022-05-20 18:24:39 +02001// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
3 * Copyright (C) STMicroelectronics 2021 - All Rights Reserved
4 * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
5 */
6#include <dt-bindings/interrupt-controller/arm-gic.h>
7
8/ {
9 #address-cells = <1>;
10 #size-cells = <1>;
11
12 cpus {
13 #address-cells = <1>;
14 #size-cells = <0>;
15
16 cpu0: cpu@0 {
17 compatible = "arm,cortex-a7";
18 device_type = "cpu";
19 reg = <0>;
20 };
21 };
22
23 arm-pmu {
24 compatible = "arm,cortex-a7-pmu";
25 interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
26 interrupt-affinity = <&cpu0>;
27 interrupt-parent = <&intc>;
28 };
29
Patrick Delaunayad09d082022-07-06 18:20:25 +020030 scmi_sram: sram@2ffff000 {
31 compatible = "mmio-sram";
32 reg = <0x2ffff000 0x1000>;
33 #address-cells = <1>;
34 #size-cells = <1>;
35 ranges = <0 0x2ffff000 0x1000>;
36
37 scmi_shm: scmi_shm@0 {
38 compatible = "arm,scmi-shmem";
39 reg = <0 0x80>;
40 };
41 };
42
Patrick Delaunayabf20ae2022-07-06 18:20:24 +020043 firmware {
44 optee: optee {
45 method = "smc";
46 compatible = "linaro,optee-tz";
47 };
Patrick Delaunayad09d082022-07-06 18:20:25 +020048
49 scmi: scmi {
50 compatible = "linaro,scmi-optee";
51 #address-cells = <1>;
52 #size-cells = <0>;
53 linaro,optee-channel-id = <0>;
54 shmem = <&scmi_shm>;
55
56 scmi_clk: protocol@14 {
57 reg = <0x14>;
58 #clock-cells = <1>;
59 };
60
61 scmi_reset: protocol@16 {
62 reg = <0x16>;
63 #reset-cells = <1>;
64 };
65 };
Patrick Delaunayabf20ae2022-07-06 18:20:24 +020066 };
67
Patrick Delaunay8e34fbb2022-05-20 18:24:39 +020068 clocks {
69 clk_axi: clk-axi {
70 #clock-cells = <0>;
71 compatible = "fixed-clock";
72 clock-frequency = <266500000>;
73 };
74
75 clk_hse: clk-hse {
76 #clock-cells = <0>;
77 compatible = "fixed-clock";
78 clock-frequency = <24000000>;
79 };
80
81 clk_hsi: clk-hsi {
82 #clock-cells = <0>;
83 compatible = "fixed-clock";
84 clock-frequency = <64000000>;
85 };
86
87 clk_lsi: clk-lsi {
88 #clock-cells = <0>;
89 compatible = "fixed-clock";
90 clock-frequency = <32000>;
91 };
92
93 clk_pclk3: clk-pclk3 {
94 #clock-cells = <0>;
95 compatible = "fixed-clock";
96 clock-frequency = <104438965>;
97 };
98
99 clk_pclk4: clk-pclk4 {
100 #clock-cells = <0>;
101 compatible = "fixed-clock";
102 clock-frequency = <133250000>;
103 };
104
105 clk_pll4_p: clk-pll4_p {
106 #clock-cells = <0>;
107 compatible = "fixed-clock";
108 clock-frequency = <50000000>;
109 };
110
111 clk_pll4_r: clk-pll4_r {
112 #clock-cells = <0>;
113 compatible = "fixed-clock";
114 clock-frequency = <99000000>;
115 };
Patrick Delaunay53dfe692022-06-30 10:20:17 +0200116
117 clk_rtc_k: clk-rtc-k {
118 #clock-cells = <0>;
119 compatible = "fixed-clock";
120 clock-frequency = <32768>;
121 };
Patrick Delaunay8e34fbb2022-05-20 18:24:39 +0200122 };
123
124 intc: interrupt-controller@a0021000 {
125 compatible = "arm,cortex-a7-gic";
126 #interrupt-cells = <3>;
127 interrupt-controller;
128 reg = <0xa0021000 0x1000>,
129 <0xa0022000 0x2000>;
130 };
131
132 psci {
133 compatible = "arm,psci-1.0";
134 method = "smc";
135 };
136
137 timer {
138 compatible = "arm,armv7-timer";
139 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
140 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
141 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
142 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
143 interrupt-parent = <&intc>;
144 always-on;
145 };
146
147 soc {
148 compatible = "simple-bus";
149 #address-cells = <1>;
150 #size-cells = <1>;
151 interrupt-parent = <&intc>;
152 ranges;
153
154 uart4: serial@40010000 {
155 compatible = "st,stm32h7-uart";
156 reg = <0x40010000 0x400>;
157 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
158 clocks = <&clk_hsi>;
159 status = "disabled";
160 };
161
162 dma1: dma-controller@48000000 {
163 compatible = "st,stm32-dma";
164 reg = <0x48000000 0x400>;
165 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
166 <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
167 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
168 <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
169 <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
170 <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
171 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
172 <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
173 clocks = <&clk_pclk4>;
174 #dma-cells = <4>;
175 st,mem2mem;
176 dma-requests = <8>;
177 };
178
179 dma2: dma-controller@48001000 {
180 compatible = "st,stm32-dma";
181 reg = <0x48001000 0x400>;
182 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
183 <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
184 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
185 <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
186 <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
187 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
188 <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
189 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
190 clocks = <&clk_pclk4>;
191 #dma-cells = <4>;
192 st,mem2mem;
193 dma-requests = <8>;
194 };
195
196 dmamux1: dma-router@48002000 {
197 compatible = "st,stm32h7-dmamux";
198 reg = <0x48002000 0x40>;
199 clocks = <&clk_pclk4>;
200 #dma-cells = <3>;
201 dma-masters = <&dma1 &dma2>;
202 dma-requests = <128>;
203 dma-channels = <16>;
204 };
205
206 exti: interrupt-controller@5000d000 {
207 compatible = "st,stm32mp13-exti", "syscon";
208 interrupt-controller;
209 #interrupt-cells = <2>;
210 reg = <0x5000d000 0x400>;
211 };
212
213 syscfg: syscon@50020000 {
214 compatible = "st,stm32mp157-syscfg", "syscon";
215 reg = <0x50020000 0x400>;
216 clocks = <&clk_pclk3>;
217 };
218
219 mdma: dma-controller@58000000 {
220 compatible = "st,stm32h7-mdma";
221 reg = <0x58000000 0x1000>;
222 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
223 clocks = <&clk_pclk4>;
224 #dma-cells = <5>;
225 dma-channels = <32>;
226 dma-requests = <48>;
227 };
228
229 sdmmc1: mmc@58005000 {
230 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
231 arm,primecell-periphid = <0x20253180>;
232 reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
233 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
234 interrupt-names = "cmd_irq";
235 clocks = <&clk_pll4_p>;
236 clock-names = "apb_pclk";
237 cap-sd-highspeed;
238 cap-mmc-highspeed;
239 max-frequency = <130000000>;
240 status = "disabled";
241 };
242
243 sdmmc2: mmc@58007000 {
244 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
245 arm,primecell-periphid = <0x20253180>;
246 reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
247 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
248 interrupt-names = "cmd_irq";
249 clocks = <&clk_pll4_p>;
250 clock-names = "apb_pclk";
251 cap-sd-highspeed;
252 cap-mmc-highspeed;
253 max-frequency = <130000000>;
254 status = "disabled";
255 };
256
257 iwdg2: watchdog@5a002000 {
258 compatible = "st,stm32mp1-iwdg";
259 reg = <0x5a002000 0x400>;
260 clocks = <&clk_pclk4>, <&clk_lsi>;
261 clock-names = "pclk", "lsi";
262 status = "disabled";
263 };
264
Patrick Delaunay53dfe692022-06-30 10:20:17 +0200265 rtc: rtc@5c004000 {
266 compatible = "st,stm32mp1-rtc";
267 reg = <0x5c004000 0x400>;
268 interrupts-extended = <&exti 19 IRQ_TYPE_LEVEL_HIGH>;
269 clocks = <&clk_pclk4>, <&clk_rtc_k>;
270 clock-names = "pclk", "rtc_ck";
271 status = "disabled";
272 };
273
Patrick Delaunay8e34fbb2022-05-20 18:24:39 +0200274 bsec: efuse@5c005000 {
275 compatible = "st,stm32mp13-bsec";
276 reg = <0x5c005000 0x400>;
277 #address-cells = <1>;
278 #size-cells = <1>;
279
280 part_number_otp: part_number_otp@4 {
281 reg = <0x4 0x2>;
282 };
283 ts_cal1: calib@5c {
284 reg = <0x5c 0x2>;
285 };
286 ts_cal2: calib@5e {
287 reg = <0x5e 0x2>;
288 };
289 };
290
291 /*
292 * Break node order to solve dependency probe issue between
293 * pinctrl and exti.
294 */
Patrick Delaunay53dfe692022-06-30 10:20:17 +0200295 pinctrl: pinctrl@50002000 {
Patrick Delaunay8e34fbb2022-05-20 18:24:39 +0200296 #address-cells = <1>;
297 #size-cells = <1>;
298 compatible = "st,stm32mp135-pinctrl";
299 ranges = <0 0x50002000 0x8400>;
Patrick Delaunay53dfe692022-06-30 10:20:17 +0200300 interrupt-parent = <&exti>;
301 st,syscfg = <&exti 0x60 0xff>;
Patrick Delaunay8e34fbb2022-05-20 18:24:39 +0200302 pins-are-numbered;
303
304 gpioa: gpio@50002000 {
305 gpio-controller;
306 #gpio-cells = <2>;
307 interrupt-controller;
308 #interrupt-cells = <2>;
309 reg = <0x0 0x400>;
310 clocks = <&clk_pclk4>;
311 st,bank-name = "GPIOA";
312 ngpios = <16>;
313 gpio-ranges = <&pinctrl 0 0 16>;
314 };
315
316 gpiob: gpio@50003000 {
317 gpio-controller;
318 #gpio-cells = <2>;
319 interrupt-controller;
320 #interrupt-cells = <2>;
321 reg = <0x1000 0x400>;
322 clocks = <&clk_pclk4>;
323 st,bank-name = "GPIOB";
324 ngpios = <16>;
325 gpio-ranges = <&pinctrl 0 16 16>;
326 };
327
328 gpioc: gpio@50004000 {
329 gpio-controller;
330 #gpio-cells = <2>;
331 interrupt-controller;
332 #interrupt-cells = <2>;
333 reg = <0x2000 0x400>;
334 clocks = <&clk_pclk4>;
335 st,bank-name = "GPIOC";
336 ngpios = <16>;
337 gpio-ranges = <&pinctrl 0 32 16>;
338 };
339
340 gpiod: gpio@50005000 {
341 gpio-controller;
342 #gpio-cells = <2>;
343 interrupt-controller;
344 #interrupt-cells = <2>;
345 reg = <0x3000 0x400>;
346 clocks = <&clk_pclk4>;
347 st,bank-name = "GPIOD";
348 ngpios = <16>;
349 gpio-ranges = <&pinctrl 0 48 16>;
350 };
351
352 gpioe: gpio@50006000 {
353 gpio-controller;
354 #gpio-cells = <2>;
355 interrupt-controller;
356 #interrupt-cells = <2>;
357 reg = <0x4000 0x400>;
358 clocks = <&clk_pclk4>;
359 st,bank-name = "GPIOE";
360 ngpios = <16>;
361 gpio-ranges = <&pinctrl 0 64 16>;
362 };
363
364 gpiof: gpio@50007000 {
365 gpio-controller;
366 #gpio-cells = <2>;
367 interrupt-controller;
368 #interrupt-cells = <2>;
369 reg = <0x5000 0x400>;
370 clocks = <&clk_pclk4>;
371 st,bank-name = "GPIOF";
372 ngpios = <16>;
373 gpio-ranges = <&pinctrl 0 80 16>;
374 };
375
376 gpiog: gpio@50008000 {
377 gpio-controller;
378 #gpio-cells = <2>;
379 interrupt-controller;
380 #interrupt-cells = <2>;
381 reg = <0x6000 0x400>;
382 clocks = <&clk_pclk4>;
383 st,bank-name = "GPIOG";
384 ngpios = <16>;
385 gpio-ranges = <&pinctrl 0 96 16>;
386 };
387
388 gpioh: gpio@50009000 {
389 gpio-controller;
390 #gpio-cells = <2>;
391 interrupt-controller;
392 #interrupt-cells = <2>;
393 reg = <0x7000 0x400>;
394 clocks = <&clk_pclk4>;
395 st,bank-name = "GPIOH";
396 ngpios = <15>;
397 gpio-ranges = <&pinctrl 0 112 15>;
398 };
399
400 gpioi: gpio@5000a000 {
401 gpio-controller;
402 #gpio-cells = <2>;
403 interrupt-controller;
404 #interrupt-cells = <2>;
405 reg = <0x8000 0x400>;
406 clocks = <&clk_pclk4>;
407 st,bank-name = "GPIOI";
408 ngpios = <8>;
409 gpio-ranges = <&pinctrl 0 128 8>;
410 };
411 };
412 };
413};