/*
 * Copyright (c) 2017 I-SENSE group of ICCS
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/f3/stm32f303Xc.dtsi>
#include <st/f3/stm32f303v(b-c)tx-pinctrl.dtsi>

/ {
	model = "STMicroelectronics STM32F3DISCOVERY board";
	compatible = "st,stm32f3discovery";

	chosen {
		zephyr,console = &usart1;
		zephyr,shell-uart = &usart1;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,can-primary = &can1;
	};

	leds {
		compatible = "gpio-leds";
		red_led_3: led_3 {
			gpios = <&gpioe 9 GPIO_ACTIVE_HIGH>;
			label = "User LD3";
		};
		blue_led_4: led_4 {
			gpios = <&gpioe 8 GPIO_ACTIVE_HIGH>;
			label = "User LD4";
		};
		orange_led_5: led_5 {
			gpios = <&gpioe 10 GPIO_ACTIVE_HIGH>;
			label = "User LD5";
		};
		green_led_6: led_6 {
			gpios = <&gpioe 15 GPIO_ACTIVE_HIGH>;
			label = "User LD6";
		};
		green_led_7: led_7 {
			gpios = <&gpioe 11 GPIO_ACTIVE_HIGH>;
			label = "User LD7";
		};
		orange_led_8: led_8 {
			gpios = <&gpioe 14 GPIO_ACTIVE_HIGH>;
			label = "User LD8";
		};
		blue_led_9: led_9 {
			gpios = <&gpioe 12 GPIO_ACTIVE_HIGH>;
			label = "User LD9";
		};
		red_led_10: led_10 {
			gpios = <&gpioe 13 GPIO_ACTIVE_HIGH>;
			label = "User LD10";
		};
	};

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

	aliases {
		led0 = &green_led_6;
		led1 = &green_led_7;
		sw0 = &user_button;
	};
};

&usart1 {
	pinctrl-0 = <&usart1_tx_pc4 &usart1_rx_pc5>;
	current-speed = <115200>;
	status = "okay";
};

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

&i2c1 {
	pinctrl-0 = <&i2c1_scl_pb6 &i2c1_sda_pb7>;
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;

	lsm303dlhc-magn@1e {
		compatible = "st,lsm303dlhc-magn";
		reg = <0x1e>;
		label = "LSM303DLHC-MAGN";
	};

	lsm303dlhc-accel@19 {
		compatible = "st,lis2dh", "st,lsm303dlhc-accel";
		reg = <0x19>;
		irq-gpios = <&gpioe 4 GPIO_ACTIVE_HIGH>,
			  <&gpioe 5 GPIO_ACTIVE_HIGH>;
		label = "LSM303DLHC-ACCEL";
	};
};

&i2c2 {
	pinctrl-0 = <&i2c2_scl_pa9 &i2c2_sda_pa10>;
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
};

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

&spi2 {
	pinctrl-0 = <&spi2_nss_pb12 &spi2_sck_pb13
		     &spi2_miso_pb14 &spi2_mosi_pb15>;
	status = "okay";
};

&usb {
	pinctrl-0 = <&usb_dm_pa11 &usb_dp_pa12>;
	status = "okay";
};

&rtc {
	status = "okay";
};

&can1 {
	pinctrl-0 = <&can_rx_pd0 &can_tx_pd1>;
	status = "okay";
};

&flash0 {

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

		/* Set 6Kb of storage at the end of the 256Kb of flash */
		storage_partition: partition@3e800 {
			label = "storage";
			reg = <0x0003e800 0x00001800>;
		};
	};
};

&iwdg {
	status = "okay";
};

&timers1 {
	status = "okay";
	pwm1: pwm {
		status = "okay";
		pinctrl-0 = <&tim1_ch1_pa8>;
	};
};

&adc1 {
	pinctrl-0 = <&adc1_in1_pa0>;
	status = "okay";
};
