blob: a1c6d0d00b5265700f407a3f8c05ddea39e10029 [file] [log] [blame]
Patrick Delaunaya82abb12022-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 Delaunay0b69ce62022-07-06 18:20:24 +020030 firmware {
Patrick Delaunay152498d2022-09-07 13:42:23 +020031 optee {
Patrick Delaunay0b69ce62022-07-06 18:20:24 +020032 method = "smc";
33 compatible = "linaro,optee-tz";
34 };
Patrick Delaunay44db0982022-07-06 18:20:25 +020035
36 scmi: scmi {
37 compatible = "linaro,scmi-optee";
38 #address-cells = <1>;
39 #size-cells = <0>;
40 linaro,optee-channel-id = <0>;
41 shmem = <&scmi_shm>;
42
43 scmi_clk: protocol@14 {
44 reg = <0x14>;
45 #clock-cells = <1>;
46 };
47
48 scmi_reset: protocol@16 {
49 reg = <0x16>;
50 #reset-cells = <1>;
51 };
52 };
Patrick Delaunay0b69ce62022-07-06 18:20:24 +020053 };
54
Patrick Delaunaya82abb12022-05-20 18:24:39 +020055 clocks {
56 clk_axi: clk-axi {
57 #clock-cells = <0>;
58 compatible = "fixed-clock";
59 clock-frequency = <266500000>;
60 };
61
62 clk_hse: clk-hse {
63 #clock-cells = <0>;
64 compatible = "fixed-clock";
65 clock-frequency = <24000000>;
66 };
67
68 clk_hsi: clk-hsi {
69 #clock-cells = <0>;
70 compatible = "fixed-clock";
71 clock-frequency = <64000000>;
72 };
73
74 clk_lsi: clk-lsi {
75 #clock-cells = <0>;
76 compatible = "fixed-clock";
77 clock-frequency = <32000>;
78 };
79
80 clk_pclk3: clk-pclk3 {
81 #clock-cells = <0>;
82 compatible = "fixed-clock";
83 clock-frequency = <104438965>;
84 };
85
86 clk_pclk4: clk-pclk4 {
87 #clock-cells = <0>;
88 compatible = "fixed-clock";
89 clock-frequency = <133250000>;
90 };
91
92 clk_pll4_p: clk-pll4_p {
93 #clock-cells = <0>;
94 compatible = "fixed-clock";
95 clock-frequency = <50000000>;
96 };
97
98 clk_pll4_r: clk-pll4_r {
99 #clock-cells = <0>;
100 compatible = "fixed-clock";
101 clock-frequency = <99000000>;
102 };
Patrick Delaunay12d5a062022-06-30 10:20:17 +0200103
104 clk_rtc_k: clk-rtc-k {
105 #clock-cells = <0>;
106 compatible = "fixed-clock";
107 clock-frequency = <32768>;
108 };
Patrick Delaunaya82abb12022-05-20 18:24:39 +0200109 };
110
111 intc: interrupt-controller@a0021000 {
112 compatible = "arm,cortex-a7-gic";
113 #interrupt-cells = <3>;
114 interrupt-controller;
115 reg = <0xa0021000 0x1000>,
116 <0xa0022000 0x2000>;
117 };
118
119 psci {
120 compatible = "arm,psci-1.0";
121 method = "smc";
122 };
123
124 timer {
125 compatible = "arm,armv7-timer";
126 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
127 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
128 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
129 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
130 interrupt-parent = <&intc>;
131 always-on;
132 };
133
134 soc {
135 compatible = "simple-bus";
136 #address-cells = <1>;
137 #size-cells = <1>;
138 interrupt-parent = <&intc>;
139 ranges;
140
Patrick Delaunay152498d2022-09-07 13:42:23 +0200141 scmi_sram: sram@2ffff000 {
142 compatible = "mmio-sram";
143 reg = <0x2ffff000 0x1000>;
144 #address-cells = <1>;
145 #size-cells = <1>;
146 ranges = <0 0x2ffff000 0x1000>;
147
148 scmi_shm: scmi-sram@0 {
149 compatible = "arm,scmi-shmem";
150 reg = <0 0x80>;
151 };
152 };
153
Patrick Delaunaya82abb12022-05-20 18:24:39 +0200154 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 Delaunay12d5a062022-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 Delaunaya82abb12022-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 Delaunay12d5a062022-06-30 10:20:17 +0200295 pinctrl: pinctrl@50002000 {
Patrick Delaunaya82abb12022-05-20 18:24:39 +0200296 #address-cells = <1>;
297 #size-cells = <1>;
298 compatible = "st,stm32mp135-pinctrl";
299 ranges = <0 0x50002000 0x8400>;
Patrick Delaunay12d5a062022-06-30 10:20:17 +0200300 interrupt-parent = <&exti>;
301 st,syscfg = <&exti 0x60 0xff>;
Patrick Delaunaya82abb12022-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};