2 * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
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
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.
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.
21 * b) Permission is hereby granted, free of charge, to any person
22 * obtaining a copy of this software and associated documentation
23 * files (the "Software"), to deal in the Software without
24 * restriction, including without limitation the rights to use,
25 * copy, modify, merge, publish, distribute, sublicense, and/or
26 * sell copies of the Software, and to permit persons to whom the
27 * Software is furnished to do so, subject to the following
30 * The above copyright notice and this permission notice shall be
31 * included in all copies or substantial portions of the Software.
33 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40 * OTHER DEALINGS IN THE SOFTWARE.
43 #include "skeleton.dtsi"
44 #include "armv7-m.dtsi"
45 #include <dt-bindings/clock/stm32fx-clock.h>
46 #include <dt-bindings/mfd/stm32f7-rcc.h>
52 compatible = "fixed-clock";
53 clock-frequency = <0>;
58 compatible = "fixed-clock";
59 clock-frequency = <32768>;
64 compatible = "fixed-clock";
65 clock-frequency = <32000>;
68 clk_i2s_ckin: clk-i2s-ckin {
70 compatible = "fixed-clock";
71 clock-frequency = <48000000>;
76 timer2: timer@40000000 {
77 compatible = "st,stm32-timer";
78 reg = <0x40000000 0x400>;
80 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM2)>;
84 timers2: timers@40000000 {
87 compatible = "st,stm32-timers";
88 reg = <0x40000000 0x400>;
89 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM2)>;
94 compatible = "st,stm32-pwm";
99 compatible = "st,stm32-timer-trigger";
105 timer3: timer@40000400 {
106 compatible = "st,stm32-timer";
107 reg = <0x40000400 0x400>;
109 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM3)>;
113 timers3: timers@40000400 {
114 #address-cells = <1>;
116 compatible = "st,stm32-timers";
117 reg = <0x40000400 0x400>;
118 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM3)>;
123 compatible = "st,stm32-pwm";
128 compatible = "st,stm32-timer-trigger";
134 timer4: timer@40000800 {
135 compatible = "st,stm32-timer";
136 reg = <0x40000800 0x400>;
138 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM4)>;
142 timers4: timers@40000800 {
143 #address-cells = <1>;
145 compatible = "st,stm32-timers";
146 reg = <0x40000800 0x400>;
147 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM4)>;
152 compatible = "st,stm32-pwm";
157 compatible = "st,stm32-timer-trigger";
163 timer5: timer@40000c00 {
164 compatible = "st,stm32-timer";
165 reg = <0x40000c00 0x400>;
167 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>;
170 timers5: timers@40000c00 {
171 #address-cells = <1>;
173 compatible = "st,stm32-timers";
174 reg = <0x40000C00 0x400>;
175 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>;
180 compatible = "st,stm32-pwm";
185 compatible = "st,stm32-timer-trigger";
191 timer6: timer@40001000 {
192 compatible = "st,stm32-timer";
193 reg = <0x40001000 0x400>;
195 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM6)>;
199 timers6: timers@40001000 {
200 #address-cells = <1>;
202 compatible = "st,stm32-timers";
203 reg = <0x40001000 0x400>;
204 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM6)>;
209 compatible = "st,stm32-timer-trigger";
215 timer7: timer@40001400 {
216 compatible = "st,stm32-timer";
217 reg = <0x40001400 0x400>;
219 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM7)>;
223 timers7: timers@40001400 {
224 #address-cells = <1>;
226 compatible = "st,stm32-timers";
227 reg = <0x40001400 0x400>;
228 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM7)>;
233 compatible = "st,stm32-timer-trigger";
239 timers12: timers@40001800 {
240 #address-cells = <1>;
242 compatible = "st,stm32-timers";
243 reg = <0x40001800 0x400>;
244 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM12)>;
249 compatible = "st,stm32-pwm";
254 compatible = "st,stm32-timer-trigger";
260 timers13: timers@40001c00 {
261 compatible = "st,stm32-timers";
262 reg = <0x40001C00 0x400>;
263 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
268 compatible = "st,stm32-pwm";
273 timers14: timers@40002000 {
274 compatible = "st,stm32-timers";
275 reg = <0x40002000 0x400>;
276 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
281 compatible = "st,stm32-pwm";
287 compatible = "st,stm32-rtc";
288 reg = <0x40002800 0x400>;
289 clocks = <&rcc 1 CLK_RTC>;
290 clock-names = "ck_rtc";
291 assigned-clocks = <&rcc 1 CLK_RTC>;
292 assigned-clock-parents = <&rcc 1 CLK_LSE>;
293 interrupt-parent = <&exti>;
295 interrupt-names = "alarm";
296 st,syscfg = <&pwrcfg 0x00 0x100>;
300 usart2: serial@40004400 {
301 compatible = "st,stm32f7-uart";
302 reg = <0x40004400 0x400>;
304 clocks = <&rcc 1 CLK_USART2>;
308 usart3: serial@40004800 {
309 compatible = "st,stm32f7-uart";
310 reg = <0x40004800 0x400>;
312 clocks = <&rcc 1 CLK_USART3>;
316 usart4: serial@40004c00 {
317 compatible = "st,stm32f7-uart";
318 reg = <0x40004c00 0x400>;
320 clocks = <&rcc 1 CLK_UART4>;
324 usart5: serial@40005000 {
325 compatible = "st,stm32f7-uart";
326 reg = <0x40005000 0x400>;
328 clocks = <&rcc 1 CLK_UART5>;
333 compatible = "st,stm32f7-i2c";
334 reg = <0x40005400 0x400>;
337 resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
338 clocks = <&rcc 1 CLK_I2C1>;
339 #address-cells = <1>;
345 compatible = "st,stm32f7-i2c";
346 reg = <0x40005800 0x400>;
349 resets = <&rcc STM32F7_APB1_RESET(I2C2)>;
350 clocks = <&rcc 1 CLK_I2C2>;
351 #address-cells = <1>;
357 compatible = "st,stm32f7-i2c";
358 reg = <0x40005c00 0x400>;
361 resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
362 clocks = <&rcc 1 CLK_I2C3>;
363 #address-cells = <1>;
369 compatible = "st,stm32f7-i2c";
370 reg = <0x40006000 0x400>;
373 resets = <&rcc STM32F7_APB1_RESET(I2C4)>;
374 clocks = <&rcc 1 CLK_I2C4>;
375 #address-cells = <1>;
381 compatible = "st,stm32-cec";
382 reg = <0x40006C00 0x400>;
384 clocks = <&rcc 0 STM32F7_APB1_CLOCK(CEC)>, <&rcc 1 CLK_HDMI_CEC>;
385 clock-names = "cec", "hdmi-cec";
389 usart7: serial@40007800 {
390 compatible = "st,stm32f7-uart";
391 reg = <0x40007800 0x400>;
393 clocks = <&rcc 1 CLK_UART7>;
397 usart8: serial@40007c00 {
398 compatible = "st,stm32f7-uart";
399 reg = <0x40007c00 0x400>;
401 clocks = <&rcc 1 CLK_UART8>;
405 timers1: timers@40010000 {
406 #address-cells = <1>;
408 compatible = "st,stm32-timers";
409 reg = <0x40010000 0x400>;
410 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM1)>;
415 compatible = "st,stm32-pwm";
420 compatible = "st,stm32-timer-trigger";
426 timers8: timers@40010400 {
427 #address-cells = <1>;
429 compatible = "st,stm32-timers";
430 reg = <0x40010400 0x400>;
431 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM8)>;
436 compatible = "st,stm32-pwm";
441 compatible = "st,stm32-timer-trigger";
447 usart1: serial@40011000 {
448 compatible = "st,stm32f7-uart";
449 reg = <0x40011000 0x400>;
451 clocks = <&rcc 1 CLK_USART1>;
455 usart6: serial@40011400 {
456 compatible = "st,stm32f7-uart";
457 reg = <0x40011400 0x400>;
459 clocks = <&rcc 1 CLK_USART6>;
463 sdio2: sdio2@40011c00 {
464 compatible = "arm,pl180", "arm,primecell";
465 arm,primecell-periphid = <0x00880180>;
466 reg = <0x40011c00 0x400>;
467 clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC2)>;
468 clock-names = "apb_pclk";
470 max-frequency = <48000000>;
474 sdio1: sdio1@40012c00 {
475 compatible = "arm,pl180", "arm,primecell";
476 arm,primecell-periphid = <0x00880180>;
477 reg = <0x40012c00 0x400>;
478 clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC1)>;
479 clock-names = "apb_pclk";
481 max-frequency = <48000000>;
485 syscfg: system-config@40013800 {
486 compatible = "syscon";
487 reg = <0x40013800 0x400>;
490 exti: interrupt-controller@40013c00 {
491 compatible = "st,stm32-exti";
492 interrupt-controller;
493 #interrupt-cells = <2>;
494 reg = <0x40013C00 0x400>;
495 interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>;
498 timers9: timers@40014000 {
499 #address-cells = <1>;
501 compatible = "st,stm32-timers";
502 reg = <0x40014000 0x400>;
503 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM9)>;
508 compatible = "st,stm32-pwm";
513 compatible = "st,stm32-timer-trigger";
519 timers10: timers@40014400 {
520 compatible = "st,stm32-timers";
521 reg = <0x40014400 0x400>;
522 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
527 compatible = "st,stm32-pwm";
532 timers11: timers@40014800 {
533 compatible = "st,stm32-timers";
534 reg = <0x40014800 0x400>;
535 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
540 compatible = "st,stm32-pwm";
545 pwrcfg: power-config@40007000 {
546 compatible = "syscon";
547 reg = <0x40007000 0x400>;
551 compatible = "st,stm32f7-crc";
552 reg = <0x40023000 0x400>;
553 clocks = <&rcc 0 12>;
560 compatible = "st,stm32f746-rcc", "st,stm32-rcc";
561 reg = <0x40023800 0x400>;
562 clocks = <&clk_hse>, <&clk_i2s_ckin>;
563 st,syscfg = <&pwrcfg>;
564 assigned-clocks = <&rcc 1 CLK_HSE_RTC>;
565 assigned-clock-rates = <1000000>;
569 compatible = "st,stm32-dma";
570 reg = <0x40026000 0x400>;
579 clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA1)>;
585 compatible = "st,stm32-dma";
586 reg = <0x40026400 0x400>;
595 clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA2)>;
601 usbotg_hs: usb@40040000 {
602 compatible = "st,stm32f7-hsotg";
603 reg = <0x40040000 0x40000>;
605 clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHS)>;
607 g-rx-fifo-size = <256>;
608 g-np-tx-fifo-size = <32>;
609 g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
613 usbotg_fs: usb@50000000 {
614 compatible = "st,stm32f4x9-fsotg";
615 reg = <0x50000000 0x40000>;
617 clocks = <&rcc 0 STM32F7_AHB2_CLOCK(OTGFS)>;