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

/dts-v1/;
#include <st/l4/stm32l475Xg.dtsi>
#include <st/l4/stm32l475v(c-e-g)tx-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"

/ {
	model = "STMicroelectronics B-L475E-IOT01Ax board";
	compatible = "st,stm32l475-disco-iot";

	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_0 {
			label = "User";
			gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
		};
	};

	aliases {
		led0 = &green_led_2;
		led1 = &green_led_1;
		sw0 = &user_button;
		eswifi0 = &wifi0;
	};
};

&clk_hsi {
	status = "okay";
};

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

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

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

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

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

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

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

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

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

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

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

&i2c3 {
	pinctrl-0 = <&i2c3_scl_pc0 &i2c3_sda_pc1>;
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
};

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

&spi3_miso_pc11 { slew-rate = "very-high-speed"; };

&spi3 {
	status = "okay";

	pinctrl-0 = <&spi3_sck_pc10 &spi3_miso_pc11 &spi3_mosi_pc12>;

	cs-gpios = <&gpiod 13 (GPIO_ACTIVE_HIGH | 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>;
		label = "SPBTLE-RF";
	};

	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>;
		label = "ESWIFI0";
	};
};

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x00010000>;
			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 0x000D8000>;
		};

		scratch_partition: partition@f8000 {
			label = "image-scratch";
			reg = <0x000F8000 0x00004000>;
		};
	};
};

&timers2 {
	status = "okay";

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

&lptim1 {
	status = "okay";
};

&rtc {
	status = "okay";
};

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

&iwdg {
	status = "okay";
};

&rng {
	status = "okay";
};

&adc1 {
	pinctrl-0 = <&adc1_in5_pa0 &adc1_in3_pc2
		     &adc1_in4_pc3 &adc1_in13_pc4
		     &adc1_in14_pc5>;
	status = "okay";
};

&dma1 {
	status = "okay";
};

&quadspi {
	pinctrl-0 = <&quadspi_clk_pe10 &quadspi_ncs_pe11
		     &quadspi_bk1_io0_pe12 &quadspi_bk1_io1_pe13
		     &quadspi_bk1_io2_pe14 &quadspi_bk1_io3_pe15>;
	dmas = <&dma1 5 5 0x0000>;
	dma-names = "tx_rx";

	status = "okay";

	mx25r6435f: qspi-nor-flash@0 {
		compatible = "st,stm32-qspi-nor";
		label = "MX25R6435F";
		reg = <0>;
		qspi-max-frequency = <50000000>;
		/* 64 Megabits = 8 Megabytes */
		size = <0x4000000>;
		status = "okay";

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

			slot1_partition: partition@0 {
				label = "image-1";
				reg = <0x00000000 0x000d8000>;
				};

			storage_partition: partition@d8000 {
				label = "storage";
				reg = <0x000d8000 DT_SIZE_M(7)>;
			};
		};
	};
};
