blob: c350c66de74d42525996d73045d4ba8cb75842f4 [file] [log] [blame]
Yann Gautier4ede20a2020-09-18 15:04:14 +02001// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
3 * Copyright (C) STMicroelectronics 2017 - All Rights Reserved
4 * Author: Ludovic Barre <ludovic.barre@st.com> for STMicroelectronics.
5 */
6#include <dt-bindings/interrupt-controller/arm-gic.h>
7#include <dt-bindings/clock/stm32mp1-clks.h>
8#include <dt-bindings/reset/stm32mp1-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 };
23 };
24
25 psci {
26 compatible = "arm,psci-1.0";
27 method = "smc";
28 };
29
30 intc: interrupt-controller@a0021000 {
31 compatible = "arm,cortex-a7-gic";
32 #interrupt-cells = <3>;
33 interrupt-controller;
34 reg = <0xa0021000 0x1000>,
35 <0xa0022000 0x2000>;
36 };
37
38 clocks {
39 clk_hse: clk-hse {
40 #clock-cells = <0>;
41 compatible = "fixed-clock";
42 clock-frequency = <24000000>;
43 };
44
45 clk_hsi: clk-hsi {
46 #clock-cells = <0>;
47 compatible = "fixed-clock";
48 clock-frequency = <64000000>;
49 };
50
51 clk_lse: clk-lse {
52 #clock-cells = <0>;
53 compatible = "fixed-clock";
54 clock-frequency = <32768>;
55 };
56
57 clk_lsi: clk-lsi {
58 #clock-cells = <0>;
59 compatible = "fixed-clock";
60 clock-frequency = <32000>;
61 };
62
63 clk_csi: clk-csi {
64 #clock-cells = <0>;
65 compatible = "fixed-clock";
66 clock-frequency = <4000000>;
67 };
68 };
69
70 soc {
71 compatible = "simple-bus";
72 #address-cells = <1>;
73 #size-cells = <1>;
74 interrupt-parent = <&intc>;
75 ranges;
76
77 timers12: timer@40006000 {
78 #address-cells = <1>;
79 #size-cells = <0>;
80 compatible = "st,stm32-timers";
81 reg = <0x40006000 0x400>;
82 clocks = <&rcc TIM12_K>;
83 clock-names = "int";
84 status = "disabled";
85 };
86
87 usart2: serial@4000e000 {
88 compatible = "st,stm32h7-uart";
89 reg = <0x4000e000 0x400>;
90 interrupts-extended = <&exti 27 IRQ_TYPE_LEVEL_HIGH>;
91 clocks = <&rcc USART2_K>;
92 resets = <&rcc USART2_R>;
93 status = "disabled";
94 };
95
96 usart3: serial@4000f000 {
97 compatible = "st,stm32h7-uart";
98 reg = <0x4000f000 0x400>;
99 interrupts-extended = <&exti 28 IRQ_TYPE_LEVEL_HIGH>;
100 clocks = <&rcc USART3_K>;
101 resets = <&rcc USART3_R>;
102 status = "disabled";
103 };
104
105 uart4: serial@40010000 {
106 compatible = "st,stm32h7-uart";
107 reg = <0x40010000 0x400>;
108 interrupts-extended = <&exti 30 IRQ_TYPE_LEVEL_HIGH>;
109 clocks = <&rcc UART4_K>;
110 resets = <&rcc UART4_R>;
111 wakeup-source;
112 status = "disabled";
113 };
114
115 uart5: serial@40011000 {
116 compatible = "st,stm32h7-uart";
117 reg = <0x40011000 0x400>;
118 interrupts-extended = <&exti 31 IRQ_TYPE_LEVEL_HIGH>;
119 clocks = <&rcc UART5_K>;
120 resets = <&rcc UART5_R>;
121 status = "disabled";
122 };
123
Grzegorz Szymaszek2183f1a2021-04-21 19:06:57 +0200124 i2c2: i2c@40013000 {
125 compatible = "st,stm32mp15-i2c";
126 reg = <0x40013000 0x400>;
127 interrupt-names = "event", "error";
128 interrupts = <&exti 22 IRQ_TYPE_LEVEL_HIGH>,
129 <&intc GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
130 clocks = <&rcc I2C2_K>;
131 resets = <&rcc I2C2_R>;
132 #address-cells = <1>;
133 #size-cells = <0>;
134 st,syscfg-fmp = <&syscfg 0x4 0x2>;
135 wakeup-source;
136 status = "disabled";
137 };
138
Yann Gautier4ede20a2020-09-18 15:04:14 +0200139 uart7: serial@40018000 {
140 compatible = "st,stm32h7-uart";
141 reg = <0x40018000 0x400>;
142 interrupts-extended = <&exti 32 IRQ_TYPE_LEVEL_HIGH>;
143 clocks = <&rcc UART7_K>;
144 resets = <&rcc UART7_R>;
145 status = "disabled";
146 };
147
148 uart8: serial@40019000 {
149 compatible = "st,stm32h7-uart";
150 reg = <0x40019000 0x400>;
151 interrupts-extended = <&exti 33 IRQ_TYPE_LEVEL_HIGH>;
152 clocks = <&rcc UART8_K>;
153 resets = <&rcc UART8_R>;
154 status = "disabled";
155 };
156
157 usart6: serial@44003000 {
158 compatible = "st,stm32h7-uart";
159 reg = <0x44003000 0x400>;
160 interrupts-extended = <&exti 29 IRQ_TYPE_LEVEL_HIGH>;
161 clocks = <&rcc USART6_K>;
162 resets = <&rcc USART6_R>;
163 status = "disabled";
164 };
165
166 timers15: timer@44006000 {
167 #address-cells = <1>;
168 #size-cells = <0>;
169 compatible = "st,stm32-timers";
170 reg = <0x44006000 0x400>;
171 clocks = <&rcc TIM15_K>;
172 clock-names = "int";
173 status = "disabled";
174 };
175
176 usbotg_hs: usb-otg@49000000 {
177 compatible = "st,stm32mp1-hsotg", "snps,dwc2";
178 reg = <0x49000000 0x10000>;
179 clocks = <&rcc USBO_K>;
180 clock-names = "otg";
181 resets = <&rcc USBO_R>;
182 reset-names = "dwc2";
183 interrupts-extended = <&exti 44 IRQ_TYPE_LEVEL_HIGH>;
184 g-rx-fifo-size = <512>;
185 g-np-tx-fifo-size = <32>;
186 g-tx-fifo-size = <256 16 16 16 16 16 16 16>;
187 dr_mode = "otg";
188 usb33d-supply = <&usb33>;
189 status = "disabled";
190 };
191
192 rcc: rcc@50000000 {
193 compatible = "st,stm32mp1-rcc", "syscon";
194 reg = <0x50000000 0x1000>;
195 #address-cells = <1>;
196 #size-cells = <0>;
197 #clock-cells = <1>;
198 #reset-cells = <1>;
199 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
200 secure-interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
201 secure-interrupt-names = "wakeup";
202 };
203
204 pwr_regulators: pwr@50001000 {
205 compatible = "st,stm32mp1,pwr-reg";
206 reg = <0x50001000 0x10>;
207 st,tzcr = <&rcc 0x0 0x1>;
208
209 reg11: reg11 {
210 regulator-name = "reg11";
211 regulator-min-microvolt = <1100000>;
212 regulator-max-microvolt = <1100000>;
213 };
214
215 reg18: reg18 {
216 regulator-name = "reg18";
217 regulator-min-microvolt = <1800000>;
218 regulator-max-microvolt = <1800000>;
219 };
220
221 usb33: usb33 {
222 regulator-name = "usb33";
223 regulator-min-microvolt = <3300000>;
224 regulator-max-microvolt = <3300000>;
225 };
226 };
227
228 pwr_mcu: pwr_mcu@50001014 {
229 compatible = "st,stm32mp151-pwr-mcu", "syscon";
230 reg = <0x50001014 0x4>;
231 };
232
233 pwr_irq: pwr@50001020 {
234 compatible = "st,stm32mp1-pwr";
235 reg = <0x50001020 0x100>;
236 interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
237 interrupt-controller;
238 #interrupt-cells = <3>;
239 };
240
241 exti: interrupt-controller@5000d000 {
242 compatible = "st,stm32mp1-exti", "syscon";
243 interrupt-controller;
244 #interrupt-cells = <2>;
245 reg = <0x5000d000 0x400>;
246
247 /* exti_pwr is an extra interrupt controller used for
248 * EXTI 55 to 60. It's mapped on pwr interrupt
249 * controller.
250 */
251 exti_pwr: exti-pwr {
252 interrupt-controller;
253 #interrupt-cells = <2>;
254 interrupt-parent = <&pwr_irq>;
255 st,irq-number = <6>;
256 };
257 };
258
259 syscfg: syscon@50020000 {
260 compatible = "st,stm32mp157-syscfg", "syscon";
261 reg = <0x50020000 0x400>;
262 clocks = <&rcc SYSCFG>;
263 };
264
265 hash1: hash@54002000 {
266 compatible = "st,stm32f756-hash";
267 reg = <0x54002000 0x400>;
268 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
269 clocks = <&rcc HASH1>;
270 resets = <&rcc HASH1_R>;
271 status = "disabled";
272 };
273
274 rng1: rng@54003000 {
275 compatible = "st,stm32-rng";
276 reg = <0x54003000 0x400>;
277 clocks = <&rcc RNG1_K>;
278 resets = <&rcc RNG1_R>;
279 status = "disabled";
280 };
281
Christophe Kerello749c9172020-07-16 16:57:34 +0200282 fmc: memory-controller@58002000 {
283 #address-cells = <2>;
284 #size-cells = <1>;
285 compatible = "st,stm32mp1-fmc2-ebi";
286 reg = <0x58002000 0x1000>;
Yann Gautier4ede20a2020-09-18 15:04:14 +0200287 clocks = <&rcc FMC_K>;
288 resets = <&rcc FMC_R>;
289 status = "disabled";
Christophe Kerello749c9172020-07-16 16:57:34 +0200290
291 ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */
292 <1 0 0x64000000 0x04000000>, /* EBI CS 2 */
293 <2 0 0x68000000 0x04000000>, /* EBI CS 3 */
294 <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */
295 <4 0 0x80000000 0x10000000>; /* NAND */
296
297 nand-controller@4,0 {
298 #address-cells = <1>;
299 #size-cells = <0>;
300 compatible = "st,stm32mp1-fmc2-nfc";
301 reg = <4 0x00000000 0x1000>,
302 <4 0x08010000 0x1000>,
303 <4 0x08020000 0x1000>,
304 <4 0x01000000 0x1000>,
305 <4 0x09010000 0x1000>,
306 <4 0x09020000 0x1000>;
307 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
308 status = "disabled";
309 };
Yann Gautier4ede20a2020-09-18 15:04:14 +0200310 };
311
312 qspi: spi@58003000 {
313 compatible = "st,stm32f469-qspi";
314 reg = <0x58003000 0x1000>, <0x70000000 0x10000000>;
315 reg-names = "qspi", "qspi_mm";
316 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
317 clocks = <&rcc QSPI_K>;
318 resets = <&rcc QSPI_R>;
319 status = "disabled";
320 };
321
322 sdmmc1: sdmmc@58005000 {
323 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
324 arm,primecell-periphid = <0x00253180>;
325 reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
326 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
327 interrupt-names = "cmd_irq";
328 clocks = <&rcc SDMMC1_K>;
329 clock-names = "apb_pclk";
330 resets = <&rcc SDMMC1_R>;
331 cap-sd-highspeed;
332 cap-mmc-highspeed;
333 max-frequency = <120000000>;
334 status = "disabled";
335 };
336
337 sdmmc2: sdmmc@58007000 {
338 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
339 arm,primecell-periphid = <0x00253180>;
340 reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
341 interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
342 interrupt-names = "cmd_irq";
343 clocks = <&rcc SDMMC2_K>;
344 clock-names = "apb_pclk";
345 resets = <&rcc SDMMC2_R>;
346 cap-sd-highspeed;
347 cap-mmc-highspeed;
348 max-frequency = <120000000>;
349 status = "disabled";
350 };
351
352 iwdg2: watchdog@5a002000 {
353 compatible = "st,stm32mp1-iwdg";
354 reg = <0x5a002000 0x400>;
355 secure-interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>;
356 clocks = <&rcc IWDG2>, <&rcc CK_LSI>;
357 clock-names = "pclk", "lsi";
358 status = "disabled";
359 };
360
361 usbphyc: usbphyc@5a006000 {
362 #address-cells = <1>;
363 #size-cells = <0>;
364 #clock-cells = <0>;
365 compatible = "st,stm32mp1-usbphyc";
366 reg = <0x5a006000 0x1000>;
367 clocks = <&rcc USBPHY_K>;
368 resets = <&rcc USBPHY_R>;
369 vdda1v1-supply = <&reg11>;
370 vdda1v8-supply = <&reg18>;
371 status = "disabled";
372
373 usbphyc_port0: usb-phy@0 {
374 #phy-cells = <0>;
375 reg = <0>;
376 };
377
378 usbphyc_port1: usb-phy@1 {
379 #phy-cells = <1>;
380 reg = <1>;
381 };
382 };
383
384 usart1: serial@5c000000 {
385 compatible = "st,stm32h7-uart";
386 reg = <0x5c000000 0x400>;
387 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
388 clocks = <&rcc USART1_K>;
389 resets = <&rcc USART1_R>;
390 status = "disabled";
391 };
392
393 spi6: spi@5c001000 {
394 #address-cells = <1>;
395 #size-cells = <0>;
396 compatible = "st,stm32h7-spi";
397 reg = <0x5c001000 0x400>;
398 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
399 clocks = <&rcc SPI6_K>;
400 resets = <&rcc SPI6_R>;
401 status = "disabled";
402 };
403
404 i2c4: i2c@5c002000 {
405 compatible = "st,stm32mp15-i2c";
406 reg = <0x5c002000 0x400>;
407 interrupt-names = "event", "error";
408 interrupts-extended = <&exti 24 IRQ_TYPE_LEVEL_HIGH>,
409 <&intc GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
410 clocks = <&rcc I2C4_K>;
411 resets = <&rcc I2C4_R>;
412 #address-cells = <1>;
413 #size-cells = <0>;
414 st,syscfg-fmp = <&syscfg 0x4 0x8>;
415 wakeup-source;
416 status = "disabled";
417 };
418
419 iwdg1: watchdog@5c003000 {
420 compatible = "st,stm32mp1-iwdg";
421 reg = <0x5C003000 0x400>;
422 interrupts = <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>;
423 clocks = <&rcc IWDG1>, <&rcc CK_LSI>;
424 clock-names = "pclk", "lsi";
425 status = "disabled";
426 };
427
428 rtc: rtc@5c004000 {
429 compatible = "st,stm32mp1-rtc";
430 reg = <0x5c004000 0x400>;
431 clocks = <&rcc RTCAPB>, <&rcc RTC>;
432 clock-names = "pclk", "rtc_ck";
433 interrupts-extended = <&exti 19 IRQ_TYPE_LEVEL_HIGH>;
434 status = "disabled";
435 };
436
437 bsec: nvmem@5c005000 {
438 compatible = "st,stm32mp15-bsec";
439 reg = <0x5c005000 0x400>;
440 #address-cells = <1>;
441 #size-cells = <1>;
442 ts_cal1: calib@5c {
443 reg = <0x5c 0x2>;
444 };
445 ts_cal2: calib@5e {
446 reg = <0x5e 0x2>;
447 };
448 };
449
450 etzpc: etzpc@5c007000 {
451 compatible = "st,stm32-etzpc";
452 reg = <0x5C007000 0x400>;
453 clocks = <&rcc TZPC>;
454 status = "disabled";
455 secure-status = "okay";
456 };
457
458 stgen: stgen@5c008000 {
459 compatible = "st,stm32-stgen";
460 reg = <0x5C008000 0x1000>;
461 };
462
463 i2c6: i2c@5c009000 {
464 compatible = "st,stm32mp15-i2c";
465 reg = <0x5c009000 0x400>;
466 interrupt-names = "event", "error";
467 interrupts-extended = <&exti 54 IRQ_TYPE_LEVEL_HIGH>,
468 <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
469 clocks = <&rcc I2C6_K>;
470 resets = <&rcc I2C6_R>;
471 #address-cells = <1>;
472 #size-cells = <0>;
473 st,syscfg-fmp = <&syscfg 0x4 0x20>;
474 wakeup-source;
475 status = "disabled";
476 };
477
478 tamp: tamp@5c00a000 {
479 compatible = "st,stm32-tamp", "simple-bus", "syscon", "simple-mfd";
480 reg = <0x5c00a000 0x400>;
481 secure-interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
482 clocks = <&rcc RTCAPB>;
483 };
484
485 /*
486 * Break node order to solve dependency probe issue between
487 * pinctrl and exti.
488 */
489 pinctrl: pin-controller@50002000 {
490 #address-cells = <1>;
491 #size-cells = <1>;
492 compatible = "st,stm32mp157-pinctrl";
493 ranges = <0 0x50002000 0xa400>;
494 interrupt-parent = <&exti>;
495 st,syscfg = <&exti 0x60 0xff>;
496 pins-are-numbered;
497
498 gpioa: gpio@50002000 {
499 gpio-controller;
500 #gpio-cells = <2>;
501 interrupt-controller;
502 #interrupt-cells = <2>;
503 reg = <0x0 0x400>;
504 clocks = <&rcc GPIOA>;
505 st,bank-name = "GPIOA";
506 status = "disabled";
507 };
508
509 gpiob: gpio@50003000 {
510 gpio-controller;
511 #gpio-cells = <2>;
512 interrupt-controller;
513 #interrupt-cells = <2>;
514 reg = <0x1000 0x400>;
515 clocks = <&rcc GPIOB>;
516 st,bank-name = "GPIOB";
517 status = "disabled";
518 };
519
520 gpioc: gpio@50004000 {
521 gpio-controller;
522 #gpio-cells = <2>;
523 interrupt-controller;
524 #interrupt-cells = <2>;
525 reg = <0x2000 0x400>;
526 clocks = <&rcc GPIOC>;
527 st,bank-name = "GPIOC";
528 status = "disabled";
529 };
530
531 gpiod: gpio@50005000 {
532 gpio-controller;
533 #gpio-cells = <2>;
534 interrupt-controller;
535 #interrupt-cells = <2>;
536 reg = <0x3000 0x400>;
537 clocks = <&rcc GPIOD>;
538 st,bank-name = "GPIOD";
539 status = "disabled";
540 };
541
542 gpioe: gpio@50006000 {
543 gpio-controller;
544 #gpio-cells = <2>;
545 interrupt-controller;
546 #interrupt-cells = <2>;
547 reg = <0x4000 0x400>;
548 clocks = <&rcc GPIOE>;
549 st,bank-name = "GPIOE";
550 status = "disabled";
551 };
552
553 gpiof: gpio@50007000 {
554 gpio-controller;
555 #gpio-cells = <2>;
556 interrupt-controller;
557 #interrupt-cells = <2>;
558 reg = <0x5000 0x400>;
559 clocks = <&rcc GPIOF>;
560 st,bank-name = "GPIOF";
561 status = "disabled";
562 };
563
564 gpiog: gpio@50008000 {
565 gpio-controller;
566 #gpio-cells = <2>;
567 interrupt-controller;
568 #interrupt-cells = <2>;
569 reg = <0x6000 0x400>;
570 clocks = <&rcc GPIOG>;
571 st,bank-name = "GPIOG";
572 status = "disabled";
573 };
574
575 gpioh: gpio@50009000 {
576 gpio-controller;
577 #gpio-cells = <2>;
578 interrupt-controller;
579 #interrupt-cells = <2>;
580 reg = <0x7000 0x400>;
581 clocks = <&rcc GPIOH>;
582 st,bank-name = "GPIOH";
583 status = "disabled";
584 };
585
586 gpioi: gpio@5000a000 {
587 gpio-controller;
588 #gpio-cells = <2>;
589 interrupt-controller;
590 #interrupt-cells = <2>;
591 reg = <0x8000 0x400>;
592 clocks = <&rcc GPIOI>;
593 st,bank-name = "GPIOI";
594 status = "disabled";
595 };
596
597 gpioj: gpio@5000b000 {
598 gpio-controller;
599 #gpio-cells = <2>;
600 interrupt-controller;
601 #interrupt-cells = <2>;
602 reg = <0x9000 0x400>;
603 clocks = <&rcc GPIOJ>;
604 st,bank-name = "GPIOJ";
605 status = "disabled";
606 };
607
608 gpiok: gpio@5000c000 {
609 gpio-controller;
610 #gpio-cells = <2>;
611 interrupt-controller;
612 #interrupt-cells = <2>;
613 reg = <0xa000 0x400>;
614 clocks = <&rcc GPIOK>;
615 st,bank-name = "GPIOK";
616 status = "disabled";
617 };
618 };
619
620 pinctrl_z: pin-controller-z@54004000 {
621 #address-cells = <1>;
622 #size-cells = <1>;
623 compatible = "st,stm32mp157-z-pinctrl";
624 ranges = <0 0x54004000 0x400>;
625 pins-are-numbered;
626 interrupt-parent = <&exti>;
627 st,syscfg = <&exti 0x60 0xff>;
628
629 gpioz: gpio@54004000 {
630 gpio-controller;
631 #gpio-cells = <2>;
632 interrupt-controller;
633 #interrupt-cells = <2>;
634 reg = <0 0x400>;
635 clocks = <&rcc GPIOZ>;
636 st,bank-name = "GPIOZ";
637 st,bank-ioport = <11>;
638 status = "disabled";
639 };
640 };
641 };
642};