/*
 * Copyright (c) 2018 Aleksandr Makarov <aleksandr.o.makarov@gmail.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/l0/stm32l072Xz.dtsi>
#include <st/l0/stm32l072c(b-z)tx-pinctrl.dtsi>

/ {
	model = "STMicroelectronics B-L072Z-LRWAN1 Discovery kit";
	compatible = "st,stm32l072z-lrwan1";

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

	leds {
		compatible = "gpio-leds";
		green_led_0: led_0 {
			gpios = <&gpioa 5 GPIO_ACTIVE_HIGH>;
			label = "Green LED 1";
		};
		green_led_1: led_1 {
			gpios = <&gpiob 5 GPIO_ACTIVE_HIGH>;
			label = "Green LED 2";
		};
		blue_led: led_2 {
			gpios = <&gpiob 6 GPIO_ACTIVE_HIGH>;
			label = "Blue LED";
		};
		red_led: led_3 {
			gpios = <&gpiob 7 GPIO_ACTIVE_HIGH>;
			label = "Red LED";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button_0 {
			label = "Push button switch";
			gpios = <&gpiob 2 GPIO_ACTIVE_LOW>;
		};
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &green_led_0;
		led1 = &green_led_1;
		led2 = &blue_led;
		led3 = &red_led;
		sw0 = &user_button;
		eeprom-0 = &eeprom;
		lora0 = &lora;
	};

	power-states {
		stop: stop {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-idle";
			min-residency-us = <100>;
		};
	};
};

&cpu0 {
	cpu-power-states = <&stop>;
};

&lptim1 {
	status = "okay";
};

&clk_hsi {
	status = "okay";
};

&pll {
	div = <2>;
	mul = <4>;
	clocks = <&clk_hsi>;
	status = "okay";
};

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

arduino_usart: &usart1 {};
arduino_spi: &spi2 {};
arduino_i2c: &i2c1 {};

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

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

&spi1 {
	pinctrl-0 = <&spi1_nss_pa15 &spi1_sck_pb3
		     &spi1_miso_pa6 &spi1_mosi_pa7>;
	pinctrl-names = "default";
	status = "okay";
	cs-gpios = <&gpioa 15 GPIO_ACTIVE_LOW>;

	lora: sx1276@0 {
		compatible = "semtech,sx1276";
		reg = <0>;
		label = "sx1276";
		reset-gpios = <&gpioc 0 GPIO_ACTIVE_LOW>;
		dio-gpios = <&gpiob 4 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
			<&gpiob 1 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
			<&gpiob 0 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
			<&gpioc 13 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
			<&gpioa 5 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
			<&gpioa 4 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
		rfi-enable-gpios = <&gpioa 1 GPIO_ACTIVE_HIGH>;
		rfo-enable-gpios = <&gpioc 2 GPIO_ACTIVE_HIGH>;
		pa-boost-enable-gpios = <&gpioc 1 GPIO_ACTIVE_HIGH>;
		tcxo-power-gpios = <&gpioa 12 GPIO_ACTIVE_HIGH>;
		tcxo-power-startup-delay-ms = <5>;
		spi-max-frequency = <1000000>;
	};
};

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

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

&rtc {
	status = "okay";
};

&rng {
	status = "okay";
};

&eeprom {
	status = "okay";
};

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

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

		/* Set aside 32KiB for data at the end of the 192KiB flash */
		storage_partition: partition@28000 {
			label = "storage";
			reg = <0x00028000 0x00008000>;
		};
	};
};
