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