blob: 1df76fa752e7fbaa33a8ae9b1bce24ef83fcbdb7 [file] [log] [blame]
Yann Gautier66386952018-07-05 16:49:51 +02001// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
Yann Gautier3edc7c32019-05-20 19:17:08 +02003 * Copyright (C) STMicroelectronics 2017-2019 - All Rights Reserved
Yann Gautier66386952018-07-05 16:49:51 +02004 * Author: Ludovic Barre <ludovic.barre@st.com> for STMicroelectronics.
5 */
Yann Gautier7b7e4bf2019-01-17 19:16:03 +01006#include <dt-bindings/interrupt-controller/arm-gic.h>
Yann Gautier66386952018-07-05 16:49:51 +02007#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
Yann Gautier7b7e4bf2019-01-17 19:16:03 +010014 intc: interrupt-controller@a0021000 {
15 compatible = "arm,cortex-a7-gic";
16 #interrupt-cells = <3>;
17 interrupt-controller;
18 reg = <0xa0021000 0x1000>,
19 <0xa0022000 0x2000>;
Yann Gautier66386952018-07-05 16:49:51 +020020 };
21
22 clocks {
23 clk_hse: clk-hse {
24 #clock-cells = <0>;
25 compatible = "fixed-clock";
26 clock-frequency = <24000000>;
27 };
28
29 clk_hsi: clk-hsi {
30 #clock-cells = <0>;
31 compatible = "fixed-clock";
32 clock-frequency = <64000000>;
33 };
34
35 clk_lse: clk-lse {
36 #clock-cells = <0>;
37 compatible = "fixed-clock";
38 clock-frequency = <32768>;
39 };
40
41 clk_lsi: clk-lsi {
42 #clock-cells = <0>;
43 compatible = "fixed-clock";
44 clock-frequency = <32000>;
45 };
46
47 clk_csi: clk-csi {
48 #clock-cells = <0>;
49 compatible = "fixed-clock";
50 clock-frequency = <4000000>;
51 };
52
53 clk_i2s_ckin: i2s_ckin {
54 #clock-cells = <0>;
55 compatible = "fixed-clock";
Yann Gautier7b7e4bf2019-01-17 19:16:03 +010056 clock-frequency = <0>;
Yann Gautier66386952018-07-05 16:49:51 +020057 };
58
59 clk_dsi_phy: ck_dsi_phy {
60 #clock-cells = <0>;
61 compatible = "fixed-clock";
62 clock-frequency = <0>;
63 };
Yann Gautier66386952018-07-05 16:49:51 +020064 };
65
66 soc {
67 compatible = "simple-bus";
68 #address-cells = <1>;
69 #size-cells = <1>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +010070 interrupt-parent = <&intc>;
Yann Gautier66386952018-07-05 16:49:51 +020071 ranges;
72
73 usart2: serial@4000e000 {
Yann Gautier7b7e4bf2019-01-17 19:16:03 +010074 compatible = "st,stm32h7-uart";
Yann Gautier66386952018-07-05 16:49:51 +020075 reg = <0x4000e000 0x400>;
76 clocks = <&rcc USART2_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +010077 resets = <&rcc USART2_R>;
Yann Gautier66386952018-07-05 16:49:51 +020078 status = "disabled";
79 };
80
81 usart3: serial@4000f000 {
Yann Gautier7b7e4bf2019-01-17 19:16:03 +010082 compatible = "st,stm32h7-uart";
Yann Gautier66386952018-07-05 16:49:51 +020083 reg = <0x4000f000 0x400>;
84 clocks = <&rcc USART3_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +010085 resets = <&rcc USART3_R>;
Yann Gautier66386952018-07-05 16:49:51 +020086 status = "disabled";
87 };
88
89 uart4: serial@40010000 {
90 compatible = "st,stm32h7-uart";
91 reg = <0x40010000 0x400>;
92 clocks = <&rcc UART4_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +010093 resets = <&rcc UART4_R>;
Yann Gautier66386952018-07-05 16:49:51 +020094 status = "disabled";
95 };
96
97 uart5: serial@40011000 {
98 compatible = "st,stm32h7-uart";
99 reg = <0x40011000 0x400>;
100 clocks = <&rcc UART5_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100101 resets = <&rcc UART5_R>;
Yann Gautier66386952018-07-05 16:49:51 +0200102 status = "disabled";
103 };
104
105
106 uart7: serial@40018000 {
107 compatible = "st,stm32h7-uart";
108 reg = <0x40018000 0x400>;
109 clocks = <&rcc UART7_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100110 resets = <&rcc UART7_R>;
Yann Gautier66386952018-07-05 16:49:51 +0200111 status = "disabled";
112 };
113
114 uart8: serial@40019000 {
115 compatible = "st,stm32h7-uart";
116 reg = <0x40019000 0x400>;
117 clocks = <&rcc UART8_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100118 resets = <&rcc UART8_R>;
Yann Gautier66386952018-07-05 16:49:51 +0200119 status = "disabled";
120 };
121
122 usart6: serial@44003000 {
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100123 compatible = "st,stm32h7-uart";
Yann Gautier66386952018-07-05 16:49:51 +0200124 reg = <0x44003000 0x400>;
125 clocks = <&rcc USART6_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100126 resets = <&rcc USART6_R>;
Yann Gautier66386952018-07-05 16:49:51 +0200127 status = "disabled";
128 };
129
130 sdmmc3: sdmmc@48004000 {
131 compatible = "st,stm32-sdmmc2";
132 reg = <0x48004000 0x400>, <0x48005000 0x400>;
Yann Gautier66386952018-07-05 16:49:51 +0200133 clocks = <&rcc SDMMC3_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100134 clock-names = "apb_pclk";
Yann Gautier66386952018-07-05 16:49:51 +0200135 resets = <&rcc SDMMC3_R>;
136 cap-sd-highspeed;
137 cap-mmc-highspeed;
138 max-frequency = <120000000>;
139 status = "disabled";
140 };
141
142 rcc: rcc@50000000 {
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100143 compatible = "st,stm32mp1-rcc", "syscon";
144 reg = <0x50000000 0x1000>;
Yann Gautier66386952018-07-05 16:49:51 +0200145 #clock-cells = <1>;
146 #reset-cells = <1>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100147 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
Yann Gautier66386952018-07-05 16:49:51 +0200148 };
149
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100150 pwr: pwr@50001000 {
151 compatible = "st,stm32mp1-pwr", "syscon", "simple-mfd";
152 reg = <0x50001000 0x400>;
Yann Gautier66386952018-07-05 16:49:51 +0200153 };
154
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100155 exti: interrupt-controller@5000d000 {
156 compatible = "st,stm32mp1-exti", "syscon";
157 interrupt-controller;
158 #interrupt-cells = <2>;
159 reg = <0x5000d000 0x400>;
160
161 /* exti_pwr is an extra interrupt controller used for
162 * EXTI 55 to 60. It's mapped on pwr interrupt
163 * controller.
164 */
165 exti_pwr: exti-pwr {
166 interrupt-controller;
167 #interrupt-cells = <2>;
168 interrupt-parent = <&pwr>;
169 st,irq-number = <6>;
170 };
171 };
172
Yann Gautier3edc7c32019-05-20 19:17:08 +0200173 syscfg: syscon@50020000 {
174 compatible = "st,stm32mp157-syscfg", "syscon";
175 reg = <0x50020000 0x400>;
176 clocks = <&rcc SYSCFG>;
177 };
178
Yann Gautier66386952018-07-05 16:49:51 +0200179 rng1: rng@54003000 {
180 compatible = "st,stm32-rng";
181 reg = <0x54003000 0x400>;
182 clocks = <&rcc RNG1_K>;
183 resets = <&rcc RNG1_R>;
184 status = "disabled";
185 };
186
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100187 fmc: nand-controller@58002000 {
188 compatible = "st,stm32mp15-fmc2";
Yann Gautier66386952018-07-05 16:49:51 +0200189 reg = <0x58002000 0x1000>,
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100190 <0x80000000 0x1000>,
191 <0x88010000 0x1000>,
192 <0x88020000 0x1000>,
193 <0x81000000 0x1000>,
194 <0x89010000 0x1000>,
195 <0x89020000 0x1000>;
Yann Gautier66386952018-07-05 16:49:51 +0200196 clocks = <&rcc FMC_K>;
197 resets = <&rcc FMC_R>;
198 status = "disabled";
199 };
200
201 qspi: qspi@58003000 {
202 compatible = "st,stm32f469-qspi";
203 reg = <0x58003000 0x1000>, <0x70000000 0x10000000>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100204 reg-names = "qspi", "qspi_mm";
Yann Gautier66386952018-07-05 16:49:51 +0200205 clocks = <&rcc QSPI_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100206 resets = <&rcc QSPI_R>;
Yann Gautier66386952018-07-05 16:49:51 +0200207 status = "disabled";
208 };
209
210 sdmmc1: sdmmc@58005000 {
211 compatible = "st,stm32-sdmmc2";
212 reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
Yann Gautier66386952018-07-05 16:49:51 +0200213 clocks = <&rcc SDMMC1_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100214 clock-names = "apb_pclk";
Yann Gautier66386952018-07-05 16:49:51 +0200215 resets = <&rcc SDMMC1_R>;
216 cap-sd-highspeed;
217 cap-mmc-highspeed;
218 max-frequency = <120000000>;
219 status = "disabled";
220 };
221
222 sdmmc2: sdmmc@58007000 {
223 compatible = "st,stm32-sdmmc2";
224 reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
Yann Gautier66386952018-07-05 16:49:51 +0200225 clocks = <&rcc SDMMC2_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100226 clock-names = "apb_pclk";
Yann Gautier66386952018-07-05 16:49:51 +0200227 resets = <&rcc SDMMC2_R>;
228 cap-sd-highspeed;
229 cap-mmc-highspeed;
230 max-frequency = <120000000>;
231 status = "disabled";
232 };
233
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100234 iwdg2: watchdog@5a002000 {
Yann Gautier66386952018-07-05 16:49:51 +0200235 compatible = "st,stm32mp1-iwdg";
236 reg = <0x5a002000 0x400>;
237 clocks = <&rcc IWDG2>, <&rcc CK_LSI>;
238 clock-names = "pclk", "lsi";
239 status = "disabled";
240 };
241
242 usart1: serial@5c000000 {
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100243 compatible = "st,stm32h7-uart";
Yann Gautier66386952018-07-05 16:49:51 +0200244 reg = <0x5c000000 0x400>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100245 interrupt-names = "event", "wakeup";
246 interrupts-extended = <&intc GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
247 <&exti 26 1>;
Yann Gautier66386952018-07-05 16:49:51 +0200248 clocks = <&rcc USART1_K>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100249 resets = <&rcc USART1_R>;
Yann Gautier66386952018-07-05 16:49:51 +0200250 status = "disabled";
251 };
252
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100253 spi6: spi@5c001000 {
254 #address-cells = <1>;
255 #size-cells = <0>;
256 compatible = "st,stm32h7-spi";
257 reg = <0x5c001000 0x400>;
258 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
259 clocks = <&rcc SPI6_K>;
260 resets = <&rcc SPI6_R>;
261 status = "disabled";
262 };
263
Yann Gautier66386952018-07-05 16:49:51 +0200264 i2c4: i2c@5c002000 {
265 compatible = "st,stm32f7-i2c";
266 reg = <0x5c002000 0x400>;
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100267 interrupt-names = "event", "error", "wakeup";
268 interrupts-extended = <&intc GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
269 <&intc GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
270 <&exti 24 1>;
Yann Gautier66386952018-07-05 16:49:51 +0200271 clocks = <&rcc I2C4_K>;
272 resets = <&rcc I2C4_R>;
273 #address-cells = <1>;
274 #size-cells = <0>;
275 status = "disabled";
276 };
277
278 rtc: rtc@5c004000 {
279 compatible = "st,stm32mp1-rtc";
280 reg = <0x5c004000 0x400>;
281 clocks = <&rcc RTCAPB>, <&rcc RTC>;
282 clock-names = "pclk", "rtc_ck";
Yann Gautier7b7e4bf2019-01-17 19:16:03 +0100283 interrupts-extended = <&intc GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
284 <&exti 19 1>;
285 status = "disabled";
286 };
287
288 bsec: nvmem@5c005000 {
289 compatible = "st,stm32mp15-bsec";
290 reg = <0x5c005000 0x400>;
291 #address-cells = <1>;
292 #size-cells = <1>;
293 ts_cal1: calib@5c {
294 reg = <0x5c 0x2>;
295 };
296 ts_cal2: calib@5e {
297 reg = <0x5e 0x2>;
298 };
299 };
300
301 i2c6: i2c@5c009000 {
302 compatible = "st,stm32f7-i2c";
303 reg = <0x5c009000 0x400>;
304 interrupt-names = "event", "error", "wakeup";
305 interrupts-extended = <&intc GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
306 <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
307 <&exti 54 1>;
308 clocks = <&rcc I2C6_K>;
309 resets = <&rcc I2C6_R>;
310 #address-cells = <1>;
311 #size-cells = <0>;
312 status = "disabled";
Yann Gautier66386952018-07-05 16:49:51 +0200313 };
314 };
315};