/*
 * 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;
	};
};

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

&usart2 {
	current-speed = <115200>;
	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>;
	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 0x03>;
	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)>;
			};
		};
	};
};
