blob: 2be39afcfa9051431a9a69c1da5be3d888bec658 [file] [log] [blame]
Yann Gautiercd736192020-02-25 15:14:52 +01001// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
3 * Copyright (C) STMicroelectronics 2022 - All Rights Reserved
4 * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
5 */
6#include <dt-bindings/clock/stm32mp13-clks.h>
7#include <dt-bindings/interrupt-controller/arm-gic.h>
8#include <dt-bindings/reset/stm32mp13-resets.h>
9
10/ {
11 #address-cells = <1>;
12 #size-cells = <1>;
13
14 cpus {
15 #address-cells = <1>;
16 #size-cells = <0>;
17
18 cpu0: cpu@0 {
19 compatible = "arm,cortex-a7";
20 device_type = "cpu";
21 reg = <0>;
22 clocks = <&rcc CK_MPU>;
23 clock-names = "cpu";
24 nvmem-cells = <&part_number_otp>;
25 nvmem-cell-names = "part_number";
26 };
27 };
28
Yann Gautiercd736192020-02-25 15:14:52 +010029 clocks {
30 clk_csi: clk-csi {
31 #clock-cells = <0>;
32 compatible = "fixed-clock";
33 clock-frequency = <4000000>;
34 };
35
36 clk_hse: clk-hse {
37 #clock-cells = <0>;
38 compatible = "fixed-clock";
39 clock-frequency = <24000000>;
40 };
41
42 clk_hsi: clk-hsi {
43 #clock-cells = <0>;
44 compatible = "fixed-clock";
45 clock-frequency = <64000000>;
46 };
47
48 clk_lse: clk-lse {
49 #clock-cells = <0>;
50 compatible = "fixed-clock";
51 clock-frequency = <32768>;
52 };
53
54 clk_lsi: clk-lsi {
55 #clock-cells = <0>;
56 compatible = "fixed-clock";
57 clock-frequency = <32000>;
58 };
59 };
60
61 intc: interrupt-controller@a0021000 {
62 compatible = "arm,cortex-a7-gic";
63 #interrupt-cells = <3>;
64 interrupt-controller;
65 reg = <0xa0021000 0x1000>,
66 <0xa0022000 0x2000>;
67 };
68
69 psci {
70 compatible = "arm,psci-1.0";
71 method = "smc";
72 };
73
74 soc {
75 compatible = "simple-bus";
76 #address-cells = <1>;
77 #size-cells = <1>;
78 interrupt-parent = <&intc>;
79 ranges;
80
81 usart3: serial@4000f000 {
82 compatible = "st,stm32h7-uart";
83 reg = <0x4000f000 0x400>;
84 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
85 clocks = <&rcc USART3_K>;
86 resets = <&rcc USART3_R>;
87 status = "disabled";
88 };
89
90 uart4: serial@40010000 {
91 compatible = "st,stm32h7-uart";
92 reg = <0x40010000 0x400>;
93 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
94 clocks = <&rcc UART4_K>;
95 resets = <&rcc UART4_R>;
96 status = "disabled";
97 };
98
99 uart5: serial@40011000 {
100 compatible = "st,stm32h7-uart";
101 reg = <0x40011000 0x400>;
102 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
103 clocks = <&rcc UART5_K>;
104 resets = <&rcc UART5_R>;
105 status = "disabled";
106 };
107
108 uart7: serial@40018000 {
109 compatible = "st,stm32h7-uart";
110 reg = <0x40018000 0x400>;
111 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
112 clocks = <&rcc UART7_K>;
113 resets = <&rcc UART7_R>;
114 status = "disabled";
115 };
116
117 uart8: serial@40019000 {
118 compatible = "st,stm32h7-uart";
119 reg = <0x40019000 0x400>;
120 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
121 clocks = <&rcc UART8_K>;
122 resets = <&rcc UART8_R>;
123 status = "disabled";
124 };
125
126 usart6: serial@44003000 {
127 compatible = "st,stm32h7-uart";
128 reg = <0x44003000 0x400>;
129 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
130 clocks = <&rcc USART6_K>;
131 resets = <&rcc USART6_R>;
132 status = "disabled";
133 };
134
135 usbotg_hs: usb-otg@49000000 {
136 compatible = "st,stm32mp15-hsotg", "snps,dwc2";
137 reg = <0x49000000 0x40000>;
138 clocks = <&rcc USBO_K>;
139 clock-names = "otg";
140 resets = <&rcc USBO_R>;
141 reset-names = "dwc2";
142 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
143 g-rx-fifo-size = <512>;
144 g-np-tx-fifo-size = <32>;
145 g-tx-fifo-size = <256 16 16 16 16 16 16 16>;
146 dr_mode = "otg";
147 usb33d-supply = <&usb33>;
148 status = "disabled";
149 };
150
151 usart1: serial@4c000000 {
152 compatible = "st,stm32h7-uart";
153 reg = <0x4c000000 0x400>;
154 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
155 clocks = <&rcc USART1_K>;
156 resets = <&rcc USART1_R>;
157 status = "disabled";
158 };
159
160 usart2: serial@4c001000 {
161 compatible = "st,stm32h7-uart";
162 reg = <0x4c001000 0x400>;
163 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
164 clocks = <&rcc USART2_K>;
165 resets = <&rcc USART2_R>;
166 status = "disabled";
167 };
168
169 i2c3: i2c@4c004000 {
170 compatible = "st,stm32mp13-i2c";
171 reg = <0x4c004000 0x400>;
172 interrupt-names = "event", "error";
173 interrupts-extended = <&exti 23 IRQ_TYPE_LEVEL_HIGH>,
174 <&intc GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
175 clocks = <&rcc I2C3_K>;
176 resets = <&rcc I2C3_R>;
177 #address-cells = <1>;
178 #size-cells = <0>;
179 st,syscfg-fmp = <&syscfg 0x4 0x4>;
180 i2c-analog-filter;
181 status = "disabled";
182 };
183
184 i2c4: i2c@4c005000 {
185 compatible = "st,stm32mp13-i2c";
186 reg = <0x4c005000 0x400>;
187 interrupt-names = "event", "error";
188 interrupts-extended = <&exti 24 IRQ_TYPE_LEVEL_HIGH>,
189 <&intc GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
190 clocks = <&rcc I2C4_K>;
191 resets = <&rcc I2C4_R>;
192 #address-cells = <1>;
193 #size-cells = <0>;
194 st,syscfg-fmp = <&syscfg 0x4 0x8>;
195 i2c-analog-filter;
196 status = "disabled";
197 };
198
199 i2c5: i2c@4c006000 {
200 compatible = "st,stm32mp13-i2c";
201 reg = <0x4c006000 0x400>;
202 interrupt-names = "event", "error";
203 interrupts-extended = <&exti 25 IRQ_TYPE_LEVEL_HIGH>,
204 <&intc GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
205 clocks = <&rcc I2C5_K>;
206 resets = <&rcc I2C5_R>;
207 #address-cells = <1>;
208 #size-cells = <0>;
209 st,syscfg-fmp = <&syscfg 0x4 0x10>;
210 i2c-analog-filter;
211 status = "disabled";
212 };
213
214 rcc: rcc@50000000 {
215 compatible = "st,stm32mp13-rcc", "syscon";
216 reg = <0x50000000 0x1000>;
217 #address-cells = <1>;
218 #size-cells = <0>;
219 #clock-cells = <1>;
220 #reset-cells = <1>;
221 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
222 secure-interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
223 secure-interrupt-names = "wakeup";
224 };
225
226 pwr_regulators: pwr@50001000 {
227 compatible = "st,stm32mp1,pwr-reg";
228 reg = <0x50001000 0x10>;
229
230 reg11: reg11 {
231 regulator-name = "reg11";
232 regulator-min-microvolt = <1100000>;
233 regulator-max-microvolt = <1100000>;
234 };
235
236 reg18: reg18 {
237 regulator-name = "reg18";
238 regulator-min-microvolt = <1800000>;
239 regulator-max-microvolt = <1800000>;
240 };
241
242 usb33: usb33 {
243 regulator-name = "usb33";
244 regulator-min-microvolt = <3300000>;
245 regulator-max-microvolt = <3300000>;
246 };
247 };
248
249 exti: interrupt-controller@5000d000 {
250 compatible = "st,stm32mp13-exti", "syscon";
251 interrupt-controller;
252 #interrupt-cells = <2>;
253 reg = <0x5000d000 0x400>;
254 };
255
256 syscfg: syscon@50020000 {
257 compatible = "st,stm32mp157-syscfg", "syscon";
258 reg = <0x50020000 0x400>;
259 clocks = <&rcc SYSCFG>;
260 };
261
Yann Gautiercd736192020-02-25 15:14:52 +0100262 hash: hash@54003000 {
263 compatible = "st,stm32mp13-hash";
264 reg = <0x54003000 0x400>;
265 clocks = <&rcc HASH1>;
266 resets = <&rcc HASH1_R>;
267 status = "disabled";
268 };
269
270 rng: rng@54004000 {
271 compatible = "st,stm32mp13-rng";
272 reg = <0x54004000 0x400>;
273 clocks = <&rcc RNG1_K>;
274 resets = <&rcc RNG1_R>;
275 status = "disabled";
276 };
277
278 fmc: memory-controller@58002000 {
279 #address-cells = <2>;
280 #size-cells = <1>;
281 compatible = "st,stm32mp1-fmc2-ebi";
282 reg = <0x58002000 0x1000>;
283 clocks = <&rcc FMC_K>;
284 resets = <&rcc FMC_R>;
285 status = "disabled";
286
287 ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */
288 <1 0 0x64000000 0x04000000>, /* EBI CS 2 */
289 <2 0 0x68000000 0x04000000>, /* EBI CS 3 */
290 <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */
291 <4 0 0x80000000 0x10000000>; /* NAND */
292
293 nand-controller@4,0 {
294 #address-cells = <1>;
295 #size-cells = <0>;
296 compatible = "st,stm32mp1-fmc2-nfc";
297 reg = <4 0x00000000 0x1000>,
298 <4 0x08010000 0x1000>,
299 <4 0x08020000 0x1000>,
300 <4 0x01000000 0x1000>,
301 <4 0x09010000 0x1000>,
302 <4 0x09020000 0x1000>;
303 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
304 status = "disabled";
305 };
306 };
307
308 qspi: spi@58003000 {
309 compatible = "st,stm32f469-qspi";
310 reg = <0x58003000 0x1000>, <0x70000000 0x10000000>;
311 reg-names = "qspi", "qspi_mm";
312 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
313 clocks = <&rcc QSPI_K>;
314 resets = <&rcc QSPI_R>;
315 status = "disabled";
316 };
317
318 sdmmc1: mmc@58005000 {
319 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
320 arm,primecell-periphid = <0x20253180>;
321 reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
322 clocks = <&rcc SDMMC1_K>;
323 clock-names = "apb_pclk";
324 resets = <&rcc SDMMC1_R>;
325 cap-sd-highspeed;
326 cap-mmc-highspeed;
Yann Gautierb2f654f2022-05-02 13:54:21 +0200327 max-frequency = <130000000>;
Yann Gautiercd736192020-02-25 15:14:52 +0100328 status = "disabled";
329 };
330
331 sdmmc2: mmc@58007000 {
332 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
333 arm,primecell-periphid = <0x20253180>;
334 reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
335 clocks = <&rcc SDMMC2_K>;
336 clock-names = "apb_pclk";
337 resets = <&rcc SDMMC2_R>;
338 cap-sd-highspeed;
339 cap-mmc-highspeed;
Yann Gautierb2f654f2022-05-02 13:54:21 +0200340 max-frequency = <130000000>;
Yann Gautiercd736192020-02-25 15:14:52 +0100341 status = "disabled";
342 };
343
Yann Gautiercd736192020-02-25 15:14:52 +0100344 usbh_ohci: usbh-ohci@5800c000 {
345 compatible = "generic-ohci";
346 reg = <0x5800c000 0x1000>;
347 clocks = <&rcc USBH>;
348 resets = <&rcc USBH_R>;
349 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
350 status = "disabled";
351 };
352
353 usbh_ehci: usbh-ehci@5800d000 {
354 compatible = "generic-ehci";
355 reg = <0x5800d000 0x1000>;
356 clocks = <&rcc USBH>;
357 resets = <&rcc USBH_R>;
358 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
359 companion = <&usbh_ohci>;
360 status = "disabled";
361 };
362
363 iwdg2: watchdog@5a002000 {
364 compatible = "st,stm32mp1-iwdg";
365 reg = <0x5a002000 0x400>;
366 clocks = <&rcc IWDG2>, <&rcc CK_LSI>;
367 clock-names = "pclk", "lsi";
368 status = "disabled";
369 };
370
Johann Neuhausera5ef16a2022-07-08 15:22:05 +0200371 ddr: ddr@5a003000 {
Nicolas Le Bayon01087912021-01-12 18:18:27 +0100372 compatible = "st,stm32mp13-ddr";
373 reg = <0x5a003000 0x550>, <0x5a004000 0x234>;
374 clocks = <&rcc AXIDCG>,
375 <&rcc DDRC1>,
376 <&rcc DDRPHYC>,
377 <&rcc DDRCAPB>,
378 <&rcc DDRPHYCAPB>;
379 clock-names = "axidcg",
380 "ddrc1",
381 "ddrphyc",
382 "ddrcapb",
383 "ddrphycapb";
384 };
385
Yann Gautiercd736192020-02-25 15:14:52 +0100386 usbphyc: usbphyc@5a006000 {
387 #address-cells = <1>;
388 #size-cells = <0>;
389 #clock-cells = <0>;
390 compatible = "st,stm32mp1-usbphyc";
391 reg = <0x5a006000 0x1000>;
392 clocks = <&rcc USBPHY_K>;
393 resets = <&rcc USBPHY_R>;
394 vdda1v1-supply = <&reg11>;
395 vdda1v8-supply = <&reg18>;
396 status = "disabled";
397
398 usbphyc_port0: usb-phy@0 {
399 #phy-cells = <0>;
400 reg = <0>;
401 };
402
403 usbphyc_port1: usb-phy@1 {
404 #phy-cells = <1>;
405 reg = <1>;
406 };
407 };
408
409 iwdg1: watchdog@5c003000 {
410 compatible = "st,stm32mp1-iwdg";
411 reg = <0x5c003000 0x400>;
412 interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
413 clocks = <&rcc IWDG1>, <&rcc CK_LSI>;
414 clock-names = "pclk", "lsi";
415 status = "disabled";
416 };
417
418 bsec: efuse@5c005000 {
Patrick Delaunaya7833832022-02-16 15:40:10 +0100419 compatible = "st,stm32mp13-bsec";
Yann Gautiercd736192020-02-25 15:14:52 +0100420 reg = <0x5c005000 0x400>;
421 #address-cells = <1>;
422 #size-cells = <1>;
423
424 cfg0_otp: cfg0_otp@0 {
425 reg = <0x0 0x2>;
426 };
427 part_number_otp: part_number_otp@4 {
428 reg = <0x4 0x2>;
429 };
430 monotonic_otp: monotonic_otp@10 {
431 reg = <0x10 0x4>;
432 };
433 nand_otp: cfg9_otp@24 {
434 reg = <0x24 0x4>;
435 };
436 nand2_otp: cfg10_otp@28 {
437 reg = <0x28 0x4>;
438 };
439 uid_otp: uid_otp@34 {
440 reg = <0x34 0xc>;
441 };
442 hw2_otp: hw2_otp@48 {
443 reg = <0x48 0x4>;
444 };
445 ts_cal1: calib@5c {
446 reg = <0x5c 0x2>;
447 };
448 ts_cal2: calib@5e {
449 reg = <0x5e 0x2>;
450 };
451 pkh_otp: pkh_otp@60 {
452 reg = <0x60 0x20>;
453 };
454 mac_addr: mac_addr@e4 {
455 reg = <0xe4 0xc>;
456 st,non-secure-otp;
457 };
Lionel Debieve563e7152022-10-06 08:51:32 +0200458 enckey_otp: enckey_otp@170 {
459 reg = <0x170 0x10>;
460 };
Yann Gautiercd736192020-02-25 15:14:52 +0100461 };
Yann Gautiercd736192020-02-25 15:14:52 +0100462 /*
463 * Break node order to solve dependency probe issue between
464 * pinctrl and exti.
465 */
Yann Gautier1bbb09e2022-03-11 14:23:43 +0100466 pinctrl: pinctrl@50002000 {
Yann Gautiercd736192020-02-25 15:14:52 +0100467 #address-cells = <1>;
468 #size-cells = <1>;
469 compatible = "st,stm32mp135-pinctrl";
470 ranges = <0 0x50002000 0x8400>;
471 interrupt-parent = <&exti>;
472 st,syscfg = <&exti 0x60 0xff>;
473 pins-are-numbered;
474
475 gpioa: gpio@50002000 {
476 gpio-controller;
477 #gpio-cells = <2>;
478 interrupt-controller;
479 #interrupt-cells = <2>;
480 reg = <0x0 0x400>;
481 clocks = <&rcc GPIOA>;
482 st,bank-name = "GPIOA";
483 ngpios = <16>;
484 gpio-ranges = <&pinctrl 0 0 16>;
485 };
486
487 gpiob: gpio@50003000 {
488 gpio-controller;
489 #gpio-cells = <2>;
490 interrupt-controller;
491 #interrupt-cells = <2>;
492 reg = <0x1000 0x400>;
493 clocks = <&rcc GPIOB>;
494 st,bank-name = "GPIOB";
495 ngpios = <16>;
496 gpio-ranges = <&pinctrl 0 16 16>;
497 };
498
499 gpioc: gpio@50004000 {
500 gpio-controller;
501 #gpio-cells = <2>;
502 interrupt-controller;
503 #interrupt-cells = <2>;
504 reg = <0x2000 0x400>;
505 clocks = <&rcc GPIOC>;
506 st,bank-name = "GPIOC";
507 ngpios = <16>;
508 gpio-ranges = <&pinctrl 0 32 16>;
509 };
510
511 gpiod: gpio@50005000 {
512 gpio-controller;
513 #gpio-cells = <2>;
514 interrupt-controller;
515 #interrupt-cells = <2>;
516 reg = <0x3000 0x400>;
517 clocks = <&rcc GPIOD>;
518 st,bank-name = "GPIOD";
519 ngpios = <16>;
520 gpio-ranges = <&pinctrl 0 48 16>;
521 };
522
523 gpioe: gpio@50006000 {
524 gpio-controller;
525 #gpio-cells = <2>;
526 interrupt-controller;
527 #interrupt-cells = <2>;
528 reg = <0x4000 0x400>;
529 clocks = <&rcc GPIOE>;
530 st,bank-name = "GPIOE";
531 ngpios = <16>;
532 gpio-ranges = <&pinctrl 0 64 16>;
533 };
534
535 gpiof: gpio@50007000 {
536 gpio-controller;
537 #gpio-cells = <2>;
538 interrupt-controller;
539 #interrupt-cells = <2>;
540 reg = <0x5000 0x400>;
541 clocks = <&rcc GPIOF>;
542 st,bank-name = "GPIOF";
543 ngpios = <16>;
544 gpio-ranges = <&pinctrl 0 80 16>;
545 };
546
547 gpiog: gpio@50008000 {
548 gpio-controller;
549 #gpio-cells = <2>;
550 interrupt-controller;
551 #interrupt-cells = <2>;
552 reg = <0x6000 0x400>;
553 clocks = <&rcc GPIOG>;
554 st,bank-name = "GPIOG";
555 ngpios = <16>;
556 gpio-ranges = <&pinctrl 0 96 16>;
557 };
558
559 gpioh: gpio@50009000 {
560 gpio-controller;
561 #gpio-cells = <2>;
562 interrupt-controller;
563 #interrupt-cells = <2>;
564 reg = <0x7000 0x400>;
565 clocks = <&rcc GPIOH>;
566 st,bank-name = "GPIOH";
567 ngpios = <15>;
568 gpio-ranges = <&pinctrl 0 112 15>;
569 };
570
571 gpioi: gpio@5000a000 {
572 gpio-controller;
573 #gpio-cells = <2>;
574 interrupt-controller;
575 #interrupt-cells = <2>;
576 reg = <0x8000 0x400>;
577 clocks = <&rcc GPIOI>;
578 st,bank-name = "GPIOI";
579 ngpios = <8>;
580 gpio-ranges = <&pinctrl 0 128 8>;
581 };
582 };
583 };
584};