/*
 * Copyright (c) 2017 Powersoft
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/f4/stm32f412Xg.dtsi>
#include <st/f4/stm32f412z(e-g)tx-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "STMicroelectronics STM32F412G-DISCO board";
	compatible = "st,stm32f412g-disco";

	chosen {
		zephyr,console = &usart2;
		zephyr,shell-uart = &usart2;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
	};

	leds {
		compatible = "gpio-leds";
		green_led_1: led_1 {
			gpios = <&gpioe 0 GPIO_ACTIVE_HIGH>;
			label = "User LD1";
		};
		orange_led_2: led_2 {
			gpios = <&gpioe 1 GPIO_ACTIVE_HIGH>;
			label = "User LD2";
		};
		red_led_3: led_3 {
			gpios = <&gpioe 2 GPIO_ACTIVE_HIGH>;
			label = "User LD3";
		};
		blue_led_4: led_4 {
			gpios = <&gpioe 3 GPIO_ACTIVE_HIGH>;
			label = "User LD4";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		joy_sel: joystick_selection {
			label = "joystick selection";
			gpios = <&gpioa 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
			zephyr,code = <INPUT_KEY_ENTER>;
		};
		joy_down: joystick_down {
			label = "joystick down";
			gpios = <&gpiog 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
			zephyr,code = <INPUT_KEY_DOWN>;
		};
		joy_up: joystick_up {
			label = "joystick up";
			gpios = <&gpiog 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
			zephyr,code = <INPUT_KEY_UP>;
		};
		joy_left: joystick_left {
			label = "joystick left";
			gpios = <&gpiof 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
			zephyr,code = <INPUT_KEY_LEFT>;
		};
		joy_right: joystick_right {
			label = "joystick right";
			gpios = <&gpiof 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
			zephyr,code = <INPUT_KEY_RIGHT>;
		};
	};

	aliases {
		led0 = &green_led_1;
		led1 = &orange_led_2;
		led2 = &red_led_3;
		led3 = &blue_led_4;
		sw0 = &joy_sel;
	};
};

&clk_lsi {
	status = "okay";
};

&clk_hse {
	hse-bypass;
	clock-frequency = <DT_FREQ_M(8)>; /* STLink 8MHz clock */
	status = "okay";
};

&pll {
	div-m = <4>;
	mul-n = <100>;
	div-p = <2>;
	div-q = <8>;
	clocks = <&clk_hse>;
	status = "okay";
};

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

&usart2 {
	pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pa3>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

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

&i2c2 {
	pinctrl-0 = <&i2c2_scl_pb10 &i2c2_sda_pb9>;
	pinctrl-names = "default";
	clock-frequency = <I2C_BITRATE_FAST>;
	status = "okay";
};

&spi1 {
	pinctrl-0 = <&spi1_nss_pa15 &spi1_sck_pa5
		     &spi1_miso_pa6 &spi1_mosi_pa7>;
	pinctrl-names = "default";
	status = "okay";
};

&rtc {
	clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>,
		 <&rcc STM32_SRC_LSI RTC_SEL(2)>;
	status = "okay";
};

&quadspi {
	pinctrl-0 = <&quadspi_clk_pb2 &quadspi_bk1_ncs_pg6
		     &quadspi_bk1_io0_pf8 &quadspi_bk1_io1_pf9
		     &quadspi_bk1_io2_pf7 &quadspi_bk1_io3_pf6>;
	pinctrl-names = "default";
	status = "okay";

	n25q128a1: qspi-nor-flash@90000000 {
		compatible = "st,stm32-qspi-nor";
		reg = <0x90000000 DT_SIZE_M(16)>; /* 128 Mbits */
		qspi-max-frequency = <72000000>;
		status = "okay";
	};
};
