11.1Sjmcneill/* 21.1Sjmcneill * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com> 31.1Sjmcneill * 41.1Sjmcneill * This file is dual-licensed: you can use it either under the terms 51.1Sjmcneill * of the GPL or the X11 license, at your option. Note that this dual 61.1Sjmcneill * licensing only applies to this file, and not this project as a 71.1Sjmcneill * whole. 81.1Sjmcneill * 91.1Sjmcneill * a) This file is free software; you can redistribute it and/or 101.1Sjmcneill * modify it under the terms of the GNU General Public License as 111.1Sjmcneill * published by the Free Software Foundation; either version 2 of the 121.1Sjmcneill * License, or (at your option) any later version. 131.1Sjmcneill * 141.1Sjmcneill * This file is distributed in the hope that it will be useful, 151.1Sjmcneill * but WITHOUT ANY WARRANTY; without even the implied warranty of 161.1Sjmcneill * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 171.1Sjmcneill * GNU General Public License for more details. 181.1Sjmcneill * 191.1Sjmcneill * You should have received a copy of the GNU General Public 201.1Sjmcneill * License along with this file; if not, write to the Free 211.1Sjmcneill * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, 221.1Sjmcneill * MA 02110-1301 USA 231.1Sjmcneill * 241.1Sjmcneill * Or, alternatively, 251.1Sjmcneill * 261.1Sjmcneill * b) Permission is hereby granted, free of charge, to any person 271.1Sjmcneill * obtaining a copy of this software and associated documentation 281.1Sjmcneill * files (the "Software"), to deal in the Software without 291.1Sjmcneill * restriction, including without limitation the rights to use, 301.1Sjmcneill * copy, modify, merge, publish, distribute, sublicense, and/or 311.1Sjmcneill * sell copies of the Software, and to permit persons to whom the 321.1Sjmcneill * Software is furnished to do so, subject to the following 331.1Sjmcneill * conditions: 341.1Sjmcneill * 351.1Sjmcneill * The above copyright notice and this permission notice shall be 361.1Sjmcneill * included in all copies or substantial portions of the Software. 371.1Sjmcneill * 381.1Sjmcneill * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 391.1Sjmcneill * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 401.1Sjmcneill * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 411.1Sjmcneill * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 421.1Sjmcneill * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 431.1Sjmcneill * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 441.1Sjmcneill * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 451.1Sjmcneill * OTHER DEALINGS IN THE SOFTWARE. 461.1Sjmcneill */ 471.1Sjmcneill 481.1Sjmcneill#include "armv7-m.dtsi" 491.1Sjmcneill#include <dt-bindings/clock/stm32fx-clock.h> 501.1Sjmcneill#include <dt-bindings/mfd/stm32f4-rcc.h> 511.1Sjmcneill 521.1Sjmcneill/ { 531.1.1.7Sjmcneill #address-cells = <1>; 541.1.1.7Sjmcneill #size-cells = <1>; 551.1.1.7Sjmcneill 561.1Sjmcneill clocks { 571.1Sjmcneill clk_hse: clk-hse { 581.1Sjmcneill #clock-cells = <0>; 591.1Sjmcneill compatible = "fixed-clock"; 601.1Sjmcneill clock-frequency = <0>; 611.1Sjmcneill }; 621.1Sjmcneill 631.1.1.6Sjmcneill clk_lse: clk-lse { 641.1Sjmcneill #clock-cells = <0>; 651.1Sjmcneill compatible = "fixed-clock"; 661.1Sjmcneill clock-frequency = <32768>; 671.1Sjmcneill }; 681.1Sjmcneill 691.1.1.3Sjmcneill clk_lsi: clk-lsi { 701.1Sjmcneill #clock-cells = <0>; 711.1Sjmcneill compatible = "fixed-clock"; 721.1Sjmcneill clock-frequency = <32000>; 731.1Sjmcneill }; 741.1Sjmcneill 751.1Sjmcneill clk_i2s_ckin: i2s-ckin { 761.1Sjmcneill #clock-cells = <0>; 771.1Sjmcneill compatible = "fixed-clock"; 781.1Sjmcneill clock-frequency = <0>; 791.1Sjmcneill }; 801.1Sjmcneill }; 811.1Sjmcneill 821.1Sjmcneill soc { 831.1.1.9Sjmcneill romem: efuse@1fff7800 { 841.1.1.8Sskrll compatible = "st,stm32f4-otp"; 851.1.1.8Sskrll reg = <0x1fff7800 0x400>; 861.1.1.8Sskrll #address-cells = <1>; 871.1.1.8Sskrll #size-cells = <1>; 881.1.1.8Sskrll ts_cal1: calib@22c { 891.1.1.8Sskrll reg = <0x22c 0x2>; 901.1.1.8Sskrll }; 911.1.1.8Sskrll ts_cal2: calib@22e { 921.1.1.8Sskrll reg = <0x22e 0x2>; 931.1.1.8Sskrll }; 941.1.1.8Sskrll }; 951.1.1.8Sskrll 961.1Sjmcneill timer2: timer@40000000 { 971.1Sjmcneill compatible = "st,stm32-timer"; 981.1Sjmcneill reg = <0x40000000 0x400>; 991.1Sjmcneill interrupts = <28>; 1001.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM2)>; 1011.1Sjmcneill status = "disabled"; 1021.1Sjmcneill }; 1031.1Sjmcneill 1041.1Sjmcneill timers2: timers@40000000 { 1051.1Sjmcneill #address-cells = <1>; 1061.1Sjmcneill #size-cells = <0>; 1071.1Sjmcneill compatible = "st,stm32-timers"; 1081.1Sjmcneill reg = <0x40000000 0x400>; 1091.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM2)>; 1101.1Sjmcneill clock-names = "int"; 1111.1Sjmcneill status = "disabled"; 1121.1Sjmcneill 1131.1Sjmcneill pwm { 1141.1Sjmcneill compatible = "st,stm32-pwm"; 1151.1.1.8Sskrll #pwm-cells = <3>; 1161.1Sjmcneill status = "disabled"; 1171.1Sjmcneill }; 1181.1Sjmcneill 1191.1Sjmcneill timer@1 { 1201.1Sjmcneill compatible = "st,stm32-timer-trigger"; 1211.1Sjmcneill reg = <1>; 1221.1Sjmcneill status = "disabled"; 1231.1Sjmcneill }; 1241.1Sjmcneill }; 1251.1Sjmcneill 1261.1Sjmcneill timer3: timer@40000400 { 1271.1Sjmcneill compatible = "st,stm32-timer"; 1281.1Sjmcneill reg = <0x40000400 0x400>; 1291.1Sjmcneill interrupts = <29>; 1301.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM3)>; 1311.1Sjmcneill status = "disabled"; 1321.1Sjmcneill }; 1331.1Sjmcneill 1341.1Sjmcneill timers3: timers@40000400 { 1351.1Sjmcneill #address-cells = <1>; 1361.1Sjmcneill #size-cells = <0>; 1371.1Sjmcneill compatible = "st,stm32-timers"; 1381.1Sjmcneill reg = <0x40000400 0x400>; 1391.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM3)>; 1401.1Sjmcneill clock-names = "int"; 1411.1Sjmcneill status = "disabled"; 1421.1Sjmcneill 1431.1Sjmcneill pwm { 1441.1Sjmcneill compatible = "st,stm32-pwm"; 1451.1.1.8Sskrll #pwm-cells = <3>; 1461.1Sjmcneill status = "disabled"; 1471.1Sjmcneill }; 1481.1Sjmcneill 1491.1Sjmcneill timer@2 { 1501.1Sjmcneill compatible = "st,stm32-timer-trigger"; 1511.1Sjmcneill reg = <2>; 1521.1Sjmcneill status = "disabled"; 1531.1Sjmcneill }; 1541.1Sjmcneill }; 1551.1Sjmcneill 1561.1Sjmcneill timer4: timer@40000800 { 1571.1Sjmcneill compatible = "st,stm32-timer"; 1581.1Sjmcneill reg = <0x40000800 0x400>; 1591.1Sjmcneill interrupts = <30>; 1601.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM4)>; 1611.1Sjmcneill status = "disabled"; 1621.1Sjmcneill }; 1631.1Sjmcneill 1641.1Sjmcneill timers4: timers@40000800 { 1651.1Sjmcneill #address-cells = <1>; 1661.1Sjmcneill #size-cells = <0>; 1671.1Sjmcneill compatible = "st,stm32-timers"; 1681.1Sjmcneill reg = <0x40000800 0x400>; 1691.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM4)>; 1701.1Sjmcneill clock-names = "int"; 1711.1Sjmcneill status = "disabled"; 1721.1Sjmcneill 1731.1Sjmcneill pwm { 1741.1Sjmcneill compatible = "st,stm32-pwm"; 1751.1.1.8Sskrll #pwm-cells = <3>; 1761.1Sjmcneill status = "disabled"; 1771.1Sjmcneill }; 1781.1Sjmcneill 1791.1Sjmcneill timer@3 { 1801.1Sjmcneill compatible = "st,stm32-timer-trigger"; 1811.1Sjmcneill reg = <3>; 1821.1Sjmcneill status = "disabled"; 1831.1Sjmcneill }; 1841.1Sjmcneill }; 1851.1Sjmcneill 1861.1Sjmcneill timer5: timer@40000c00 { 1871.1Sjmcneill compatible = "st,stm32-timer"; 1881.1Sjmcneill reg = <0x40000c00 0x400>; 1891.1Sjmcneill interrupts = <50>; 1901.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM5)>; 1911.1Sjmcneill }; 1921.1Sjmcneill 1931.1Sjmcneill timers5: timers@40000c00 { 1941.1Sjmcneill #address-cells = <1>; 1951.1Sjmcneill #size-cells = <0>; 1961.1Sjmcneill compatible = "st,stm32-timers"; 1971.1Sjmcneill reg = <0x40000C00 0x400>; 1981.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM5)>; 1991.1Sjmcneill clock-names = "int"; 2001.1Sjmcneill status = "disabled"; 2011.1Sjmcneill 2021.1Sjmcneill pwm { 2031.1Sjmcneill compatible = "st,stm32-pwm"; 2041.1.1.8Sskrll #pwm-cells = <3>; 2051.1Sjmcneill status = "disabled"; 2061.1Sjmcneill }; 2071.1Sjmcneill 2081.1Sjmcneill timer@4 { 2091.1Sjmcneill compatible = "st,stm32-timer-trigger"; 2101.1Sjmcneill reg = <4>; 2111.1Sjmcneill status = "disabled"; 2121.1Sjmcneill }; 2131.1Sjmcneill }; 2141.1Sjmcneill 2151.1Sjmcneill timer6: timer@40001000 { 2161.1Sjmcneill compatible = "st,stm32-timer"; 2171.1Sjmcneill reg = <0x40001000 0x400>; 2181.1Sjmcneill interrupts = <54>; 2191.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM6)>; 2201.1Sjmcneill status = "disabled"; 2211.1Sjmcneill }; 2221.1Sjmcneill 2231.1Sjmcneill timers6: timers@40001000 { 2241.1Sjmcneill #address-cells = <1>; 2251.1Sjmcneill #size-cells = <0>; 2261.1Sjmcneill compatible = "st,stm32-timers"; 2271.1Sjmcneill reg = <0x40001000 0x400>; 2281.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM6)>; 2291.1Sjmcneill clock-names = "int"; 2301.1Sjmcneill status = "disabled"; 2311.1Sjmcneill 2321.1Sjmcneill timer@5 { 2331.1Sjmcneill compatible = "st,stm32-timer-trigger"; 2341.1Sjmcneill reg = <5>; 2351.1Sjmcneill status = "disabled"; 2361.1Sjmcneill }; 2371.1Sjmcneill }; 2381.1Sjmcneill 2391.1Sjmcneill timer7: timer@40001400 { 2401.1Sjmcneill compatible = "st,stm32-timer"; 2411.1Sjmcneill reg = <0x40001400 0x400>; 2421.1Sjmcneill interrupts = <55>; 2431.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM7)>; 2441.1Sjmcneill status = "disabled"; 2451.1Sjmcneill }; 2461.1Sjmcneill 2471.1Sjmcneill timers7: timers@40001400 { 2481.1Sjmcneill #address-cells = <1>; 2491.1Sjmcneill #size-cells = <0>; 2501.1Sjmcneill compatible = "st,stm32-timers"; 2511.1Sjmcneill reg = <0x40001400 0x400>; 2521.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM7)>; 2531.1Sjmcneill clock-names = "int"; 2541.1Sjmcneill status = "disabled"; 2551.1Sjmcneill 2561.1Sjmcneill timer@6 { 2571.1Sjmcneill compatible = "st,stm32-timer-trigger"; 2581.1Sjmcneill reg = <6>; 2591.1Sjmcneill status = "disabled"; 2601.1Sjmcneill }; 2611.1Sjmcneill }; 2621.1Sjmcneill 2631.1Sjmcneill timers12: timers@40001800 { 2641.1Sjmcneill #address-cells = <1>; 2651.1Sjmcneill #size-cells = <0>; 2661.1Sjmcneill compatible = "st,stm32-timers"; 2671.1Sjmcneill reg = <0x40001800 0x400>; 2681.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM12)>; 2691.1Sjmcneill clock-names = "int"; 2701.1Sjmcneill status = "disabled"; 2711.1Sjmcneill 2721.1Sjmcneill pwm { 2731.1Sjmcneill compatible = "st,stm32-pwm"; 2741.1.1.8Sskrll #pwm-cells = <3>; 2751.1Sjmcneill status = "disabled"; 2761.1Sjmcneill }; 2771.1Sjmcneill 2781.1Sjmcneill timer@11 { 2791.1Sjmcneill compatible = "st,stm32-timer-trigger"; 2801.1Sjmcneill reg = <11>; 2811.1Sjmcneill status = "disabled"; 2821.1Sjmcneill }; 2831.1Sjmcneill }; 2841.1Sjmcneill 2851.1Sjmcneill timers13: timers@40001c00 { 2861.1Sjmcneill compatible = "st,stm32-timers"; 2871.1Sjmcneill reg = <0x40001C00 0x400>; 2881.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM13)>; 2891.1Sjmcneill clock-names = "int"; 2901.1Sjmcneill status = "disabled"; 2911.1Sjmcneill 2921.1Sjmcneill pwm { 2931.1Sjmcneill compatible = "st,stm32-pwm"; 2941.1.1.8Sskrll #pwm-cells = <3>; 2951.1Sjmcneill status = "disabled"; 2961.1Sjmcneill }; 2971.1Sjmcneill }; 2981.1Sjmcneill 2991.1Sjmcneill timers14: timers@40002000 { 3001.1Sjmcneill compatible = "st,stm32-timers"; 3011.1Sjmcneill reg = <0x40002000 0x400>; 3021.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM14)>; 3031.1Sjmcneill clock-names = "int"; 3041.1Sjmcneill status = "disabled"; 3051.1Sjmcneill 3061.1Sjmcneill pwm { 3071.1Sjmcneill compatible = "st,stm32-pwm"; 3081.1.1.8Sskrll #pwm-cells = <3>; 3091.1Sjmcneill status = "disabled"; 3101.1Sjmcneill }; 3111.1Sjmcneill }; 3121.1Sjmcneill 3131.1Sjmcneill rtc: rtc@40002800 { 3141.1Sjmcneill compatible = "st,stm32-rtc"; 3151.1Sjmcneill reg = <0x40002800 0x400>; 3161.1Sjmcneill clocks = <&rcc 1 CLK_RTC>; 3171.1Sjmcneill assigned-clocks = <&rcc 1 CLK_RTC>; 3181.1Sjmcneill assigned-clock-parents = <&rcc 1 CLK_LSE>; 3191.1Sjmcneill interrupt-parent = <&exti>; 3201.1Sjmcneill interrupts = <17 1>; 3211.1.1.6Sjmcneill st,syscfg = <&pwrcfg 0x00 0x100>; 3221.1Sjmcneill status = "disabled"; 3231.1Sjmcneill }; 3241.1Sjmcneill 3251.1.1.3Sjmcneill iwdg: watchdog@40003000 { 3261.1.1.3Sjmcneill compatible = "st,stm32-iwdg"; 3271.1.1.3Sjmcneill reg = <0x40003000 0x400>; 3281.1.1.3Sjmcneill clocks = <&clk_lsi>; 3291.1.1.6Sjmcneill clock-names = "lsi"; 3301.1.1.3Sjmcneill status = "disabled"; 3311.1.1.3Sjmcneill }; 3321.1.1.3Sjmcneill 3331.1.1.7Sjmcneill spi2: spi@40003800 { 3341.1.1.7Sjmcneill #address-cells = <1>; 3351.1.1.7Sjmcneill #size-cells = <0>; 3361.1.1.7Sjmcneill compatible = "st,stm32f4-spi"; 3371.1.1.7Sjmcneill reg = <0x40003800 0x400>; 3381.1.1.7Sjmcneill interrupts = <36>; 3391.1.1.7Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(SPI2)>; 3401.1.1.7Sjmcneill status = "disabled"; 3411.1.1.7Sjmcneill }; 3421.1.1.7Sjmcneill 3431.1.1.7Sjmcneill spi3: spi@40003c00 { 3441.1.1.7Sjmcneill #address-cells = <1>; 3451.1.1.7Sjmcneill #size-cells = <0>; 3461.1.1.7Sjmcneill compatible = "st,stm32f4-spi"; 3471.1.1.7Sjmcneill reg = <0x40003c00 0x400>; 3481.1.1.7Sjmcneill interrupts = <51>; 3491.1.1.7Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(SPI3)>; 3501.1.1.7Sjmcneill status = "disabled"; 3511.1.1.7Sjmcneill }; 3521.1.1.7Sjmcneill 3531.1Sjmcneill usart2: serial@40004400 { 3541.1.1.4Sjmcneill compatible = "st,stm32-uart"; 3551.1Sjmcneill reg = <0x40004400 0x400>; 3561.1Sjmcneill interrupts = <38>; 3571.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART2)>; 3581.1Sjmcneill status = "disabled"; 3591.1Sjmcneill }; 3601.1Sjmcneill 3611.1Sjmcneill usart3: serial@40004800 { 3621.1.1.4Sjmcneill compatible = "st,stm32-uart"; 3631.1Sjmcneill reg = <0x40004800 0x400>; 3641.1Sjmcneill interrupts = <39>; 3651.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART3)>; 3661.1Sjmcneill status = "disabled"; 3671.1Sjmcneill dmas = <&dma1 1 4 0x400 0x0>, 3681.1Sjmcneill <&dma1 3 4 0x400 0x0>; 3691.1Sjmcneill dma-names = "rx", "tx"; 3701.1Sjmcneill }; 3711.1Sjmcneill 3721.1Sjmcneill usart4: serial@40004c00 { 3731.1Sjmcneill compatible = "st,stm32-uart"; 3741.1Sjmcneill reg = <0x40004c00 0x400>; 3751.1Sjmcneill interrupts = <52>; 3761.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART4)>; 3771.1Sjmcneill status = "disabled"; 3781.1Sjmcneill }; 3791.1Sjmcneill 3801.1Sjmcneill usart5: serial@40005000 { 3811.1Sjmcneill compatible = "st,stm32-uart"; 3821.1Sjmcneill reg = <0x40005000 0x400>; 3831.1Sjmcneill interrupts = <53>; 3841.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART5)>; 3851.1Sjmcneill status = "disabled"; 3861.1Sjmcneill }; 3871.1Sjmcneill 3881.1Sjmcneill i2c1: i2c@40005400 { 3891.1Sjmcneill compatible = "st,stm32f4-i2c"; 3901.1Sjmcneill reg = <0x40005400 0x400>; 3911.1Sjmcneill interrupts = <31>, 3921.1Sjmcneill <32>; 3931.1Sjmcneill resets = <&rcc STM32F4_APB1_RESET(I2C1)>; 3941.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(I2C1)>; 3951.1Sjmcneill #address-cells = <1>; 3961.1Sjmcneill #size-cells = <0>; 3971.1Sjmcneill status = "disabled"; 3981.1Sjmcneill }; 3991.1Sjmcneill 4001.1.1.9Sjmcneill i2c3: i2c@40005c00 { 4011.1.1.9Sjmcneill compatible = "st,stm32f4-i2c"; 4021.1.1.9Sjmcneill reg = <0x40005c00 0x400>; 4031.1.1.9Sjmcneill interrupts = <72>, 4041.1.1.9Sjmcneill <73>; 4051.1.1.9Sjmcneill resets = <&rcc STM32F4_APB1_RESET(I2C3)>; 4061.1.1.9Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(I2C3)>; 4071.1.1.9Sjmcneill #address-cells = <1>; 4081.1.1.9Sjmcneill #size-cells = <0>; 4091.1.1.9Sjmcneill status = "disabled"; 4101.1.1.9Sjmcneill }; 4111.1.1.9Sjmcneill 4121.1.1.3Sjmcneill dac: dac@40007400 { 4131.1.1.3Sjmcneill compatible = "st,stm32f4-dac-core"; 4141.1.1.3Sjmcneill reg = <0x40007400 0x400>; 4151.1.1.3Sjmcneill resets = <&rcc STM32F4_APB1_RESET(DAC)>; 4161.1.1.3Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(DAC)>; 4171.1.1.3Sjmcneill clock-names = "pclk"; 4181.1.1.3Sjmcneill #address-cells = <1>; 4191.1.1.3Sjmcneill #size-cells = <0>; 4201.1.1.3Sjmcneill status = "disabled"; 4211.1.1.3Sjmcneill 4221.1.1.3Sjmcneill dac1: dac@1 { 4231.1.1.3Sjmcneill compatible = "st,stm32-dac"; 4241.1.1.9Sjmcneill #io-channel-cells = <1>; 4251.1.1.3Sjmcneill reg = <1>; 4261.1.1.3Sjmcneill status = "disabled"; 4271.1.1.3Sjmcneill }; 4281.1.1.3Sjmcneill 4291.1.1.3Sjmcneill dac2: dac@2 { 4301.1.1.3Sjmcneill compatible = "st,stm32-dac"; 4311.1.1.9Sjmcneill #io-channel-cells = <1>; 4321.1.1.3Sjmcneill reg = <2>; 4331.1.1.3Sjmcneill status = "disabled"; 4341.1.1.3Sjmcneill }; 4351.1.1.3Sjmcneill }; 4361.1.1.3Sjmcneill 4371.1Sjmcneill usart7: serial@40007800 { 4381.1.1.4Sjmcneill compatible = "st,stm32-uart"; 4391.1Sjmcneill reg = <0x40007800 0x400>; 4401.1Sjmcneill interrupts = <82>; 4411.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART7)>; 4421.1Sjmcneill status = "disabled"; 4431.1Sjmcneill }; 4441.1Sjmcneill 4451.1Sjmcneill usart8: serial@40007c00 { 4461.1.1.4Sjmcneill compatible = "st,stm32-uart"; 4471.1Sjmcneill reg = <0x40007c00 0x400>; 4481.1Sjmcneill interrupts = <83>; 4491.1Sjmcneill clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART8)>; 4501.1Sjmcneill status = "disabled"; 4511.1Sjmcneill }; 4521.1Sjmcneill 4531.1Sjmcneill timers1: timers@40010000 { 4541.1Sjmcneill #address-cells = <1>; 4551.1Sjmcneill #size-cells = <0>; 4561.1Sjmcneill compatible = "st,stm32-timers"; 4571.1Sjmcneill reg = <0x40010000 0x400>; 4581.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM1)>; 4591.1Sjmcneill clock-names = "int"; 4601.1Sjmcneill status = "disabled"; 4611.1Sjmcneill 4621.1Sjmcneill pwm { 4631.1Sjmcneill compatible = "st,stm32-pwm"; 4641.1.1.8Sskrll #pwm-cells = <3>; 4651.1Sjmcneill status = "disabled"; 4661.1Sjmcneill }; 4671.1Sjmcneill 4681.1Sjmcneill timer@0 { 4691.1Sjmcneill compatible = "st,stm32-timer-trigger"; 4701.1Sjmcneill reg = <0>; 4711.1Sjmcneill status = "disabled"; 4721.1Sjmcneill }; 4731.1Sjmcneill }; 4741.1Sjmcneill 4751.1Sjmcneill timers8: timers@40010400 { 4761.1Sjmcneill #address-cells = <1>; 4771.1Sjmcneill #size-cells = <0>; 4781.1Sjmcneill compatible = "st,stm32-timers"; 4791.1Sjmcneill reg = <0x40010400 0x400>; 4801.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM8)>; 4811.1Sjmcneill clock-names = "int"; 4821.1Sjmcneill status = "disabled"; 4831.1Sjmcneill 4841.1Sjmcneill pwm { 4851.1Sjmcneill compatible = "st,stm32-pwm"; 4861.1.1.8Sskrll #pwm-cells = <3>; 4871.1Sjmcneill status = "disabled"; 4881.1Sjmcneill }; 4891.1Sjmcneill 4901.1Sjmcneill timer@7 { 4911.1Sjmcneill compatible = "st,stm32-timer-trigger"; 4921.1Sjmcneill reg = <7>; 4931.1Sjmcneill status = "disabled"; 4941.1Sjmcneill }; 4951.1Sjmcneill }; 4961.1Sjmcneill 4971.1Sjmcneill usart1: serial@40011000 { 4981.1.1.4Sjmcneill compatible = "st,stm32-uart"; 4991.1Sjmcneill reg = <0x40011000 0x400>; 5001.1Sjmcneill interrupts = <37>; 5011.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(USART1)>; 5021.1Sjmcneill status = "disabled"; 5031.1Sjmcneill dmas = <&dma2 2 4 0x400 0x0>, 5041.1Sjmcneill <&dma2 7 4 0x400 0x0>; 5051.1Sjmcneill dma-names = "rx", "tx"; 5061.1Sjmcneill }; 5071.1Sjmcneill 5081.1Sjmcneill usart6: serial@40011400 { 5091.1.1.4Sjmcneill compatible = "st,stm32-uart"; 5101.1Sjmcneill reg = <0x40011400 0x400>; 5111.1Sjmcneill interrupts = <71>; 5121.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(USART6)>; 5131.1Sjmcneill status = "disabled"; 5141.1Sjmcneill }; 5151.1Sjmcneill 5161.1Sjmcneill adc: adc@40012000 { 5171.1Sjmcneill compatible = "st,stm32f4-adc-core"; 5181.1Sjmcneill reg = <0x40012000 0x400>; 5191.1Sjmcneill interrupts = <18>; 5201.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(ADC1)>; 5211.1Sjmcneill clock-names = "adc"; 5221.1Sjmcneill interrupt-controller; 5231.1Sjmcneill #interrupt-cells = <1>; 5241.1Sjmcneill #address-cells = <1>; 5251.1Sjmcneill #size-cells = <0>; 5261.1Sjmcneill status = "disabled"; 5271.1Sjmcneill 5281.1Sjmcneill adc1: adc@0 { 5291.1Sjmcneill compatible = "st,stm32f4-adc"; 5301.1Sjmcneill #io-channel-cells = <1>; 5311.1Sjmcneill reg = <0x0>; 5321.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(ADC1)>; 5331.1Sjmcneill interrupt-parent = <&adc>; 5341.1Sjmcneill interrupts = <0>; 5351.1.1.2Sjmcneill dmas = <&dma2 0 0 0x400 0x0>; 5361.1.1.2Sjmcneill dma-names = "rx"; 5371.1Sjmcneill status = "disabled"; 5381.1Sjmcneill }; 5391.1Sjmcneill 5401.1Sjmcneill adc2: adc@100 { 5411.1Sjmcneill compatible = "st,stm32f4-adc"; 5421.1Sjmcneill #io-channel-cells = <1>; 5431.1Sjmcneill reg = <0x100>; 5441.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(ADC2)>; 5451.1Sjmcneill interrupt-parent = <&adc>; 5461.1Sjmcneill interrupts = <1>; 5471.1.1.2Sjmcneill dmas = <&dma2 3 1 0x400 0x0>; 5481.1.1.2Sjmcneill dma-names = "rx"; 5491.1Sjmcneill status = "disabled"; 5501.1Sjmcneill }; 5511.1Sjmcneill 5521.1Sjmcneill adc3: adc@200 { 5531.1Sjmcneill compatible = "st,stm32f4-adc"; 5541.1Sjmcneill #io-channel-cells = <1>; 5551.1Sjmcneill reg = <0x200>; 5561.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(ADC3)>; 5571.1Sjmcneill interrupt-parent = <&adc>; 5581.1Sjmcneill interrupts = <2>; 5591.1.1.2Sjmcneill dmas = <&dma2 1 2 0x400 0x0>; 5601.1.1.2Sjmcneill dma-names = "rx"; 5611.1Sjmcneill status = "disabled"; 5621.1Sjmcneill }; 5631.1Sjmcneill }; 5641.1Sjmcneill 5651.1.1.9Sjmcneill sdio: mmc@40012c00 { 5661.1.1.5Sjmcneill compatible = "arm,pl180", "arm,primecell"; 5671.1.1.5Sjmcneill arm,primecell-periphid = <0x00880180>; 5681.1.1.5Sjmcneill reg = <0x40012c00 0x400>; 5691.1.1.5Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(SDIO)>; 5701.1.1.5Sjmcneill clock-names = "apb_pclk"; 5711.1.1.5Sjmcneill interrupts = <49>; 5721.1.1.5Sjmcneill max-frequency = <48000000>; 5731.1.1.5Sjmcneill status = "disabled"; 5741.1.1.5Sjmcneill }; 5751.1.1.5Sjmcneill 5761.1.1.7Sjmcneill spi1: spi@40013000 { 5771.1.1.7Sjmcneill #address-cells = <1>; 5781.1.1.7Sjmcneill #size-cells = <0>; 5791.1.1.7Sjmcneill compatible = "st,stm32f4-spi"; 5801.1.1.7Sjmcneill reg = <0x40013000 0x400>; 5811.1.1.7Sjmcneill interrupts = <35>; 5821.1.1.7Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI1)>; 5831.1.1.7Sjmcneill status = "disabled"; 5841.1.1.7Sjmcneill }; 5851.1.1.7Sjmcneill 5861.1.1.7Sjmcneill spi4: spi@40013400 { 5871.1.1.7Sjmcneill #address-cells = <1>; 5881.1.1.7Sjmcneill #size-cells = <0>; 5891.1.1.7Sjmcneill compatible = "st,stm32f4-spi"; 5901.1.1.7Sjmcneill reg = <0x40013400 0x400>; 5911.1.1.7Sjmcneill interrupts = <84>; 5921.1.1.7Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI4)>; 5931.1.1.7Sjmcneill status = "disabled"; 5941.1.1.7Sjmcneill }; 5951.1.1.7Sjmcneill 5961.1.1.9Sjmcneill syscfg: syscon@40013800 { 5971.1.1.9Sjmcneill compatible = "st,stm32-syscfg", "syscon"; 5981.1Sjmcneill reg = <0x40013800 0x400>; 5991.1Sjmcneill }; 6001.1Sjmcneill 6011.1Sjmcneill exti: interrupt-controller@40013c00 { 6021.1Sjmcneill compatible = "st,stm32-exti"; 6031.1Sjmcneill interrupt-controller; 6041.1Sjmcneill #interrupt-cells = <2>; 6051.1Sjmcneill reg = <0x40013C00 0x400>; 6061.1Sjmcneill interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>; 6071.1Sjmcneill }; 6081.1Sjmcneill 6091.1Sjmcneill timers9: timers@40014000 { 6101.1Sjmcneill #address-cells = <1>; 6111.1Sjmcneill #size-cells = <0>; 6121.1Sjmcneill compatible = "st,stm32-timers"; 6131.1Sjmcneill reg = <0x40014000 0x400>; 6141.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM9)>; 6151.1Sjmcneill clock-names = "int"; 6161.1Sjmcneill status = "disabled"; 6171.1Sjmcneill 6181.1Sjmcneill pwm { 6191.1Sjmcneill compatible = "st,stm32-pwm"; 6201.1.1.8Sskrll #pwm-cells = <3>; 6211.1Sjmcneill status = "disabled"; 6221.1Sjmcneill }; 6231.1Sjmcneill 6241.1Sjmcneill timer@8 { 6251.1Sjmcneill compatible = "st,stm32-timer-trigger"; 6261.1Sjmcneill reg = <8>; 6271.1Sjmcneill status = "disabled"; 6281.1Sjmcneill }; 6291.1Sjmcneill }; 6301.1Sjmcneill 6311.1Sjmcneill timers10: timers@40014400 { 6321.1Sjmcneill compatible = "st,stm32-timers"; 6331.1Sjmcneill reg = <0x40014400 0x400>; 6341.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM10)>; 6351.1Sjmcneill clock-names = "int"; 6361.1Sjmcneill status = "disabled"; 6371.1Sjmcneill 6381.1Sjmcneill pwm { 6391.1Sjmcneill compatible = "st,stm32-pwm"; 6401.1.1.8Sskrll #pwm-cells = <3>; 6411.1Sjmcneill status = "disabled"; 6421.1Sjmcneill }; 6431.1Sjmcneill }; 6441.1Sjmcneill 6451.1Sjmcneill timers11: timers@40014800 { 6461.1Sjmcneill compatible = "st,stm32-timers"; 6471.1Sjmcneill reg = <0x40014800 0x400>; 6481.1Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM11)>; 6491.1Sjmcneill clock-names = "int"; 6501.1Sjmcneill status = "disabled"; 6511.1Sjmcneill 6521.1Sjmcneill pwm { 6531.1Sjmcneill compatible = "st,stm32-pwm"; 6541.1.1.8Sskrll #pwm-cells = <3>; 6551.1Sjmcneill status = "disabled"; 6561.1Sjmcneill }; 6571.1Sjmcneill }; 6581.1Sjmcneill 6591.1.1.7Sjmcneill spi5: spi@40015000 { 6601.1.1.7Sjmcneill #address-cells = <1>; 6611.1.1.7Sjmcneill #size-cells = <0>; 6621.1.1.7Sjmcneill compatible = "st,stm32f4-spi"; 6631.1.1.7Sjmcneill reg = <0x40015000 0x400>; 6641.1.1.7Sjmcneill interrupts = <85>; 6651.1.1.7Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI5)>; 6661.1.1.9Sjmcneill dmas = <&dma2 3 2 0x400 0x0>, 6671.1.1.9Sjmcneill <&dma2 4 2 0x400 0x0>; 6681.1.1.9Sjmcneill dma-names = "rx", "tx"; 6691.1.1.7Sjmcneill status = "disabled"; 6701.1.1.7Sjmcneill }; 6711.1.1.7Sjmcneill 6721.1.1.7Sjmcneill spi6: spi@40015400 { 6731.1.1.7Sjmcneill #address-cells = <1>; 6741.1.1.7Sjmcneill #size-cells = <0>; 6751.1.1.7Sjmcneill compatible = "st,stm32f4-spi"; 6761.1.1.7Sjmcneill reg = <0x40015400 0x400>; 6771.1.1.7Sjmcneill interrupts = <86>; 6781.1.1.7Sjmcneill clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI6)>; 6791.1.1.7Sjmcneill status = "disabled"; 6801.1.1.7Sjmcneill }; 6811.1.1.7Sjmcneill 6821.1Sjmcneill pwrcfg: power-config@40007000 { 6831.1.1.9Sjmcneill compatible = "st,stm32-power-config", "syscon"; 6841.1Sjmcneill reg = <0x40007000 0x400>; 6851.1Sjmcneill }; 6861.1Sjmcneill 6871.1.1.3Sjmcneill ltdc: display-controller@40016800 { 6881.1.1.3Sjmcneill compatible = "st,stm32-ltdc"; 6891.1.1.3Sjmcneill reg = <0x40016800 0x200>; 6901.1.1.3Sjmcneill interrupts = <88>, <89>; 6911.1.1.3Sjmcneill resets = <&rcc STM32F4_APB2_RESET(LTDC)>; 6921.1.1.3Sjmcneill clocks = <&rcc 1 CLK_LCD>; 6931.1.1.3Sjmcneill clock-names = "lcd"; 6941.1.1.3Sjmcneill status = "disabled"; 6951.1.1.3Sjmcneill }; 6961.1Sjmcneill 6971.1.1.3Sjmcneill crc: crc@40023000 { 6981.1.1.3Sjmcneill compatible = "st,stm32f4-crc"; 6991.1.1.3Sjmcneill reg = <0x40023000 0x400>; 7001.1.1.3Sjmcneill clocks = <&rcc 0 STM32F4_AHB1_CLOCK(CRC)>; 7011.1.1.3Sjmcneill status = "disabled"; 7021.1Sjmcneill }; 7031.1Sjmcneill 7041.1.1.9Sjmcneill rcc: rcc@40023800 { 7051.1Sjmcneill #reset-cells = <1>; 7061.1Sjmcneill #clock-cells = <2>; 7071.1Sjmcneill compatible = "st,stm32f42xx-rcc", "st,stm32-rcc"; 7081.1Sjmcneill reg = <0x40023800 0x400>; 7091.1Sjmcneill clocks = <&clk_hse>, <&clk_i2s_ckin>; 7101.1Sjmcneill st,syscfg = <&pwrcfg>; 7111.1Sjmcneill assigned-clocks = <&rcc 1 CLK_HSE_RTC>; 7121.1Sjmcneill assigned-clock-rates = <1000000>; 7131.1Sjmcneill }; 7141.1Sjmcneill 7151.1Sjmcneill dma1: dma-controller@40026000 { 7161.1Sjmcneill compatible = "st,stm32-dma"; 7171.1Sjmcneill reg = <0x40026000 0x400>; 7181.1Sjmcneill interrupts = <11>, 7191.1Sjmcneill <12>, 7201.1Sjmcneill <13>, 7211.1Sjmcneill <14>, 7221.1Sjmcneill <15>, 7231.1Sjmcneill <16>, 7241.1Sjmcneill <17>, 7251.1Sjmcneill <47>; 7261.1Sjmcneill clocks = <&rcc 0 STM32F4_AHB1_CLOCK(DMA1)>; 7271.1Sjmcneill #dma-cells = <4>; 7281.1Sjmcneill }; 7291.1Sjmcneill 7301.1Sjmcneill dma2: dma-controller@40026400 { 7311.1Sjmcneill compatible = "st,stm32-dma"; 7321.1Sjmcneill reg = <0x40026400 0x400>; 7331.1Sjmcneill interrupts = <56>, 7341.1Sjmcneill <57>, 7351.1Sjmcneill <58>, 7361.1Sjmcneill <59>, 7371.1Sjmcneill <60>, 7381.1Sjmcneill <68>, 7391.1Sjmcneill <69>, 7401.1Sjmcneill <70>; 7411.1Sjmcneill clocks = <&rcc 0 STM32F4_AHB1_CLOCK(DMA2)>; 7421.1Sjmcneill #dma-cells = <4>; 7431.1Sjmcneill st,mem2mem; 7441.1Sjmcneill }; 7451.1Sjmcneill 7461.1Sjmcneill mac: ethernet@40028000 { 7471.1Sjmcneill compatible = "st,stm32-dwmac", "snps,dwmac-3.50a"; 7481.1Sjmcneill reg = <0x40028000 0x8000>; 7491.1Sjmcneill reg-names = "stmmaceth"; 7501.1Sjmcneill interrupts = <61>; 7511.1Sjmcneill interrupt-names = "macirq"; 7521.1Sjmcneill clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx"; 7531.1Sjmcneill clocks = <&rcc 0 STM32F4_AHB1_CLOCK(ETHMAC)>, 7541.1Sjmcneill <&rcc 0 STM32F4_AHB1_CLOCK(ETHMACTX)>, 7551.1Sjmcneill <&rcc 0 STM32F4_AHB1_CLOCK(ETHMACRX)>; 7561.1Sjmcneill st,syscon = <&syscfg 0x4>; 7571.1Sjmcneill snps,pbl = <8>; 7581.1Sjmcneill snps,mixed-burst; 7591.1Sjmcneill status = "disabled"; 7601.1Sjmcneill }; 7611.1Sjmcneill 7621.1Sjmcneill usbotg_hs: usb@40040000 { 7631.1Sjmcneill compatible = "snps,dwc2"; 7641.1Sjmcneill reg = <0x40040000 0x40000>; 7651.1Sjmcneill interrupts = <77>; 7661.1Sjmcneill clocks = <&rcc 0 STM32F4_AHB1_CLOCK(OTGHS)>; 7671.1Sjmcneill clock-names = "otg"; 7681.1Sjmcneill status = "disabled"; 7691.1Sjmcneill }; 7701.1Sjmcneill 7711.1.1.2Sjmcneill usbotg_fs: usb@50000000 { 7721.1.1.2Sjmcneill compatible = "st,stm32f4x9-fsotg"; 7731.1.1.2Sjmcneill reg = <0x50000000 0x40000>; 7741.1.1.2Sjmcneill interrupts = <67>; 7751.1.1.2Sjmcneill clocks = <&rcc 0 39>; 7761.1.1.2Sjmcneill clock-names = "otg"; 7771.1.1.2Sjmcneill status = "disabled"; 7781.1.1.2Sjmcneill }; 7791.1.1.2Sjmcneill 7801.1.1.3Sjmcneill dcmi: dcmi@50050000 { 7811.1.1.3Sjmcneill compatible = "st,stm32-dcmi"; 7821.1.1.3Sjmcneill reg = <0x50050000 0x400>; 7831.1.1.3Sjmcneill interrupts = <78>; 7841.1.1.3Sjmcneill resets = <&rcc STM32F4_AHB2_RESET(DCMI)>; 7851.1.1.3Sjmcneill clocks = <&rcc 0 STM32F4_AHB2_CLOCK(DCMI)>; 7861.1.1.3Sjmcneill clock-names = "mclk"; 7871.1.1.3Sjmcneill pinctrl-names = "default"; 7881.1.1.3Sjmcneill pinctrl-0 = <&dcmi_pins>; 7891.1.1.3Sjmcneill dmas = <&dma2 1 1 0x414 0x3>; 7901.1.1.3Sjmcneill dma-names = "tx"; 7911.1.1.3Sjmcneill status = "disabled"; 7921.1.1.3Sjmcneill }; 7931.1.1.3Sjmcneill 7941.1Sjmcneill rng: rng@50060800 { 7951.1Sjmcneill compatible = "st,stm32-rng"; 7961.1Sjmcneill reg = <0x50060800 0x400>; 7971.1Sjmcneill clocks = <&rcc 0 STM32F4_AHB2_CLOCK(RNG)>; 7981.1Sjmcneill 7991.1Sjmcneill }; 8001.1Sjmcneill }; 8011.1Sjmcneill}; 8021.1Sjmcneill 8031.1Sjmcneill&systick { 8041.1Sjmcneill clocks = <&rcc 1 SYSTICK>; 8051.1Sjmcneill status = "okay"; 8061.1Sjmcneill}; 807