/*
 * Copyright (c) 2021 Linaro Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <st/u5/stm32u585Xi.dtsi>
#include <st/u5/stm32u585aiixq-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	leds {
		compatible = "gpio-leds";
		green_led_1: led_1 {
			gpios = <&gpioh 7 GPIO_ACTIVE_LOW>;
			label = "User LD7";
		};
		red_led_1: led_3 {
			gpios = <&gpioh 6 GPIO_ACTIVE_LOW>;
			label = "User LD6";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button {
			label = "User";
			gpios = <&gpioc 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
			zephyr,code = <INPUT_KEY_0>;
		};
	};


	aliases {
		watchdog0 = &iwdg;
		spi-flash0 = &mx25lm51245;
		die-temp0 = &die_temp;
		volt-sensor0 = &vref1;
		volt-sensor1 = &vbat4;
		eeprom-0 = &eeprom0;
	};
};

&clk_hsi48 {
	status = "okay";
};

&clk_lse {
	status = "okay";
};

&clk_msis {
	status = "okay";
	msi-range = <4>;
	msi-pll-mode;
};

&pll1 {
	div-m = <1>;
	mul-n = <80>;
	div-q = <2>;
	div-r = <2>;
	clocks = <&clk_msis>;
	status = "okay";
};

&rcc {
	clocks = <&pll1>;
	clock-frequency = <DT_FREQ_M(160)>;
	ahb-prescaler = <1>;
	apb1-prescaler = <1>;
	apb2-prescaler = <1>;
	apb3-prescaler = <1>;
};

stm32_lp_tick_source: &lptim1 {
	clocks = <&rcc STM32_CLOCK_BUS_APB3 0x00000800>,
		 <&rcc STM32_SRC_LSE LPTIM1_SEL(3)>;
	status = "okay";
};

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

&usart3 {
	pinctrl-0 = <&usart3_tx_pd8 &usart3_rx_pd9>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

&spi1 {
	pinctrl-0 = <&spi1_nss_pe12 &spi1_sck_pe13
		     &spi1_miso_pe14 &spi1_mosi_pe15>;
	pinctrl-names = "default";
	status = "okay";
};

&timers4 {
	status = "okay";
	st,prescaler = <1>;
	pwm4: pwm {
		status = "okay";
		pinctrl-0 = <&tim4_ch1_pb6>;
		pinctrl-names = "default";
	};
};

&timers3 {
	status = "okay";
	st,prescaler = <255>;
	pwm3: pwm {
		status = "okay";
		pinctrl-0 = <&tim3_ch2_pe4>;
		pinctrl-names = "default";
	};
};

&octospi2 {
	pinctrl-0 = <&octospim_p2_clk_pf4 &octospim_p2_ncs_pi5
		     &octospim_p2_io0_pf0 &octospim_p2_io1_pf1
		     &octospim_p2_io2_pf2 &octospim_p2_io3_pf3
		     &octospim_p2_io4_ph9 &octospim_p2_io5_ph10
		     &octospim_p2_io6_ph11 &octospim_p2_io7_ph12
		     &octospim_p2_dqs_pf12>;
	pinctrl-names = "default";

	status = "okay";

	mx25lm51245: ospi-nor-flash@70000000 {
		compatible = "st,stm32-ospi-nor";
		reg = <0x70000000 DT_SIZE_M(64)>; /* 512 Mbits */
		ospi-max-frequency = <DT_FREQ_M(50)>;
		spi-bus-width = <OSPI_OPI_MODE>;
		data-rate = <OSPI_DTR_TRANSFER>;
		four-byte-opcodes;
		status = "okay";

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

			   partition@0 {
			       reg = <0x00000000 DT_SIZE_M(64)>;
			   };
		};
	};
};

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

&i2c2 {
	pinctrl-0 = <&i2c2_scl_ph4 &i2c2_sda_ph5>;
	pinctrl-names = "default";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;

	veml6030@10 {
		compatible ="vishay,veml7700";
		reg = <0x10>;
		status = "okay";
	};

	iis2mdc@1e {
		compatible = "st,iis2mdc";
		reg = <0x1e>;
		drdy-gpios =  <&gpiod 10 GPIO_ACTIVE_HIGH>;
	};

	ism330dhcx@6b {
		compatible = "st,ism330dhcx";
		reg = <0x6b>;
		drdy-gpios =  <&gpioe 11 GPIO_ACTIVE_HIGH>;
	};

	lps22hh@5d {
		compatible = "st,lps22hh";
		reg = <0x5d>;
		drdy-gpios =  <&gpiog 2 GPIO_ACTIVE_HIGH>;
	};

	eeprom0:eeprom@56 {
		compatible = "atmel,at24";
		reg = <0x56>;
		status = "okay";
		size = <DT_SIZE_K(32)>;
		pagesize = <64>;
		address-width = <16>;
		timeout = <5>;
	};

	hts221@5f {
		compatible = "st,hts221";
		reg = <0x5f>;
	};
};

&aes {
	status = "okay";
};

&rng {
	status = "okay";
};

zephyr_udc0: &usbotg_fs {
	pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12>;
	pinctrl-names = "default";
	status = "okay";
};

&adc1 {
	pinctrl-0 = <&adc1_in15_pb0>;
	pinctrl-names = "default";
	st,adc-clock-source = <ASYNC>;
	st,adc-prescaler = <4>;
	status = "okay";
};

&adc4 {
	pinctrl-0 = <&adc4_in19_pb1>;
	pinctrl-names = "default";
	st,adc-clock-source = <ASYNC>;
	st,adc-prescaler = <4>;
	status = "okay";
};

&die_temp {
	status = "okay";
};

&dac1 {
	pinctrl-0 = <&dac1_out1_pa4>;
	pinctrl-names = "default";
	status = "okay";
};

&iwdg {
	status = "okay";
};

&vref1 {
	status = "okay";
};

&vbat4 {
	status = "okay";
};
