blob: 8f7af65e3edca0a9ec07b3814cb05f6a8b3badf9 [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 };
116 };
117
118 intc: interrupt-controller@a0021000 {
119 compatible = "arm,cortex-a7-gic";
120 #interrupt-cells = <3>;
121 interrupt-controller;
122 reg = <0xa0021000 0x1000>,
123 <0xa0022000 0x2000>;
124 };
125
126 psci {
127 compatible = "arm,psci-1.0";
128 method = "smc";
129 };
130
131 timer {
132 compatible = "arm,armv7-timer";
133 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
134 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
135 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
136 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
137 interrupt-parent = <&intc>;
138 always-on;
139 };
140
141 soc {
142 compatible = "simple-bus";
143 #address-cells = <1>;
144 #size-cells = <1>;
145 interrupt-parent = <&intc>;
146 ranges;
147
148 uart4: serial@40010000 {
149 compatible = "st,stm32h7-uart";
150 reg = <0x40010000 0x400>;
151 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
152 clocks = <&clk_hsi>;
153 status = "disabled";
154 };
155
156 dma1: dma-controller@48000000 {
157 compatible = "st,stm32-dma";
158 reg = <0x48000000 0x400>;
159 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
160 <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
161 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
162 <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
163 <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
164 <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
165 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
166 <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
167 clocks = <&clk_pclk4>;
168 #dma-cells = <4>;
169 st,mem2mem;
170 dma-requests = <8>;
171 };
172
173 dma2: dma-controller@48001000 {
174 compatible = "st,stm32-dma";
175 reg = <0x48001000 0x400>;
176 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
177 <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
178 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
179 <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
180 <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
181 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
182 <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
183 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
184 clocks = <&clk_pclk4>;
185 #dma-cells = <4>;
186 st,mem2mem;
187 dma-requests = <8>;
188 };
189
190 dmamux1: dma-router@48002000 {
191 compatible = "st,stm32h7-dmamux";
192 reg = <0x48002000 0x40>;
193 clocks = <&clk_pclk4>;
194 #dma-cells = <3>;
195 dma-masters = <&dma1 &dma2>;
196 dma-requests = <128>;
197 dma-channels = <16>;
198 };
199
200 exti: interrupt-controller@5000d000 {
201 compatible = "st,stm32mp13-exti", "syscon";
202 interrupt-controller;
203 #interrupt-cells = <2>;
204 reg = <0x5000d000 0x400>;
205 };
206
207 syscfg: syscon@50020000 {
208 compatible = "st,stm32mp157-syscfg", "syscon";
209 reg = <0x50020000 0x400>;
210 clocks = <&clk_pclk3>;
211 };
212
213 mdma: dma-controller@58000000 {
214 compatible = "st,stm32h7-mdma";
215 reg = <0x58000000 0x1000>;
216 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
217 clocks = <&clk_pclk4>;
218 #dma-cells = <5>;
219 dma-channels = <32>;
220 dma-requests = <48>;
221 };
222
223 sdmmc1: mmc@58005000 {
224 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
225 arm,primecell-periphid = <0x20253180>;
226 reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
227 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
228 interrupt-names = "cmd_irq";
229 clocks = <&clk_pll4_p>;
230 clock-names = "apb_pclk";
231 cap-sd-highspeed;
232 cap-mmc-highspeed;
233 max-frequency = <130000000>;
234 status = "disabled";
235 };
236
237 sdmmc2: mmc@58007000 {
238 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
239 arm,primecell-periphid = <0x20253180>;
240 reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
241 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
242 interrupt-names = "cmd_irq";
243 clocks = <&clk_pll4_p>;
244 clock-names = "apb_pclk";
245 cap-sd-highspeed;
246 cap-mmc-highspeed;
247 max-frequency = <130000000>;
248 status = "disabled";
249 };
250
251 iwdg2: watchdog@5a002000 {
252 compatible = "st,stm32mp1-iwdg";
253 reg = <0x5a002000 0x400>;
254 clocks = <&clk_pclk4>, <&clk_lsi>;
255 clock-names = "pclk", "lsi";
256 status = "disabled";
257 };
258
259 bsec: efuse@5c005000 {
260 compatible = "st,stm32mp13-bsec";
261 reg = <0x5c005000 0x400>;
262 #address-cells = <1>;
263 #size-cells = <1>;
264
265 part_number_otp: part_number_otp@4 {
266 reg = <0x4 0x2>;
267 };
268 ts_cal1: calib@5c {
269 reg = <0x5c 0x2>;
270 };
271 ts_cal2: calib@5e {
272 reg = <0x5e 0x2>;
273 };
274 };
275
276 /*
277 * Break node order to solve dependency probe issue between
278 * pinctrl and exti.
279 */
280 pinctrl: pin-controller@50002000 {
281 #address-cells = <1>;
282 #size-cells = <1>;
283 compatible = "st,stm32mp135-pinctrl";
284 ranges = <0 0x50002000 0x8400>;
285 pins-are-numbered;
286
287 gpioa: gpio@50002000 {
288 gpio-controller;
289 #gpio-cells = <2>;
290 interrupt-controller;
291 #interrupt-cells = <2>;
292 reg = <0x0 0x400>;
293 clocks = <&clk_pclk4>;
294 st,bank-name = "GPIOA";
295 ngpios = <16>;
296 gpio-ranges = <&pinctrl 0 0 16>;
297 };
298
299 gpiob: gpio@50003000 {
300 gpio-controller;
301 #gpio-cells = <2>;
302 interrupt-controller;
303 #interrupt-cells = <2>;
304 reg = <0x1000 0x400>;
305 clocks = <&clk_pclk4>;
306 st,bank-name = "GPIOB";
307 ngpios = <16>;
308 gpio-ranges = <&pinctrl 0 16 16>;
309 };
310
311 gpioc: gpio@50004000 {
312 gpio-controller;
313 #gpio-cells = <2>;
314 interrupt-controller;
315 #interrupt-cells = <2>;
316 reg = <0x2000 0x400>;
317 clocks = <&clk_pclk4>;
318 st,bank-name = "GPIOC";
319 ngpios = <16>;
320 gpio-ranges = <&pinctrl 0 32 16>;
321 };
322
323 gpiod: gpio@50005000 {
324 gpio-controller;
325 #gpio-cells = <2>;
326 interrupt-controller;
327 #interrupt-cells = <2>;
328 reg = <0x3000 0x400>;
329 clocks = <&clk_pclk4>;
330 st,bank-name = "GPIOD";
331 ngpios = <16>;
332 gpio-ranges = <&pinctrl 0 48 16>;
333 };
334
335 gpioe: gpio@50006000 {
336 gpio-controller;
337 #gpio-cells = <2>;
338 interrupt-controller;
339 #interrupt-cells = <2>;
340 reg = <0x4000 0x400>;
341 clocks = <&clk_pclk4>;
342 st,bank-name = "GPIOE";
343 ngpios = <16>;
344 gpio-ranges = <&pinctrl 0 64 16>;
345 };
346
347 gpiof: gpio@50007000 {
348 gpio-controller;
349 #gpio-cells = <2>;
350 interrupt-controller;
351 #interrupt-cells = <2>;
352 reg = <0x5000 0x400>;
353 clocks = <&clk_pclk4>;
354 st,bank-name = "GPIOF";
355 ngpios = <16>;
356 gpio-ranges = <&pinctrl 0 80 16>;
357 };
358
359 gpiog: gpio@50008000 {
360 gpio-controller;
361 #gpio-cells = <2>;
362 interrupt-controller;
363 #interrupt-cells = <2>;
364 reg = <0x6000 0x400>;
365 clocks = <&clk_pclk4>;
366 st,bank-name = "GPIOG";
367 ngpios = <16>;
368 gpio-ranges = <&pinctrl 0 96 16>;
369 };
370
371 gpioh: gpio@50009000 {
372 gpio-controller;
373 #gpio-cells = <2>;
374 interrupt-controller;
375 #interrupt-cells = <2>;
376 reg = <0x7000 0x400>;
377 clocks = <&clk_pclk4>;
378 st,bank-name = "GPIOH";
379 ngpios = <15>;
380 gpio-ranges = <&pinctrl 0 112 15>;
381 };
382
383 gpioi: gpio@5000a000 {
384 gpio-controller;
385 #gpio-cells = <2>;
386 interrupt-controller;
387 #interrupt-cells = <2>;
388 reg = <0x8000 0x400>;
389 clocks = <&clk_pclk4>;
390 st,bank-name = "GPIOI";
391 ngpios = <8>;
392 gpio-ranges = <&pinctrl 0 128 8>;
393 };
394 };
395 };
396};