/*
 * 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_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;
		can-primary = &can1;
	};
};

&usart1 {
	current-speed = <115200>;
	status = "okay";
};

&usart2 {
	current-speed = <115200>;
	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 GPIO_ACTIVE_HIGH>,
			  <&gpioe 5 GPIO_ACTIVE_HIGH>;
		label = "LSM303DLHC-ACCEL";
	};
};

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

&spi1 {
	status = "okay";
};

&spi2 {
	status = "okay";
};

&usb {
	status = "okay";
};

&rtc {
	status = "okay";
};

&can1 {
	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>;
		};
	};
};
