blob: 8f175a6492a1f4c2bfe2b98d67ee6f136d33dfcd [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
124 uart7: serial@40018000 {
125 compatible = "st,stm32h7-uart";
126 reg = <0x40018000 0x400>;
127 interrupts-extended = <&exti 32 IRQ_TYPE_LEVEL_HIGH>;
128 clocks = <&rcc UART7_K>;
129 resets = <&rcc UART7_R>;
130 status = "disabled";
131 };
132
133 uart8: serial@40019000 {
134 compatible = "st,stm32h7-uart";
135 reg = <0x40019000 0x400>;
136 interrupts-extended = <&exti 33 IRQ_TYPE_LEVEL_HIGH>;
137 clocks = <&rcc UART8_K>;
138 resets = <&rcc UART8_R>;
139 status = "disabled";
140 };
141
142 usart6: serial@44003000 {
143 compatible = "st,stm32h7-uart";
144 reg = <0x44003000 0x400>;
145 interrupts-extended = <&exti 29 IRQ_TYPE_LEVEL_HIGH>;
146 clocks = <&rcc USART6_K>;
147 resets = <&rcc USART6_R>;
148 status = "disabled";
149 };
150
151 timers15: timer@44006000 {
152 #address-cells = <1>;
153 #size-cells = <0>;
154 compatible = "st,stm32-timers";
155 reg = <0x44006000 0x400>;
156 clocks = <&rcc TIM15_K>;
157 clock-names = "int";
158 status = "disabled";
159 };
160
161 usbotg_hs: usb-otg@49000000 {
162 compatible = "st,stm32mp1-hsotg", "snps,dwc2";
163 reg = <0x49000000 0x10000>;
164 clocks = <&rcc USBO_K>;
165 clock-names = "otg";
166 resets = <&rcc USBO_R>;
167 reset-names = "dwc2";
168 interrupts-extended = <&exti 44 IRQ_TYPE_LEVEL_HIGH>;
169 g-rx-fifo-size = <512>;
170 g-np-tx-fifo-size = <32>;
171 g-tx-fifo-size = <256 16 16 16 16 16 16 16>;
172 dr_mode = "otg";
173 usb33d-supply = <&usb33>;
174 status = "disabled";
175 };
176
177 rcc: rcc@50000000 {
178 compatible = "st,stm32mp1-rcc", "syscon";
179 reg = <0x50000000 0x1000>;
180 #address-cells = <1>;
181 #size-cells = <0>;
182 #clock-cells = <1>;
183 #reset-cells = <1>;
184 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
185 secure-interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
186 secure-interrupt-names = "wakeup";
187 };
188
189 pwr_regulators: pwr@50001000 {
190 compatible = "st,stm32mp1,pwr-reg";
191 reg = <0x50001000 0x10>;
192 st,tzcr = <&rcc 0x0 0x1>;
193
194 reg11: reg11 {
195 regulator-name = "reg11";
196 regulator-min-microvolt = <1100000>;
197 regulator-max-microvolt = <1100000>;
198 };
199
200 reg18: reg18 {
201 regulator-name = "reg18";
202 regulator-min-microvolt = <1800000>;
203 regulator-max-microvolt = <1800000>;
204 };
205
206 usb33: usb33 {
207 regulator-name = "usb33";
208 regulator-min-microvolt = <3300000>;
209 regulator-max-microvolt = <3300000>;
210 };
211 };
212
213 pwr_mcu: pwr_mcu@50001014 {
214 compatible = "st,stm32mp151-pwr-mcu", "syscon";
215 reg = <0x50001014 0x4>;
216 };
217
218 pwr_irq: pwr@50001020 {
219 compatible = "st,stm32mp1-pwr";
220 reg = <0x50001020 0x100>;
221 interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
222 interrupt-controller;
223 #interrupt-cells = <3>;
224 };
225
226 exti: interrupt-controller@5000d000 {
227 compatible = "st,stm32mp1-exti", "syscon";
228 interrupt-controller;
229 #interrupt-cells = <2>;
230 reg = <0x5000d000 0x400>;
231
232 /* exti_pwr is an extra interrupt controller used for
233 * EXTI 55 to 60. It's mapped on pwr interrupt
234 * controller.
235 */
236 exti_pwr: exti-pwr {
237 interrupt-controller;
238 #interrupt-cells = <2>;
239 interrupt-parent = <&pwr_irq>;
240 st,irq-number = <6>;
241 };
242 };
243
244 syscfg: syscon@50020000 {
245 compatible = "st,stm32mp157-syscfg", "syscon";
246 reg = <0x50020000 0x400>;
247 clocks = <&rcc SYSCFG>;
248 };
249
250 hash1: hash@54002000 {
251 compatible = "st,stm32f756-hash";
252 reg = <0x54002000 0x400>;
253 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
254 clocks = <&rcc HASH1>;
255 resets = <&rcc HASH1_R>;
256 status = "disabled";
257 };
258
259 rng1: rng@54003000 {
260 compatible = "st,stm32-rng";
261 reg = <0x54003000 0x400>;
262 clocks = <&rcc RNG1_K>;
263 resets = <&rcc RNG1_R>;
264 status = "disabled";
265 };
266
Christophe Kerello749c9172020-07-16 16:57:34 +0200267 fmc: memory-controller@58002000 {
268 #address-cells = <2>;
269 #size-cells = <1>;
270 compatible = "st,stm32mp1-fmc2-ebi";
271 reg = <0x58002000 0x1000>;
Yann Gautier4ede20a2020-09-18 15:04:14 +0200272 clocks = <&rcc FMC_K>;
273 resets = <&rcc FMC_R>;
274 status = "disabled";
Christophe Kerello749c9172020-07-16 16:57:34 +0200275
276 ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */
277 <1 0 0x64000000 0x04000000>, /* EBI CS 2 */
278 <2 0 0x68000000 0x04000000>, /* EBI CS 3 */
279 <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */
280 <4 0 0x80000000 0x10000000>; /* NAND */
281
282 nand-controller@4,0 {
283 #address-cells = <1>;
284 #size-cells = <0>;
285 compatible = "st,stm32mp1-fmc2-nfc";
286 reg = <4 0x00000000 0x1000>,
287 <4 0x08010000 0x1000>,
288 <4 0x08020000 0x1000>,
289 <4 0x01000000 0x1000>,
290 <4 0x09010000 0x1000>,
291 <4 0x09020000 0x1000>;
292 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
293 status = "disabled";
294 };
Yann Gautier4ede20a2020-09-18 15:04:14 +0200295 };
296
297 qspi: spi@58003000 {
298 compatible = "st,stm32f469-qspi";
299 reg = <0x58003000 0x1000>, <0x70000000 0x10000000>;
300 reg-names = "qspi", "qspi_mm";
301 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
302 clocks = <&rcc QSPI_K>;
303 resets = <&rcc QSPI_R>;
304 status = "disabled";
305 };
306
307 sdmmc1: sdmmc@58005000 {
308 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
309 arm,primecell-periphid = <0x00253180>;
310 reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
311 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
312 interrupt-names = "cmd_irq";
313 clocks = <&rcc SDMMC1_K>;
314 clock-names = "apb_pclk";
315 resets = <&rcc SDMMC1_R>;
316 cap-sd-highspeed;
317 cap-mmc-highspeed;
318 max-frequency = <120000000>;
319 status = "disabled";
320 };
321
322 sdmmc2: sdmmc@58007000 {
323 compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
324 arm,primecell-periphid = <0x00253180>;
325 reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
326 interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
327 interrupt-names = "cmd_irq";
328 clocks = <&rcc SDMMC2_K>;
329 clock-names = "apb_pclk";
330 resets = <&rcc SDMMC2_R>;
331 cap-sd-highspeed;
332 cap-mmc-highspeed;
333 max-frequency = <120000000>;
334 status = "disabled";
335 };
336
337 iwdg2: watchdog@5a002000 {
338 compatible = "st,stm32mp1-iwdg";
339 reg = <0x5a002000 0x400>;
340 secure-interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>;
341 clocks = <&rcc IWDG2>, <&rcc CK_LSI>;
342 clock-names = "pclk", "lsi";
343 status = "disabled";
344 };
345
346 usbphyc: usbphyc@5a006000 {
347 #address-cells = <1>;
348 #size-cells = <0>;
349 #clock-cells = <0>;
350 compatible = "st,stm32mp1-usbphyc";
351 reg = <0x5a006000 0x1000>;
352 clocks = <&rcc USBPHY_K>;
353 resets = <&rcc USBPHY_R>;
354 vdda1v1-supply = <&reg11>;
355 vdda1v8-supply = <&reg18>;
356 status = "disabled";
357
358 usbphyc_port0: usb-phy@0 {
359 #phy-cells = <0>;
360 reg = <0>;
361 };
362
363 usbphyc_port1: usb-phy@1 {
364 #phy-cells = <1>;
365 reg = <1>;
366 };
367 };
368
369 usart1: serial@5c000000 {
370 compatible = "st,stm32h7-uart";
371 reg = <0x5c000000 0x400>;
372 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
373 clocks = <&rcc USART1_K>;
374 resets = <&rcc USART1_R>;
375 status = "disabled";
376 };
377
378 spi6: spi@5c001000 {
379 #address-cells = <1>;
380 #size-cells = <0>;
381 compatible = "st,stm32h7-spi";
382 reg = <0x5c001000 0x400>;
383 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
384 clocks = <&rcc SPI6_K>;
385 resets = <&rcc SPI6_R>;
386 status = "disabled";
387 };
388
389 i2c4: i2c@5c002000 {
390 compatible = "st,stm32mp15-i2c";
391 reg = <0x5c002000 0x400>;
392 interrupt-names = "event", "error";
393 interrupts-extended = <&exti 24 IRQ_TYPE_LEVEL_HIGH>,
394 <&intc GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
395 clocks = <&rcc I2C4_K>;
396 resets = <&rcc I2C4_R>;
397 #address-cells = <1>;
398 #size-cells = <0>;
399 st,syscfg-fmp = <&syscfg 0x4 0x8>;
400 wakeup-source;
401 status = "disabled";
402 };
403
404 iwdg1: watchdog@5c003000 {
405 compatible = "st,stm32mp1-iwdg";
406 reg = <0x5C003000 0x400>;
407 interrupts = <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>;
408 clocks = <&rcc IWDG1>, <&rcc CK_LSI>;
409 clock-names = "pclk", "lsi";
410 status = "disabled";
411 };
412
413 rtc: rtc@5c004000 {
414 compatible = "st,stm32mp1-rtc";
415 reg = <0x5c004000 0x400>;
416 clocks = <&rcc RTCAPB>, <&rcc RTC>;
417 clock-names = "pclk", "rtc_ck";
418 interrupts-extended = <&exti 19 IRQ_TYPE_LEVEL_HIGH>;
419 status = "disabled";
420 };
421
422 bsec: nvmem@5c005000 {
423 compatible = "st,stm32mp15-bsec";
424 reg = <0x5c005000 0x400>;
425 #address-cells = <1>;
426 #size-cells = <1>;
427 ts_cal1: calib@5c {
428 reg = <0x5c 0x2>;
429 };
430 ts_cal2: calib@5e {
431 reg = <0x5e 0x2>;
432 };
433 };
434
435 etzpc: etzpc@5c007000 {
436 compatible = "st,stm32-etzpc";
437 reg = <0x5C007000 0x400>;
438 clocks = <&rcc TZPC>;
439 status = "disabled";
440 secure-status = "okay";
441 };
442
443 stgen: stgen@5c008000 {
444 compatible = "st,stm32-stgen";
445 reg = <0x5C008000 0x1000>;
446 };
447
448 i2c6: i2c@5c009000 {
449 compatible = "st,stm32mp15-i2c";
450 reg = <0x5c009000 0x400>;
451 interrupt-names = "event", "error";
452 interrupts-extended = <&exti 54 IRQ_TYPE_LEVEL_HIGH>,
453 <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
454 clocks = <&rcc I2C6_K>;
455 resets = <&rcc I2C6_R>;
456 #address-cells = <1>;
457 #size-cells = <0>;
458 st,syscfg-fmp = <&syscfg 0x4 0x20>;
459 wakeup-source;
460 status = "disabled";
461 };
462
463 tamp: tamp@5c00a000 {
464 compatible = "st,stm32-tamp", "simple-bus", "syscon", "simple-mfd";
465 reg = <0x5c00a000 0x400>;
466 secure-interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
467 clocks = <&rcc RTCAPB>;
468 };
469
470 /*
471 * Break node order to solve dependency probe issue between
472 * pinctrl and exti.
473 */
474 pinctrl: pin-controller@50002000 {
475 #address-cells = <1>;
476 #size-cells = <1>;
477 compatible = "st,stm32mp157-pinctrl";
478 ranges = <0 0x50002000 0xa400>;
479 interrupt-parent = <&exti>;
480 st,syscfg = <&exti 0x60 0xff>;
481 pins-are-numbered;
482
483 gpioa: gpio@50002000 {
484 gpio-controller;
485 #gpio-cells = <2>;
486 interrupt-controller;
487 #interrupt-cells = <2>;
488 reg = <0x0 0x400>;
489 clocks = <&rcc GPIOA>;
490 st,bank-name = "GPIOA";
491 status = "disabled";
492 };
493
494 gpiob: gpio@50003000 {
495 gpio-controller;
496 #gpio-cells = <2>;
497 interrupt-controller;
498 #interrupt-cells = <2>;
499 reg = <0x1000 0x400>;
500 clocks = <&rcc GPIOB>;
501 st,bank-name = "GPIOB";
502 status = "disabled";
503 };
504
505 gpioc: gpio@50004000 {
506 gpio-controller;
507 #gpio-cells = <2>;
508 interrupt-controller;
509 #interrupt-cells = <2>;
510 reg = <0x2000 0x400>;
511 clocks = <&rcc GPIOC>;
512 st,bank-name = "GPIOC";
513 status = "disabled";
514 };
515
516 gpiod: gpio@50005000 {
517 gpio-controller;
518 #gpio-cells = <2>;
519 interrupt-controller;
520 #interrupt-cells = <2>;
521 reg = <0x3000 0x400>;
522 clocks = <&rcc GPIOD>;
523 st,bank-name = "GPIOD";
524 status = "disabled";
525 };
526
527 gpioe: gpio@50006000 {
528 gpio-controller;
529 #gpio-cells = <2>;
530 interrupt-controller;
531 #interrupt-cells = <2>;
532 reg = <0x4000 0x400>;
533 clocks = <&rcc GPIOE>;
534 st,bank-name = "GPIOE";
535 status = "disabled";
536 };
537
538 gpiof: gpio@50007000 {
539 gpio-controller;
540 #gpio-cells = <2>;
541 interrupt-controller;
542 #interrupt-cells = <2>;
543 reg = <0x5000 0x400>;
544 clocks = <&rcc GPIOF>;
545 st,bank-name = "GPIOF";
546 status = "disabled";
547 };
548
549 gpiog: gpio@50008000 {
550 gpio-controller;
551 #gpio-cells = <2>;
552 interrupt-controller;
553 #interrupt-cells = <2>;
554 reg = <0x6000 0x400>;
555 clocks = <&rcc GPIOG>;
556 st,bank-name = "GPIOG";
557 status = "disabled";
558 };
559
560 gpioh: gpio@50009000 {
561 gpio-controller;
562 #gpio-cells = <2>;
563 interrupt-controller;
564 #interrupt-cells = <2>;
565 reg = <0x7000 0x400>;
566 clocks = <&rcc GPIOH>;
567 st,bank-name = "GPIOH";
568 status = "disabled";
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 status = "disabled";
580 };
581
582 gpioj: gpio@5000b000 {
583 gpio-controller;
584 #gpio-cells = <2>;
585 interrupt-controller;
586 #interrupt-cells = <2>;
587 reg = <0x9000 0x400>;
588 clocks = <&rcc GPIOJ>;
589 st,bank-name = "GPIOJ";
590 status = "disabled";
591 };
592
593 gpiok: gpio@5000c000 {
594 gpio-controller;
595 #gpio-cells = <2>;
596 interrupt-controller;
597 #interrupt-cells = <2>;
598 reg = <0xa000 0x400>;
599 clocks = <&rcc GPIOK>;
600 st,bank-name = "GPIOK";
601 status = "disabled";
602 };
603 };
604
605 pinctrl_z: pin-controller-z@54004000 {
606 #address-cells = <1>;
607 #size-cells = <1>;
608 compatible = "st,stm32mp157-z-pinctrl";
609 ranges = <0 0x54004000 0x400>;
610 pins-are-numbered;
611 interrupt-parent = <&exti>;
612 st,syscfg = <&exti 0x60 0xff>;
613
614 gpioz: gpio@54004000 {
615 gpio-controller;
616 #gpio-cells = <2>;
617 interrupt-controller;
618 #interrupt-cells = <2>;
619 reg = <0 0x400>;
620 clocks = <&rcc GPIOZ>;
621 st,bank-name = "GPIOZ";
622 st,bank-ioport = <11>;
623 status = "disabled";
624 };
625 };
626 };
627};