GNU Linux-libre 5.19-rc6-gnu
[releases.git] / arch / arm / boot / dts / stm32mp131.dtsi
1 // 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
30         clocks {
31                 clk_axi: clk-axi {
32                         #clock-cells = <0>;
33                         compatible = "fixed-clock";
34                         clock-frequency = <266500000>;
35                 };
36
37                 clk_hse: clk-hse {
38                         #clock-cells = <0>;
39                         compatible = "fixed-clock";
40                         clock-frequency = <24000000>;
41                 };
42
43                 clk_hsi: clk-hsi {
44                         #clock-cells = <0>;
45                         compatible = "fixed-clock";
46                         clock-frequency = <64000000>;
47                 };
48
49                 clk_lsi: clk-lsi {
50                         #clock-cells = <0>;
51                         compatible = "fixed-clock";
52                         clock-frequency = <32000>;
53                 };
54
55                 clk_pclk3: clk-pclk3 {
56                         #clock-cells = <0>;
57                         compatible = "fixed-clock";
58                         clock-frequency = <104438965>;
59                 };
60
61                 clk_pclk4: clk-pclk4 {
62                         #clock-cells = <0>;
63                         compatible = "fixed-clock";
64                         clock-frequency = <133250000>;
65                 };
66
67                 clk_pll4_p: clk-pll4_p {
68                         #clock-cells = <0>;
69                         compatible = "fixed-clock";
70                         clock-frequency = <50000000>;
71                 };
72
73                 clk_pll4_r: clk-pll4_r {
74                         #clock-cells = <0>;
75                         compatible = "fixed-clock";
76                         clock-frequency = <99000000>;
77                 };
78
79                 clk_rtc_k: clk-rtc-k {
80                         #clock-cells = <0>;
81                         compatible = "fixed-clock";
82                         clock-frequency = <32768>;
83                 };
84         };
85
86         intc: interrupt-controller@a0021000 {
87                 compatible = "arm,cortex-a7-gic";
88                 #interrupt-cells = <3>;
89                 interrupt-controller;
90                 reg = <0xa0021000 0x1000>,
91                       <0xa0022000 0x2000>;
92         };
93
94         psci {
95                 compatible = "arm,psci-1.0";
96                 method = "smc";
97         };
98
99         timer {
100                 compatible = "arm,armv7-timer";
101                 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
102                              <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
103                              <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
104                              <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
105                 interrupt-parent = <&intc>;
106                 always-on;
107         };
108
109         soc {
110                 compatible = "simple-bus";
111                 #address-cells = <1>;
112                 #size-cells = <1>;
113                 interrupt-parent = <&intc>;
114                 ranges;
115
116                 uart4: serial@40010000 {
117                         compatible = "st,stm32h7-uart";
118                         reg = <0x40010000 0x400>;
119                         interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
120                         clocks = <&clk_hsi>;
121                         status = "disabled";
122                 };
123
124                 dma1: dma-controller@48000000 {
125                         compatible = "st,stm32-dma";
126                         reg = <0x48000000 0x400>;
127                         interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
128                                      <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
129                                      <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
130                                      <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
131                                      <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
132                                      <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
133                                      <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
134                                      <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
135                         clocks = <&clk_pclk4>;
136                         #dma-cells = <4>;
137                         st,mem2mem;
138                         dma-requests = <8>;
139                 };
140
141                 dma2: dma-controller@48001000 {
142                         compatible = "st,stm32-dma";
143                         reg = <0x48001000 0x400>;
144                         interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
145                                      <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
146                                      <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
147                                      <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
148                                      <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
149                                      <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
150                                      <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
151                                      <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
152                         clocks = <&clk_pclk4>;
153                         #dma-cells = <4>;
154                         st,mem2mem;
155                         dma-requests = <8>;
156                 };
157
158                 dmamux1: dma-router@48002000 {
159                         compatible = "st,stm32h7-dmamux";
160                         reg = <0x48002000 0x40>;
161                         clocks = <&clk_pclk4>;
162                         #dma-cells = <3>;
163                         dma-masters = <&dma1 &dma2>;
164                         dma-requests = <128>;
165                         dma-channels = <16>;
166                 };
167
168                 exti: interrupt-controller@5000d000 {
169                         compatible = "st,stm32mp13-exti", "syscon";
170                         interrupt-controller;
171                         #interrupt-cells = <2>;
172                         reg = <0x5000d000 0x400>;
173                 };
174
175                 syscfg: syscon@50020000 {
176                         compatible = "st,stm32mp157-syscfg", "syscon";
177                         reg = <0x50020000 0x400>;
178                         clocks = <&clk_pclk3>;
179                 };
180
181                 mdma: dma-controller@58000000 {
182                         compatible = "st,stm32h7-mdma";
183                         reg = <0x58000000 0x1000>;
184                         interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
185                         clocks = <&clk_pclk4>;
186                         #dma-cells = <5>;
187                         dma-channels = <32>;
188                         dma-requests = <48>;
189                 };
190
191                 sdmmc1: mmc@58005000 {
192                         compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
193                         arm,primecell-periphid = <0x20253180>;
194                         reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
195                         interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
196                         interrupt-names = "cmd_irq";
197                         clocks = <&clk_pll4_p>;
198                         clock-names = "apb_pclk";
199                         cap-sd-highspeed;
200                         cap-mmc-highspeed;
201                         max-frequency = <130000000>;
202                         status = "disabled";
203                 };
204
205                 sdmmc2: mmc@58007000 {
206                         compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
207                         arm,primecell-periphid = <0x20253180>;
208                         reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
209                         interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
210                         interrupt-names = "cmd_irq";
211                         clocks = <&clk_pll4_p>;
212                         clock-names = "apb_pclk";
213                         cap-sd-highspeed;
214                         cap-mmc-highspeed;
215                         max-frequency = <130000000>;
216                         status = "disabled";
217                 };
218
219                 iwdg2: watchdog@5a002000 {
220                         compatible = "st,stm32mp1-iwdg";
221                         reg = <0x5a002000 0x400>;
222                         clocks = <&clk_pclk4>, <&clk_lsi>;
223                         clock-names = "pclk", "lsi";
224                         status = "disabled";
225                 };
226
227                 rtc: rtc@5c004000 {
228                         compatible = "st,stm32mp1-rtc";
229                         reg = <0x5c004000 0x400>;
230                         interrupts-extended = <&exti 19 IRQ_TYPE_LEVEL_HIGH>;
231                         clocks = <&clk_pclk4>, <&clk_rtc_k>;
232                         clock-names = "pclk", "rtc_ck";
233                         status = "disabled";
234                 };
235
236                 bsec: efuse@5c005000 {
237                         compatible = "st,stm32mp15-bsec";
238                         reg = <0x5c005000 0x400>;
239                         #address-cells = <1>;
240                         #size-cells = <1>;
241
242                         part_number_otp: part_number_otp@4 {
243                                 reg = <0x4 0x2>;
244                         };
245                         ts_cal1: calib@5c {
246                                 reg = <0x5c 0x2>;
247                         };
248                         ts_cal2: calib@5e {
249                                 reg = <0x5e 0x2>;
250                         };
251                 };
252
253                 /*
254                  * Break node order to solve dependency probe issue between
255                  * pinctrl and exti.
256                  */
257                 pinctrl: pinctrl@50002000 {
258                         #address-cells = <1>;
259                         #size-cells = <1>;
260                         compatible = "st,stm32mp135-pinctrl";
261                         ranges = <0 0x50002000 0x8400>;
262                         interrupt-parent = <&exti>;
263                         st,syscfg = <&exti 0x60 0xff>;
264                         pins-are-numbered;
265
266                         gpioa: gpio@50002000 {
267                                 gpio-controller;
268                                 #gpio-cells = <2>;
269                                 interrupt-controller;
270                                 #interrupt-cells = <2>;
271                                 reg = <0x0 0x400>;
272                                 clocks = <&clk_pclk4>;
273                                 st,bank-name = "GPIOA";
274                                 ngpios = <16>;
275                                 gpio-ranges = <&pinctrl 0 0 16>;
276                         };
277
278                         gpiob: gpio@50003000 {
279                                 gpio-controller;
280                                 #gpio-cells = <2>;
281                                 interrupt-controller;
282                                 #interrupt-cells = <2>;
283                                 reg = <0x1000 0x400>;
284                                 clocks = <&clk_pclk4>;
285                                 st,bank-name = "GPIOB";
286                                 ngpios = <16>;
287                                 gpio-ranges = <&pinctrl 0 16 16>;
288                         };
289
290                         gpioc: gpio@50004000 {
291                                 gpio-controller;
292                                 #gpio-cells = <2>;
293                                 interrupt-controller;
294                                 #interrupt-cells = <2>;
295                                 reg = <0x2000 0x400>;
296                                 clocks = <&clk_pclk4>;
297                                 st,bank-name = "GPIOC";
298                                 ngpios = <16>;
299                                 gpio-ranges = <&pinctrl 0 32 16>;
300                         };
301
302                         gpiod: gpio@50005000 {
303                                 gpio-controller;
304                                 #gpio-cells = <2>;
305                                 interrupt-controller;
306                                 #interrupt-cells = <2>;
307                                 reg = <0x3000 0x400>;
308                                 clocks = <&clk_pclk4>;
309                                 st,bank-name = "GPIOD";
310                                 ngpios = <16>;
311                                 gpio-ranges = <&pinctrl 0 48 16>;
312                         };
313
314                         gpioe: gpio@50006000 {
315                                 gpio-controller;
316                                 #gpio-cells = <2>;
317                                 interrupt-controller;
318                                 #interrupt-cells = <2>;
319                                 reg = <0x4000 0x400>;
320                                 clocks = <&clk_pclk4>;
321                                 st,bank-name = "GPIOE";
322                                 ngpios = <16>;
323                                 gpio-ranges = <&pinctrl 0 64 16>;
324                         };
325
326                         gpiof: gpio@50007000 {
327                                 gpio-controller;
328                                 #gpio-cells = <2>;
329                                 interrupt-controller;
330                                 #interrupt-cells = <2>;
331                                 reg = <0x5000 0x400>;
332                                 clocks = <&clk_pclk4>;
333                                 st,bank-name = "GPIOF";
334                                 ngpios = <16>;
335                                 gpio-ranges = <&pinctrl 0 80 16>;
336                         };
337
338                         gpiog: gpio@50008000 {
339                                 gpio-controller;
340                                 #gpio-cells = <2>;
341                                 interrupt-controller;
342                                 #interrupt-cells = <2>;
343                                 reg = <0x6000 0x400>;
344                                 clocks = <&clk_pclk4>;
345                                 st,bank-name = "GPIOG";
346                                 ngpios = <16>;
347                                 gpio-ranges = <&pinctrl 0 96 16>;
348                         };
349
350                         gpioh: gpio@50009000 {
351                                 gpio-controller;
352                                 #gpio-cells = <2>;
353                                 interrupt-controller;
354                                 #interrupt-cells = <2>;
355                                 reg = <0x7000 0x400>;
356                                 clocks = <&clk_pclk4>;
357                                 st,bank-name = "GPIOH";
358                                 ngpios = <15>;
359                                 gpio-ranges = <&pinctrl 0 112 15>;
360                         };
361
362                         gpioi: gpio@5000a000 {
363                                 gpio-controller;
364                                 #gpio-cells = <2>;
365                                 interrupt-controller;
366                                 #interrupt-cells = <2>;
367                                 reg = <0x8000 0x400>;
368                                 clocks = <&clk_pclk4>;
369                                 st,bank-name = "GPIOI";
370                                 ngpios = <8>;
371                                 gpio-ranges = <&pinctrl 0 128 8>;
372                         };
373                 };
374         };
375 };