/*
 * Copyright (c) 2020 STMicroelectronics
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/l4/stm32l4s5Xi.dtsi>
#include <st/l4/stm32l4s5vitx-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"

/ {
	model = "STMicroelectronics B-L4S5I-IOT01A discovery kit";
	compatible = "st,b-l4s5i-iot01a";

	chosen {
		zephyr,console = &usart1;
		zephyr,shell-uart = &usart1;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
		zephyr,flash-controller = &mx25r6435f;
	};

	leds {
		compatible = "gpio-leds";
		green_led_1: led_1 {
			gpios = <&gpioa 5 GPIO_ACTIVE_HIGH>;
			label = "User LD1";
		};
		green_led_2: led_2 {
			gpios = <&gpiob 14 GPIO_ACTIVE_HIGH>;
			label = "User LD2";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button {
			label = "User";
			gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
		};
	};

	aliases {
		led0 = &green_led_1;
		sw0 = &user_button;
		watchdog0 = &iwdg;
		accel0 = &lsm6dsl;
		spi-flash0 = &mx25r6435f;
	};
};

&clk_lsi {
	status = "okay";
};

&clk_hsi48 {
	status = "okay";
};

&clk_hsi {
	status = "okay";
};

&pll {
	div-m = <4>;
	mul-n = <40>;
	div-q = <2>;
	div-r = <2>;
	clocks = <&clk_hsi>;
	status = "okay";
};

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

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

&uart4 {
	pinctrl-0 = <&uart4_tx_pa0 &uart4_rx_pa1>;
	pinctrl-names = "default";
	current-speed = <115200>;
};

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

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

	lis3mdl-magn@1e {
		compatible = "st,lis3mdl-magn";
		reg = <0x1e>;
	};

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

	lps22hb-press@5d {
		compatible = "st,lps22hb-press";
		reg = <0x5d>;
	};

	lsm6dsl: lsm6dsl@6a {
		compatible = "st,lsm6dsl";
		reg = <0x6a>;
		irq-gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
	};

	vl53l0x@29 {
		compatible = "st,vl53l0x";
		reg = <0x29>;
		xshut-gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>;
	};
};

&spi1 {
	pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pa6 &spi1_mosi_pa7>;
	pinctrl-names = "default";
	cs-gpios = <&gpioa 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
	status = "okay";
};

&spi3 {
	pinctrl-0 = <&spi3_sck_pc10 &spi3_miso_pc11 &spi3_mosi_pc12>;
	pinctrl-names = "default";
	status = "okay";

	cs-gpios = <&gpiod 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>,
		   <&gpioe 0 GPIO_ACTIVE_LOW>;

	spbtle-rf@0 {
		compatible = "zephyr,bt-hci-spi";
		reg = <0>;
		reset-gpios = <&gpioa 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
		irq-gpios = <&gpioe 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
		spi-max-frequency = <2000000>;
	};

	wifi0: ism43362@1 {
		compatible = "inventek,eswifi";
		spi-max-frequency = <2000000>;
		reg = <1>;
		resetn-gpios = <&gpioe 8 GPIO_ACTIVE_HIGH>;
		boot0-gpios = <&gpiob 12 GPIO_ACTIVE_HIGH>;
		wakeup-gpios = <&gpiob 13 GPIO_ACTIVE_HIGH>;
		data-gpios = <&gpioe 1 GPIO_ACTIVE_HIGH>;
	};
};

&flash0 {

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 DT_SIZE_K(64)>;
			read-only;
		};

		/*
		 * The flash starting at offset 0x10000 and ending at
		 * offset 0x1ffff is reserved for use by the application.
		 */

		slot0_partition: partition@20000 {
			label = "image-0";
			reg = <0x00020000 DT_SIZE_K(432)>;
		};
		slot1_partition: partition@8c000 {
			label = "image-1";
			reg = <0x0008C000 DT_SIZE_K(432)>;
		};
		scratch_partition: partition@f8000 {
			label = "image-scratch";
			reg = <0x000F8000 DT_SIZE_K(16)>;
		};

		storage_partition: partition@fc000 {
			label = "storage";
			reg = <0x000fc000 DT_SIZE_K(16)>;
		};
	};
};

&timers2 {
	status = "okay";

	pwm2: pwm {
		status = "okay";
		pinctrl-0 = <&tim2_ch1_pa15>;
		pinctrl-names = "default";
	};
};

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

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

&iwdg {
	status = "okay";
};

&rng {
	status = "okay";
};

&octospi1 {
	pinctrl-0 = <&octospim_p1_clk_pe10 &octospim_p1_ncs_pe11
		     &octospim_p1_io0_pe12 &octospim_p1_io1_pe13
		     &octospim_p1_io2_pe14 &octospim_p1_io3_pe15>;
	pinctrl-names = "default";

	dmas = <&dma1 0 40 0x480>; /* request 40 for OCTOSPI1 */
	dma-names = "tx_rx";

	status = "okay";

	mx25r6435f: ospi-nor-flash@0 {
		compatible = "st,stm32-ospi-nor";
		reg = <0>;
		ospi-max-frequency = <DT_FREQ_M(26)>; /* for Voltage Range 2 */
		size = <DT_SIZE_M(64)>; /* 64 Megabits */
		spi-bus-width = <OSPI_QUAD_MODE>;
		data-rate = <OSPI_STR_TRANSFER>;
		writeoc="PP_1_4_4";

		status = "okay";

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

			store_partition: partition@000 {
				label = "store";
				reg = <0x00000000 DT_SIZE_M(8)>;
			};
		};
	};
};

&dma1 {
	status = "okay";
};

&dmamux1 {
	status = "okay";
};
