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 "armv7-m.dtsi"
44 #include <dt-bindings/clock/stm32fx-clock.h>
45 #include <dt-bindings/mfd/stm32f7-rcc.h>
54 compatible = "fixed-clock";
55 clock-frequency = <0>;
60 compatible = "fixed-clock";
61 clock-frequency = <32768>;
66 compatible = "fixed-clock";
67 clock-frequency = <32000>;
70 clk_i2s_ckin: clk-i2s-ckin {
72 compatible = "fixed-clock";
73 clock-frequency = <48000000>;
78 timer2: timer@40000000 {
79 compatible = "st,stm32-timer";
80 reg = <0x40000000 0x400>;
82 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM2)>;
86 timers2: timers@40000000 {
89 compatible = "st,stm32-timers";
90 reg = <0x40000000 0x400>;
91 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM2)>;
96 compatible = "st,stm32-pwm";
101 compatible = "st,stm32-timer-trigger";
107 timer3: timer@40000400 {
108 compatible = "st,stm32-timer";
109 reg = <0x40000400 0x400>;
111 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM3)>;
115 timers3: timers@40000400 {
116 #address-cells = <1>;
118 compatible = "st,stm32-timers";
119 reg = <0x40000400 0x400>;
120 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM3)>;
125 compatible = "st,stm32-pwm";
130 compatible = "st,stm32-timer-trigger";
136 timer4: timer@40000800 {
137 compatible = "st,stm32-timer";
138 reg = <0x40000800 0x400>;
140 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM4)>;
144 timers4: timers@40000800 {
145 #address-cells = <1>;
147 compatible = "st,stm32-timers";
148 reg = <0x40000800 0x400>;
149 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM4)>;
154 compatible = "st,stm32-pwm";
159 compatible = "st,stm32-timer-trigger";
165 timer5: timer@40000c00 {
166 compatible = "st,stm32-timer";
167 reg = <0x40000c00 0x400>;
169 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>;
172 timers5: timers@40000c00 {
173 #address-cells = <1>;
175 compatible = "st,stm32-timers";
176 reg = <0x40000C00 0x400>;
177 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>;
182 compatible = "st,stm32-pwm";
187 compatible = "st,stm32-timer-trigger";
193 timer6: timer@40001000 {
194 compatible = "st,stm32-timer";
195 reg = <0x40001000 0x400>;
197 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM6)>;
201 timers6: timers@40001000 {
202 #address-cells = <1>;
204 compatible = "st,stm32-timers";
205 reg = <0x40001000 0x400>;
206 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM6)>;
211 compatible = "st,stm32-timer-trigger";
217 timer7: timer@40001400 {
218 compatible = "st,stm32-timer";
219 reg = <0x40001400 0x400>;
221 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM7)>;
225 timers7: timers@40001400 {
226 #address-cells = <1>;
228 compatible = "st,stm32-timers";
229 reg = <0x40001400 0x400>;
230 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM7)>;
235 compatible = "st,stm32-timer-trigger";
241 timers12: timers@40001800 {
242 #address-cells = <1>;
244 compatible = "st,stm32-timers";
245 reg = <0x40001800 0x400>;
246 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM12)>;
251 compatible = "st,stm32-pwm";
256 compatible = "st,stm32-timer-trigger";
262 timers13: timers@40001c00 {
263 #address-cells = <1>;
265 compatible = "st,stm32-timers";
266 reg = <0x40001C00 0x400>;
267 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
272 compatible = "st,stm32-pwm";
277 timers14: timers@40002000 {
278 #address-cells = <1>;
280 compatible = "st,stm32-timers";
281 reg = <0x40002000 0x400>;
282 clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
287 compatible = "st,stm32-pwm";
293 compatible = "st,stm32-rtc";
294 reg = <0x40002800 0x400>;
295 clocks = <&rcc 1 CLK_RTC>;
296 clock-names = "ck_rtc";
297 assigned-clocks = <&rcc 1 CLK_RTC>;
298 assigned-clock-parents = <&rcc 1 CLK_LSE>;
299 interrupt-parent = <&exti>;
301 interrupt-names = "alarm";
302 st,syscfg = <&pwrcfg 0x00 0x100>;
306 usart2: serial@40004400 {
307 compatible = "st,stm32f7-uart";
308 reg = <0x40004400 0x400>;
310 clocks = <&rcc 1 CLK_USART2>;
314 usart3: serial@40004800 {
315 compatible = "st,stm32f7-uart";
316 reg = <0x40004800 0x400>;
318 clocks = <&rcc 1 CLK_USART3>;
322 usart4: serial@40004c00 {
323 compatible = "st,stm32f7-uart";
324 reg = <0x40004c00 0x400>;
326 clocks = <&rcc 1 CLK_UART4>;
330 usart5: serial@40005000 {
331 compatible = "st,stm32f7-uart";
332 reg = <0x40005000 0x400>;
334 clocks = <&rcc 1 CLK_UART5>;
339 compatible = "st,stm32f7-i2c";
340 reg = <0x40005400 0x400>;
343 resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
344 clocks = <&rcc 1 CLK_I2C1>;
345 #address-cells = <1>;
351 compatible = "st,stm32f7-i2c";
352 reg = <0x40005800 0x400>;
355 resets = <&rcc STM32F7_APB1_RESET(I2C2)>;
356 clocks = <&rcc 1 CLK_I2C2>;
357 #address-cells = <1>;
363 compatible = "st,stm32f7-i2c";
364 reg = <0x40005C00 0x400>;
367 resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
368 clocks = <&rcc 1 CLK_I2C3>;
369 #address-cells = <1>;
375 compatible = "st,stm32f7-i2c";
376 reg = <0x40006000 0x400>;
379 resets = <&rcc STM32F7_APB1_RESET(I2C4)>;
380 clocks = <&rcc 1 CLK_I2C4>;
381 #address-cells = <1>;
387 compatible = "st,stm32-cec";
388 reg = <0x40006C00 0x400>;
390 clocks = <&rcc 0 STM32F7_APB1_CLOCK(CEC)>, <&rcc 1 CLK_HDMI_CEC>;
391 clock-names = "cec", "hdmi-cec";
395 usart7: serial@40007800 {
396 compatible = "st,stm32f7-uart";
397 reg = <0x40007800 0x400>;
399 clocks = <&rcc 1 CLK_UART7>;
403 usart8: serial@40007c00 {
404 compatible = "st,stm32f7-uart";
405 reg = <0x40007c00 0x400>;
407 clocks = <&rcc 1 CLK_UART8>;
411 timers1: timers@40010000 {
412 #address-cells = <1>;
414 compatible = "st,stm32-timers";
415 reg = <0x40010000 0x400>;
416 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM1)>;
421 compatible = "st,stm32-pwm";
426 compatible = "st,stm32-timer-trigger";
432 timers8: timers@40010400 {
433 #address-cells = <1>;
435 compatible = "st,stm32-timers";
436 reg = <0x40010400 0x400>;
437 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM8)>;
442 compatible = "st,stm32-pwm";
447 compatible = "st,stm32-timer-trigger";
453 usart1: serial@40011000 {
454 compatible = "st,stm32f7-uart";
455 reg = <0x40011000 0x400>;
457 clocks = <&rcc 1 CLK_USART1>;
461 usart6: serial@40011400 {
462 compatible = "st,stm32f7-uart";
463 reg = <0x40011400 0x400>;
465 clocks = <&rcc 1 CLK_USART6>;
469 sdio2: sdio2@40011c00 {
470 compatible = "arm,pl180", "arm,primecell";
471 arm,primecell-periphid = <0x00880180>;
472 reg = <0x40011c00 0x400>;
473 clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC2)>;
474 clock-names = "apb_pclk";
476 max-frequency = <48000000>;
480 sdio1: sdio1@40012c00 {
481 compatible = "arm,pl180", "arm,primecell";
482 arm,primecell-periphid = <0x00880180>;
483 reg = <0x40012c00 0x400>;
484 clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC1)>;
485 clock-names = "apb_pclk";
487 max-frequency = <48000000>;
491 syscfg: system-config@40013800 {
492 compatible = "syscon";
493 reg = <0x40013800 0x400>;
496 exti: interrupt-controller@40013c00 {
497 compatible = "st,stm32-exti";
498 interrupt-controller;
499 #interrupt-cells = <2>;
500 reg = <0x40013C00 0x400>;
501 interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>;
504 timers9: timers@40014000 {
505 #address-cells = <1>;
507 compatible = "st,stm32-timers";
508 reg = <0x40014000 0x400>;
509 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM9)>;
514 compatible = "st,stm32-pwm";
519 compatible = "st,stm32-timer-trigger";
525 timers10: timers@40014400 {
526 #address-cells = <1>;
528 compatible = "st,stm32-timers";
529 reg = <0x40014400 0x400>;
530 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
535 compatible = "st,stm32-pwm";
540 timers11: timers@40014800 {
541 #address-cells = <1>;
543 compatible = "st,stm32-timers";
544 reg = <0x40014800 0x400>;
545 clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
550 compatible = "st,stm32-pwm";
555 pwrcfg: power-config@40007000 {
556 compatible = "syscon";
557 reg = <0x40007000 0x400>;
561 compatible = "st,stm32f7-crc";
562 reg = <0x40023000 0x400>;
563 clocks = <&rcc 0 12>;
570 compatible = "st,stm32f746-rcc", "st,stm32-rcc";
571 reg = <0x40023800 0x400>;
572 clocks = <&clk_hse>, <&clk_i2s_ckin>;
573 st,syscfg = <&pwrcfg>;
574 assigned-clocks = <&rcc 1 CLK_HSE_RTC>;
575 assigned-clock-rates = <1000000>;
579 compatible = "st,stm32-dma";
580 reg = <0x40026000 0x400>;
589 clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA1)>;
595 compatible = "st,stm32-dma";
596 reg = <0x40026400 0x400>;
605 clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA2)>;
611 usbotg_hs: usb@40040000 {
612 compatible = "st,stm32f7-hsotg";
613 reg = <0x40040000 0x40000>;
615 clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHS)>;
617 g-rx-fifo-size = <256>;
618 g-np-tx-fifo-size = <32>;
619 g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
623 usbotg_fs: usb@50000000 {
624 compatible = "st,stm32f4x9-fsotg";
625 reg = <0x50000000 0x40000>;
627 clocks = <&rcc 0 STM32F7_AHB2_CLOCK(OTGFS)>;