blob: b02a31edd0b2481d568b904d8cdc874021775b43 [file] [log] [blame]
Maxime Coquelin338a6aa2015-06-03 16:54:02 +02001/*
2 * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
3 *
4 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual
6 * licensing only applies to this file, and not this project as a
7 * whole.
8 *
9 * a) This file is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of the
12 * License, or (at your option) any later version.
13 *
14 * This file is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public
20 * License along with this file; if not, write to the Free
21 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
22 * MA 02110-1301 USA
23 *
24 * Or, alternatively,
25 *
26 * b) Permission is hereby granted, free of charge, to any person
27 * obtaining a copy of this software and associated documentation
28 * files (the "Software"), to deal in the Software without
29 * restriction, including without limitation the rights to use,
30 * copy, modify, merge, publish, distribute, sublicense, and/or
31 * sell copies of the Software, and to permit persons to whom the
32 * Software is furnished to do so, subject to the following
33 * conditions:
34 *
35 * The above copyright notice and this permission notice shall be
36 * included in all copies or substantial portions of the Software.
37 *
38 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
39 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
40 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
41 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
42 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
44 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
45 * OTHER DEALINGS IN THE SOFTWARE.
46 */
47
Joachim Eastwood05b23eb2016-08-29 23:33:56 +020048#include "skeleton.dtsi"
Maxime Coquelin338a6aa2015-06-03 16:54:02 +020049#include "armv7-m.dtsi"
Maxime Coquelin2dbd0592015-10-14 18:12:10 +020050#include <dt-bindings/pinctrl/stm32f429-pinfunc.h>
Maxime Coquelin338a6aa2015-06-03 16:54:02 +020051
52/ {
53 clocks {
Daniel Thompson9dc24a22015-06-10 22:09:00 +020054 clk_hse: clk-hse {
Maxime Coquelin338a6aa2015-06-03 16:54:02 +020055 #clock-cells = <0>;
56 compatible = "fixed-clock";
Daniel Thompson9dc24a22015-06-10 22:09:00 +020057 clock-frequency = <0>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +020058 };
59 };
60
61 soc {
62 timer2: timer@40000000 {
63 compatible = "st,stm32-timer";
64 reg = <0x40000000 0x400>;
65 interrupts = <28>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +020066 clocks = <&rcc 0 128>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +020067 status = "disabled";
68 };
69
70 timer3: timer@40000400 {
71 compatible = "st,stm32-timer";
72 reg = <0x40000400 0x400>;
73 interrupts = <29>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +020074 clocks = <&rcc 0 129>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +020075 status = "disabled";
76 };
77
78 timer4: timer@40000800 {
79 compatible = "st,stm32-timer";
80 reg = <0x40000800 0x400>;
81 interrupts = <30>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +020082 clocks = <&rcc 0 130>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +020083 status = "disabled";
84 };
85
86 timer5: timer@40000c00 {
87 compatible = "st,stm32-timer";
88 reg = <0x40000c00 0x400>;
89 interrupts = <50>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +020090 clocks = <&rcc 0 131>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +020091 };
92
93 timer6: timer@40001000 {
94 compatible = "st,stm32-timer";
95 reg = <0x40001000 0x400>;
96 interrupts = <54>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +020097 clocks = <&rcc 0 132>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +020098 status = "disabled";
99 };
100
101 timer7: timer@40001400 {
102 compatible = "st,stm32-timer";
103 reg = <0x40001400 0x400>;
104 interrupts = <55>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200105 clocks = <&rcc 0 133>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200106 status = "disabled";
107 };
108
109 usart2: serial@40004400 {
110 compatible = "st,stm32-usart", "st,stm32-uart";
111 reg = <0x40004400 0x400>;
112 interrupts = <38>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200113 clocks = <&rcc 0 145>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200114 status = "disabled";
115 };
116
117 usart3: serial@40004800 {
118 compatible = "st,stm32-usart", "st,stm32-uart";
119 reg = <0x40004800 0x400>;
120 interrupts = <39>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200121 clocks = <&rcc 0 146>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200122 status = "disabled";
Alexandre TORGUEf1134382016-10-24 15:22:43 +0200123 dmas = <&dma1 1 4 0x400 0x0>,
124 <&dma1 3 4 0x400 0x0>;
125 dma-names = "rx", "tx";
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200126 };
127
128 usart4: serial@40004c00 {
129 compatible = "st,stm32-uart";
130 reg = <0x40004c00 0x400>;
131 interrupts = <52>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200132 clocks = <&rcc 0 147>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200133 status = "disabled";
134 };
135
136 usart5: serial@40005000 {
137 compatible = "st,stm32-uart";
138 reg = <0x40005000 0x400>;
139 interrupts = <53>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200140 clocks = <&rcc 0 148>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200141 status = "disabled";
142 };
143
144 usart7: serial@40007800 {
145 compatible = "st,stm32-usart", "st,stm32-uart";
146 reg = <0x40007800 0x400>;
147 interrupts = <82>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200148 clocks = <&rcc 0 158>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200149 status = "disabled";
150 };
151
152 usart8: serial@40007c00 {
153 compatible = "st,stm32-usart", "st,stm32-uart";
154 reg = <0x40007c00 0x400>;
155 interrupts = <83>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200156 clocks = <&rcc 0 159>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200157 status = "disabled";
158 };
159
160 usart1: serial@40011000 {
161 compatible = "st,stm32-usart", "st,stm32-uart";
162 reg = <0x40011000 0x400>;
163 interrupts = <37>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200164 clocks = <&rcc 0 164>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200165 status = "disabled";
Gerald Baeza73767f12016-11-03 15:08:43 +0100166 dmas = <&dma2 2 4 0x400 0x0>,
167 <&dma2 7 4 0x400 0x0>;
168 dma-names = "rx", "tx";
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200169 };
170
171 usart6: serial@40011400 {
172 compatible = "st,stm32-usart", "st,stm32-uart";
173 reg = <0x40011400 0x400>;
174 interrupts = <71>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200175 clocks = <&rcc 0 165>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200176 status = "disabled";
177 };
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200178
Alexandre TORGUEe78b6552016-02-29 17:29:00 +0100179 syscfg: system-config@40013800 {
180 compatible = "syscon";
181 reg = <0x40013800 0x400>;
182 };
183
Alexandre TORGUE5a79d592016-09-20 18:00:59 +0200184 exti: interrupt-controller@40013c00 {
185 compatible = "st,stm32-exti";
186 interrupt-controller;
187 #interrupt-cells = <2>;
188 reg = <0x40013C00 0x400>;
189 interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>;
190 };
191
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200192 pin-controller {
193 #address-cells = <1>;
194 #size-cells = <1>;
195 compatible = "st,stm32f429-pinctrl";
196 ranges = <0 0x40020000 0x3000>;
Maxime Coquelined011542016-11-04 15:06:55 +0100197 interrupt-parent = <&exti>;
198 st,syscfg = <&syscfg 0x8>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200199 pins-are-numbered;
200
201 gpioa: gpio@40020000 {
202 gpio-controller;
203 #gpio-cells = <2>;
204 reg = <0x0 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100205 clocks = <&rcc 0 0>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200206 st,bank-name = "GPIOA";
207 };
208
209 gpiob: gpio@40020400 {
210 gpio-controller;
211 #gpio-cells = <2>;
212 reg = <0x400 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100213 clocks = <&rcc 0 1>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200214 st,bank-name = "GPIOB";
215 };
216
217 gpioc: gpio@40020800 {
218 gpio-controller;
219 #gpio-cells = <2>;
220 reg = <0x800 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100221 clocks = <&rcc 0 2>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200222 st,bank-name = "GPIOC";
223 };
224
225 gpiod: gpio@40020c00 {
226 gpio-controller;
227 #gpio-cells = <2>;
228 reg = <0xc00 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100229 clocks = <&rcc 0 3>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200230 st,bank-name = "GPIOD";
231 };
232
233 gpioe: gpio@40021000 {
234 gpio-controller;
235 #gpio-cells = <2>;
236 reg = <0x1000 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100237 clocks = <&rcc 0 4>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200238 st,bank-name = "GPIOE";
239 };
240
241 gpiof: gpio@40021400 {
242 gpio-controller;
243 #gpio-cells = <2>;
244 reg = <0x1400 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100245 clocks = <&rcc 0 5>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200246 st,bank-name = "GPIOF";
247 };
248
249 gpiog: gpio@40021800 {
250 gpio-controller;
251 #gpio-cells = <2>;
252 reg = <0x1800 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100253 clocks = <&rcc 0 6>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200254 st,bank-name = "GPIOG";
255 };
256
257 gpioh: gpio@40021c00 {
258 gpio-controller;
259 #gpio-cells = <2>;
260 reg = <0x1c00 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100261 clocks = <&rcc 0 7>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200262 st,bank-name = "GPIOH";
263 };
264
265 gpioi: gpio@40022000 {
266 gpio-controller;
267 #gpio-cells = <2>;
268 reg = <0x2000 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100269 clocks = <&rcc 0 8>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200270 st,bank-name = "GPIOI";
271 };
272
273 gpioj: gpio@40022400 {
274 gpio-controller;
275 #gpio-cells = <2>;
276 reg = <0x2400 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100277 clocks = <&rcc 0 9>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200278 st,bank-name = "GPIOJ";
279 };
280
281 gpiok: gpio@40022800 {
282 gpio-controller;
283 #gpio-cells = <2>;
284 reg = <0x2800 0x400>;
Maxime Coquelina985b662016-02-23 13:35:25 +0100285 clocks = <&rcc 0 10>;
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200286 st,bank-name = "GPIOK";
287 };
Maxime Coquelin521df6f2015-10-14 18:15:04 +0200288
289 usart1_pins_a: usart1@0 {
290 pins1 {
291 pinmux = <STM32F429_PA9_FUNC_USART1_TX>;
292 bias-disable;
293 drive-push-pull;
294 slew-rate = <0>;
295 };
296 pins2 {
297 pinmux = <STM32F429_PA10_FUNC_USART1_RX>;
298 bias-disable;
299 };
300 };
Maxime Coquelinc8cc1b72016-02-23 17:11:42 +0100301
302 usbotg_hs_pins_a: usbotg_hs@0 {
303 pins {
304 pinmux = <STM32F429_PH4_FUNC_OTG_HS_ULPI_NXT>,
305 <STM32F429_PI11_FUNC_OTG_HS_ULPI_DIR>,
306 <STM32F429_PC0_FUNC_OTG_HS_ULPI_STP>,
307 <STM32F429_PA5_FUNC_OTG_HS_ULPI_CK>,
308 <STM32F429_PA3_FUNC_OTG_HS_ULPI_D0>,
309 <STM32F429_PB0_FUNC_OTG_HS_ULPI_D1>,
310 <STM32F429_PB1_FUNC_OTG_HS_ULPI_D2>,
311 <STM32F429_PB10_FUNC_OTG_HS_ULPI_D3>,
312 <STM32F429_PB11_FUNC_OTG_HS_ULPI_D4>,
313 <STM32F429_PB12_FUNC_OTG_HS_ULPI_D5>,
314 <STM32F429_PB13_FUNC_OTG_HS_ULPI_D6>,
315 <STM32F429_PB5_FUNC_OTG_HS_ULPI_D7>;
316 bias-disable;
317 drive-push-pull;
318 slew-rate = <2>;
319 };
320 };
Alexandre TORGUE9ee33d62016-02-29 17:29:00 +0100321
Alexandre TORGUEd9b296b2016-10-24 09:57:08 +0200322 ethernet_mii: mii@0 {
Alexandre TORGUE9ee33d62016-02-29 17:29:00 +0100323 pins {
324 pinmux = <STM32F429_PG13_FUNC_ETH_MII_TXD0_ETH_RMII_TXD0>,
325 <STM32F429_PG14_FUNC_ETH_MII_TXD1_ETH_RMII_TXD1>,
326 <STM32F429_PC2_FUNC_ETH_MII_TXD2>,
327 <STM32F429_PB8_FUNC_ETH_MII_TXD3>,
328 <STM32F429_PC3_FUNC_ETH_MII_TX_CLK>,
329 <STM32F429_PG11_FUNC_ETH_MII_TX_EN_ETH_RMII_TX_EN>,
330 <STM32F429_PA2_FUNC_ETH_MDIO>,
331 <STM32F429_PC1_FUNC_ETH_MDC>,
332 <STM32F429_PA1_FUNC_ETH_MII_RX_CLK_ETH_RMII_REF_CLK>,
333 <STM32F429_PA7_FUNC_ETH_MII_RX_DV_ETH_RMII_CRS_DV>,
334 <STM32F429_PC4_FUNC_ETH_MII_RXD0_ETH_RMII_RXD0>,
335 <STM32F429_PC5_FUNC_ETH_MII_RXD1_ETH_RMII_RXD1>,
336 <STM32F429_PH6_FUNC_ETH_MII_RXD2>,
337 <STM32F429_PH7_FUNC_ETH_MII_RXD3>;
338 slew-rate = <2>;
339 };
340 };
Maxime Coquelin2dbd0592015-10-14 18:12:10 +0200341 };
342
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200343 rcc: rcc@40023810 {
Gabriel Fernandez9af80712016-07-22 11:37:50 +0200344 #reset-cells = <1>;
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200345 #clock-cells = <2>;
346 compatible = "st,stm32f42xx-rcc", "st,stm32-rcc";
347 reg = <0x40023800 0x400>;
348 clocks = <&clk_hse>;
349 };
Daniel Thompsonb47c9fa2015-10-12 09:21:30 +0100350
M'boumba Cedric Madianga9ee9e282015-10-16 15:59:00 +0200351 dma1: dma-controller@40026000 {
352 compatible = "st,stm32-dma";
353 reg = <0x40026000 0x400>;
354 interrupts = <11>,
355 <12>,
356 <13>,
357 <14>,
358 <15>,
359 <16>,
360 <17>,
361 <47>;
362 clocks = <&rcc 0 21>;
363 #dma-cells = <4>;
364 };
365
366 dma2: dma-controller@40026400 {
367 compatible = "st,stm32-dma";
368 reg = <0x40026400 0x400>;
369 interrupts = <56>,
370 <57>,
371 <58>,
372 <59>,
373 <60>,
374 <68>,
375 <69>,
376 <70>;
377 clocks = <&rcc 0 22>;
378 #dma-cells = <4>;
379 st,mem2mem;
380 };
381
Alexandre TORGUEd9b296b2016-10-24 09:57:08 +0200382 mac: ethernet@40028000 {
Alexandre TORGUE9ee33d62016-02-29 17:29:00 +0100383 compatible = "st,stm32-dwmac", "snps,dwmac-3.50a";
384 reg = <0x40028000 0x8000>;
385 reg-names = "stmmaceth";
Alexandre TORGUEed75bf32016-10-20 16:58:26 +0200386 interrupts = <61>;
387 interrupt-names = "macirq";
Alexandre TORGUEd9b296b2016-10-24 09:57:08 +0200388 clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
Alexandre TORGUE9ee33d62016-02-29 17:29:00 +0100389 clocks = <&rcc 0 25>, <&rcc 0 26>, <&rcc 0 27>;
390 st,syscon = <&syscfg 0x4>;
391 snps,pbl = <8>;
392 snps,mixed-burst;
Alexandre TORGUE9ee33d62016-02-29 17:29:00 +0100393 status = "disabled";
394 };
395
Maxime Coquelinc8cc1b72016-02-23 17:11:42 +0100396 usbotg_hs: usb@40040000 {
397 compatible = "snps,dwc2";
Maxime Coquelinc8cc1b72016-02-23 17:11:42 +0100398 reg = <0x40040000 0x40000>;
399 interrupts = <77>;
400 clocks = <&rcc 0 29>;
401 clock-names = "otg";
402 status = "disabled";
403 };
404
Daniel Thompsonb47c9fa2015-10-12 09:21:30 +0100405 rng: rng@50060800 {
406 compatible = "st,stm32-rng";
407 reg = <0x50060800 0x400>;
408 interrupts = <80>;
409 clocks = <&rcc 0 38>;
410 };
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200411 };
412};
413
414&systick {
Daniel Thompson9dc24a22015-06-10 22:09:00 +0200415 clocks = <&rcc 1 0>;
Maxime Coquelin338a6aa2015-06-03 16:54:02 +0200416 status = "okay";
417};