/*
 * Copyright 2016 - Michael Kurz <michi.kurz@gmail.com>
 * Copyright 2016 - Vikas MANOCHA <vikas.manocha@st.com>
 *
 * Based on:
 * stm32f429.dtsi from Linux
 * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
 *
 * This file is dual-licensed: you can use it either under the terms
 * of the GPL or the X11 license, at your option. Note that this dual
 * licensing only applies to this file, and not this project as a
 * whole.
 *
 *  a) This file is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of the
 *     License, or (at your option) any later version.
 *
 *     This file is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 * Or, alternatively,
 *
 *  b) Permission is hereby granted, free of charge, to any person
 *     obtaining a copy of this software and associated documentation
 *     files (the "Software"), to deal in the Software without
 *     restriction, including without limitation the rights to use,
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 *     sell copies of the Software, and to permit persons to whom the
 *     Software is furnished to do so, subject to the following
 *     conditions:
 *
 *     The above copyright notice and this permission notice shall be
 *     included in all copies or substantial portions of the Software.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *     OTHER DEALINGS IN THE SOFTWARE.
 */

#include "armv7-m.dtsi"
#include <dt-bindings/pinctrl/stm32f746-pinfunc.h>
#include <dt-bindings/clock/stm32fx-clock.h>
#include <dt-bindings/mfd/stm32f7-rcc.h>

