/*
 * Copyright (c) 2019 Linaro Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/l1/stm32l151Xb-a.dtsi>
#include <st/l1/stm32l151c(6-8-b)uxa-pinctrl.dtsi>
#include "96b_lscon.dtsi"

/ {
	model = "RAKWireless 96boards WisTrio board";
	compatible = "rak,wistrio";

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

	leds {
		compatible = "gpio-leds";
		green_led_0: led_0 {
			gpios = <&gpioa 12 GPIO_ACTIVE_LOW>;
			label = "User LD1";
		};
		blue_led_0: led_1 {
			gpios = <&gpiob 4 GPIO_ACTIVE_LOW>;
			label = "User LD2";
		};
	};

	aliases {
		led0 = &green_led_0;
		eeprom-0 = &eeprom;
		lora0 = &lora;
	};

	rf_switch: rf-switch {
		compatible = "qorvo,rfsw8001";
		rf1-gpios = <&gpioa 4 GPIO_PULL_UP>;
		rf2-gpios = <&gpiob 6 GPIO_PULL_UP>;
		rf3-gpios = <&gpiob 7 GPIO_PULL_UP>;
	};

	/* regulator controlling SX oscillator enable */
	sx-osc-enable {
		compatible = "regulator-fixed-sync", "regulator-fixed";
		label = "sx-osc-enable";
		regulator-name = "sx-osc-enable";
		enable-gpios = <&gpioh 1 GPIO_ACTIVE_HIGH>;
		regulator-boot-on;
	};
};

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

&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";
};

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

	lis3dh@32 {
		compatible = "st,lis3dh";
		reg = <0x32>;
		label = "LIS3DH";
	};
};

&spi1 {
	pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pa6 &spi1_mosi_pa7>;
	pinctrl-names = "default";
	status = "okay";
	cs-gpios = <&gpiob 0 GPIO_ACTIVE_LOW>;

	lora: lora@0 {
		compatible = "semtech,sx1276";
		reg = <0>;
		label = "sx1276";
		reset-gpios = <&gpiob 13 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
		dio-gpios = <&gpioa 11 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
			<&gpiob 1 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
			<&gpioa 3 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
			<&gpioh 0 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>,
			<&gpioc 13 (GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
		spi-max-frequency = <1000000>;
		power-amplifier-output = "pa-boost";
	};
};

&rtc {
	status = "okay";
};

&eeprom {
	status = "okay";
};
