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

/dts-v1/;
#include <st/f3/stm32f303Xc.dtsi>

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

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

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

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

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

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

&usart2 {
	current-speed = <115200>;
	pinctrl-0 = <&usart2_pins_a>;
	pinctrl-names = "default";
	status = "okay";
};

&i2c1 {
	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 0>, <&gpioe 5 0>;
		label = "LSM303DLHC-ACCEL";
	};
};

&i2c2 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
};

&spi1 {
	status = "okay";
};

&spi2 {
	status = "okay";
};

&usb {
	status = "okay";
};

&rtc {
	status = "okay";
};

&flash0 {
	/*
	 * For more information, see:
	 * http://docs.zephyrproject.org/latest/guides/dts/index.html#flash-partitions
	 */
	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>;
		};
	};
};