/ {
	clocks {
		clk_hse: clk-hse {
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <0>;
		};
};

	soc {
		u-boot,dm-pre-reloc;
		mac: ethernet@40028000 {
			compatible = "st,stm32-dwmac";
			reg = <0x40028000 0x8000>;
			reg-names = "stmmaceth";
			clocks = <&rcc 0 STM32F7_AHB1_CLOCK(ETHMAC)>,
				 <&rcc 0 STM32F7_AHB1_CLOCK(ETHMACTX)>,
				 <&rcc 0 STM32F7_AHB1_CLOCK(ETHMACRX)>;
			interrupts = <61>, <62>;
			interrupt-names = "macirq", "eth_wake_irq";
			snps,pbl = <8>;
			snps,mixed-burst;
			dma-ranges;
			status = "disabled";
		};

		fmc: fmc@A0000000 {
			compatible = "st,stm32-fmc";
			reg = <0xA0000000 0x1000>;
			clocks = <&rcc 0 STM32F7_AHB3_CLOCK(FMC)>;
			u-boot,dm-pre-reloc;
		};

		qspi: quadspi@A0001000 {
			compatible = "st,stm32-qspi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0xA0001000 0x1000>, <0x90000000 0x10000000>;
			reg-names = "QuadSPI", "QuadSPI-memory";
			interrupts = <92>;
			spi-max-frequency = <108000000>;
			clocks = <&rcc 0 STM32F7_AHB3_CLOCK(QSPI)>;
			status = "disabled";
		};
		usart1: serial@40011000 {
			compatible = "st,stm32f7-usart", "st,stm32f7-uart";
			reg = <0x40011000 0x400>;
			interrupts = <37>;
			clocks = <&rcc 0 STM32F7_APB2_CLOCK(USART1)>;
			status = "disabled";
			u-boot,dm-pre-reloc;
		};

		pwrcfg: power-config@58024800 {
			compatible = "syscon";
			reg = <0x40007000 0x400>;
		};

		rcc: rcc@40023810 {
			#reset-cells = <1>;
			#clock-cells = <2>;
			compatible = "st,stm32f746-rcc", "st,stm32-rcc";
			reg = <0x40023800 0x400>;
			clocks = <&clk_hse>;
			st,syscfg = <&pwrcfg>;
			u-boot,dm-pre-reloc;
		};

		pinctrl: pin-controller {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "st,stm32f746-pinctrl";
			ranges = <0 0x40020000 0x3000>;
			u-boot,dm-pre-reloc;
			pins-are-numbered;

			gpioa: gpio@40020000 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x0 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOA)>;
				st,bank-name = "GPIOA";
				u-boot,dm-pre-reloc;
			};

			gpiob: gpio@40020400 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x400 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOB)>;
				st,bank-name = "GPIOB";
				u-boot,dm-pre-reloc;
			};


			gpioc: gpio@40020800 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x800 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOC)>;
				st,bank-name = "GPIOC";
				u-boot,dm-pre-reloc;
			};

			gpiod: gpio@40020c00 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0xc00 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOD)>;
				st,bank-name = "GPIOD";
				u-boot,dm-pre-reloc;
			};

			gpioe: gpio@40021000 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x1000 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOE)>;
				st,bank-name = "GPIOE";
				u-boot,dm-pre-reloc;
			};

			gpiof: gpio@40021400 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x1400 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOF)>;
				st,bank-name = "GPIOF";
				u-boot,dm-pre-reloc;
			};

			gpiog: gpio@40021800 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x1800 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOG)>;
				st,bank-name = "GPIOG";
				u-boot,dm-pre-reloc;
			};

			gpioh: gpio@40021c00 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x1c00 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOH)>;
				st,bank-name = "GPIOH";
				u-boot,dm-pre-reloc;
			};

			gpioi: gpio@40022000 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x2000 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOI)>;
				st,bank-name = "GPIOI";
				u-boot,dm-pre-reloc;
			};

			gpioj: gpio@40022400 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x2400 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOJ)>;
				st,bank-name = "GPIOJ";
				u-boot,dm-pre-reloc;
			};

			gpiok: gpio@40022800 {
				gpio-controller;
				#gpio-cells = <2>;
				compatible = "st,stm32-gpio";
				reg = <0x2800 0x400>;
				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOK)>;
				st,bank-name = "GPIOK";
				u-boot,dm-pre-reloc;
			};

			sdio_pins: sdio_pins@0 {
				pins {
					pinmux = <STM32F746_PC8_FUNC_SDMMC1_D0>,
						 <STM32F746_PC9_FUNC_SDMMC1_D1>,
						 <STM32F746_PC10_FUNC_SDMMC1_D2>,
						 <STM32F746_PC11_FUNC_SDMMC1_D3>,
						 <STM32F746_PC12_FUNC_SDMMC1_CK>,
						 <STM32F746_PD2_FUNC_SDMMC1_CMD>;
					drive-push-pull;
					slew-rate = <2>;
				};
			};

			sdio_pins_od: sdio_pins_od@0 {
				pins1 {
					pinmux = <STM32F746_PC8_FUNC_SDMMC1_D0>,
						 <STM32F746_PC9_FUNC_SDMMC1_D1>,
						 <STM32F746_PC10_FUNC_SDMMC1_D2>,
						 <STM32F746_PC11_FUNC_SDMMC1_D3>,
						 <STM32F746_PC12_FUNC_SDMMC1_CK>;
					drive-push-pull;
					slew-rate = <2>;
				};

				pins2 {
					pinmux = <STM32F746_PD2_FUNC_SDMMC1_CMD>;
					drive-open-drain;
					slew-rate = <2>;
				};
			};

			sdio_pins_b: sdio_pins_b@0 {
				pins {
					pinmux = <STM32F769_PG9_FUNC_SDMMC2_D0>,
						 <STM32F769_PG10_FUNC_SDMMC2_D1>,
						 <STM32F769_PB3_FUNC_SDMMC2_D2>,
						 <STM32F769_PB4_FUNC_SDMMC2_D3>,
						 <STM32F769_PD6_FUNC_SDMMC2_CLK>,
						 <STM32F769_PD7_FUNC_SDMMC2_CMD>;
					drive-push-pull;
					slew-rate = <2>;
				};
			};

			sdio_pins_od_b: sdio_pins_od_b@0 {
				pins1 {
					pinmux = <STM32F769_PG9_FUNC_SDMMC2_D0>,
						 <STM32F769_PG10_FUNC_SDMMC2_D1>,
						 <STM32F769_PB3_FUNC_SDMMC2_D2>,
						 <STM32F769_PB4_FUNC_SDMMC2_D3>,
						 <STM32F769_PD6_FUNC_SDMMC2_CLK>;
					drive-push-pull;
					slew-rate = <2>;
				};

				pins2 {
					pinmux = <STM32F769_PD7_FUNC_SDMMC2_CMD>;
					drive-open-drain;
					slew-rate = <2>;
				};
			};

		};
		sdio: sdio@40012c00 {
			compatible = "st,stm32f4xx-sdio";
			reg = <0x40012c00 0x400>;
			clocks = <&rcc 0 171>;
			interrupts = <49>;
			status = "disabled";
			pinctrl-0 = <&sdio_pins>;
			pinctrl-1 = <&sdio_pins_od>;
			pinctrl-names = "default", "opendrain";
			max-frequency = <48000000>;
		};

		sdio2: sdio2@40011c00 {
			compatible = "st,stm32f4xx-sdio";
			reg = <0x40011c00 0x400>;
			clocks = <&rcc 0 167>;
			interrupts = <103>;
			status = "disabled";
			pinctrl-0 = <&sdio_pins_b>;
			pinctrl-1 = <&sdio_pins_od_b>;
			pinctrl-names = "default", "opendrain";
			max-frequency = <48000000>;
		};

		timer5: timer@40000c00 {
			compatible = "st,stm32-timer";
			reg = <0x40000c00 0x400>;
			interrupts = <50>;
			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>;
		};

		ltdc: display-controller@40016800 {
			compatible = "st,stm32-ltdc";
			reg = <0x40016800 0x200>;
			resets = <&rcc STM32F7_APB2_RESET(LTDC)>;
			clocks = <&rcc 0 STM32F7_APB2_CLOCK(LTDC)>;
			u-boot,dm-pre-reloc;
			status = "disabled";
		};
	};
};

&systick {
	status = "okay";
};
