/*
 * Copyright (c) 2018 Yong Jin
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/f7/stm32f769Xi.dtsi>
#include <st/f7/stm32f769nihx-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"

/ {
	model = "STMicroelectronics STM32F769I DISCOVERY board";
	compatible = "st,stm32f769I-disco";

	chosen {
		zephyr,console = &usart1;
		zephyr,shell-uart = &usart1;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,dtcm = &dtcm;
		zephyr,flash-controller = &mx25l51245g;
	};

	sdram1: sdram@c0000000 {
		compatible = "zephyr,memory-region", "mmio-sram";
		device_type = "memory";
		reg = <0xc0000000 DT_SIZE_M(16)>;
		zephyr,memory-region = "SDRAM1";
	};

	leds {
		compatible = "gpio-leds";
		red_led_1:led_1 {
			gpios = <&gpioj 13 GPIO_ACTIVE_HIGH>;
			label = "User LD1";
		};
		green_led_2:led_2 {
			gpios = <&gpioj 5 GPIO_ACTIVE_HIGH>;
			label = "User LD2";
		};
		green_led_3:led_3 {
			gpios = <&gpioa 12 GPIO_ACTIVE_HIGH>;
			label = "User LD3";
		};
		red_led_4:led_4 {
			gpios = <&gpiod 4 GPIO_ACTIVE_HIGH>;
			label = "User LD4";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button {
			label = "User";
			gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
		};
	};

	aliases {
		led0 = &red_led_1;
		led1 = &green_led_2;
		led2 = &green_led_3;
		led3 = &red_led_4;
		sw0 = &user_button;
		kscan0 = &touch_controller;
	};
};

&clk_hse {
	clock-frequency = <DT_FREQ_M(25)>;
	status = "okay";
};

&pll {
	div-m = <25>;
	mul-n = <432>;
	div-p = <2>;
	div-q = <9>;
	clocks = <&clk_hse>;
	status = "okay";
};

&rcc {
	clocks = <&pll>;
	clock-frequency = <DT_FREQ_M(216)>;
	ahb-prescaler = <1>;
	apb1-prescaler = <4>;
	apb2-prescaler = <2>;
};

arduino_i2c: &i2c1 {};
arduino_spi: &spi2 {};
arduino_serial: &usart6 {};

&usart1 {
	pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

&usart6 {
	pinctrl-0 = <&usart6_tx_pc6 &usart6_rx_pc7>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

&i2c1 {
	pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb9>;
	pinctrl-names = "default";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
};

&i2c4 {
	pinctrl-0 = <&i2c4_scl_pd12 &i2c4_sda_pb7>;
	pinctrl-names = "default";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;

	touch_controller: ft6202@2a {
		compatible = "focaltech,ft5336";
		reg = <0x2a>;
		label = "FT6202";
		int-gpios = <&gpioi 13 0>;
	};
};

&spi2 {
	pinctrl-0 = <&spi2_nss_pa11 &spi2_sck_pa12 &spi2_miso_pb14 &spi2_mosi_pb15>;
	pinctrl-names = "default";
	status = "okay";
};

&mac {
	status = "okay";
	pinctrl-0 = <&eth_mdc_pc1
		     &eth_rxd0_pc4
		     &eth_rxd1_pc5
		     &eth_ref_clk_pa1
		     &eth_mdio_pa2
		     &eth_crs_dv_pa7
		     &eth_tx_en_pg11
		     &eth_txd0_pg13
		     &eth_txd1_pg14>;
	pinctrl-names = "default";
};

&sdmmc2 {
	status = "okay";
	pinctrl-0 = <&sdmmc2_d0_pg9 &sdmmc2_d1_pg10
		     &sdmmc2_d2_pb3 &sdmmc2_d3_pb4
		     &sdmmc2_ck_pd6 &sdmmc2_cmd_pd7>;
	pinctrl-names = "default";
	cd-gpios = <&gpioi 15 GPIO_ACTIVE_LOW>;
};

&quadspi {
	pinctrl-0 = <&quadspi_clk_pb2 &quadspi_bk1_ncs_pb6
		     &quadspi_bk1_io0_pc9 &quadspi_bk1_io1_pc10
		     &quadspi_bk1_io2_pe2 &quadspi_bk1_io3_pd13>;
	pinctrl-names = "default";
	status = "okay";

	mx25l51245g: qspi-nor-flash@0 {
		compatible = "st,stm32-qspi-nor";
		label = "MX25L51245G";
		reg = <0>;
		qspi-max-frequency = <72000000>;
		size = <DT_SIZE_M(64*8)>;
		status = "okay";

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			slot1_partition: partition@0 {
				label = "image-1";
				reg = <0x00000000 DT_SIZE_K(1664)>;
				};

			storage_partition: partition@1a0000 {
				label = "storage";
				reg = <0x001a0000 DT_SIZE_M(62)>;
			};
		};
	};
};

&fmc {
	status = "okay";
	pinctrl-0 = <&fmc_nbl0_pe0 &fmc_nbl1_pe1 &fmc_nbl2_pi4 &fmc_nbl3_pi5
		     &fmc_sdclk_pg8 &fmc_sdnwe_ph5 &fmc_sdcke0_ph2 &fmc_sdne0_ph3
		     &fmc_sdnras_pf11 &fmc_sdncas_pg15
		     &fmc_a0_pf0 &fmc_a1_pf1 &fmc_a2_pf2 &fmc_a3_pf3
		     &fmc_a4_pf4 &fmc_a5_pf5 &fmc_a6_pf12 &fmc_a7_pf13
		     &fmc_a8_pf14 &fmc_a9_pf15 &fmc_a10_pg0 &fmc_a11_pg1
		     &fmc_a12_pg2 &fmc_a14_pg4 &fmc_a15_pg5
		     &fmc_d0_pd14 &fmc_d1_pd15 &fmc_d2_pd0 &fmc_d3_pd1
		     &fmc_d4_pe7 &fmc_d5_pe8 &fmc_d6_pe9 &fmc_d7_pe10
		     &fmc_d8_pe11 &fmc_d9_pe12 &fmc_d10_pe13 &fmc_d11_pe14
		     &fmc_d12_pe15 &fmc_d13_pd8 &fmc_d14_pd9 &fmc_d15_pd10
		     &fmc_d16_ph8 &fmc_d17_ph9 &fmc_d18_ph10 &fmc_d19_ph11
		     &fmc_d20_ph12 &fmc_d21_ph13 &fmc_d22_ph14 &fmc_d23_ph15
		     &fmc_d24_pi0 &fmc_d25_pi1 &fmc_d26_pi2 &fmc_d27_pi3
		     &fmc_d28_pi6 &fmc_d29_pi7 &fmc_d30_pi9 &fmc_d31_pi10>;
	pinctrl-names = "default";

	sdram {
		status = "okay";

		power-up-delay = <100>;
		num-auto-refresh = <8>;
		mode-register = <0x230>;
		refresh-rate = <603>;

		bank@0 {
			reg = <0>;

			st,sdram-control = <STM32_FMC_SDRAM_NC_8
					    STM32_FMC_SDRAM_NR_12
					    STM32_FMC_SDRAM_MWID_32
					    STM32_FMC_SDRAM_NB_4
					    STM32_FMC_SDRAM_CAS_3
					    STM32_FMC_SDRAM_SDCLK_PERIOD_2
					    STM32_FMC_SDRAM_RBURST_ENABLE
					    STM32_FMC_SDRAM_RPIPE_0>;
			st,sdram-timing = <2 6 4 6 2 2 2>;
		};
	};
};
