/*
 * Copyright (c) 2020 STMicroelectronics
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/wl/stm32wl55Xc.dtsi>
#include <st/wl/stm32wl55jcix-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "STMicroelectronics STM32WL55JC-NUCLEO board";
	compatible = "st,stm32wl55-nucleo";

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

	leds: leds {
		compatible = "gpio-leds";
		blue_led_1: led_0 {
			gpios = <&gpiob 15 GPIO_ACTIVE_HIGH>;
			label = "User LED1";
		};
		green_led_2: led_1 {
			gpios = <&gpiob 9 GPIO_ACTIVE_HIGH>;
			label = "User LED2";
		};
		green_led_3: led_2 {
			gpios = <&gpiob 11 GPIO_ACTIVE_HIGH>;
			label = "User LED3";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button_1: button_0 {
			label = "SW1";
			gpios = <&gpioa 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
			zephyr,code = <INPUT_KEY_0>;
		};
		user_button_2: button_1 {
			label = "SW2";
			gpios = <&gpioa 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
			zephyr,code = <INPUT_KEY_1>;
		};
		user_button_3: button_2 {
			label = "SW3";
			gpios = <&gpioc 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
			zephyr,code = <INPUT_KEY_2>;
		};
	};

	aliases {
		led0 = &green_led_2;
		sw0 = &user_button_1;
		sw1 = &user_button_2;
		sw2 = &user_button_3;
		lora0 = &lora;
		watchdog0 = &iwdg;
		die-temp0 = &die_temp;
		volt-sensor0 = &vref;
		volt-sensor1 = &vbat;
	};
};

&clk_lsi {
	status = "okay";
};

&lptim1 {
	clocks = <&rcc STM32_CLOCK_BUS_APB1 0x80000000>,
		 <&rcc STM32_SRC_LSI LPTIM1_SEL(1)>;
	status = "okay";
};

&clk_hsi {
	status = "okay";
};

&pll {
	div-m = <1>;
	mul-n = <6>;
	div-r = <2>;
	div-q = <2>;
	clocks = <&clk_hsi>;
	status = "okay";
};

&rcc {
	clocks = <&pll>;
	clock-frequency = <DT_FREQ_M(48)>;
	cpu1-prescaler = <1>;
	cpu2-prescaler = <1>;
	ahb3-prescaler = <1>;
	apb1-prescaler = <1>;
	apb2-prescaler = <1>;
};

&lpuart1 {
	pinctrl-0 = <&lpuart1_tx_pa2 &lpuart1_rx_pa3>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

&i2c2 {
	pinctrl-0 = <&i2c2_scl_pa12 &i2c2_sda_pa11>;
	pinctrl-names = "default";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
};

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


&dac1 {
	pinctrl-0 = <&dac_out1_pa10>;
	pinctrl-names = "default";
	status = "okay";
};

&timers2 {
	status = "okay";
	pwm2: pwm {
		status = "okay";
		pinctrl-0 = <&tim2_ch4_pb11>;
		pinctrl-names = "default";
	};
};


&adc1 {
	pinctrl-0 = <&adc_in5_pb1>;
	pinctrl-names = "default";
	st,adc-clock-source = <SYNC>;
	st,adc-prescaler = <4>;
	status = "okay";
};

&die_temp {
	status = "okay";
};

&aes {
	status = "okay";
};

&rng {
	status = "okay";
};

&iwdg {
	status = "okay";
};

&subghzspi {
	status = "okay";
	lora: radio@0 {
		status = "okay";
		tx-enable-gpios = <&gpioc 4 GPIO_ACTIVE_LOW>; /* FE_CTRL1 */
		rx-enable-gpios = <&gpioc 5 GPIO_ACTIVE_LOW>; /* FE_CTRL2 */
		dio3-tcxo-voltage = <SX126X_DIO3_TCXO_1V7>;
		tcxo-power-startup-delay-ms = <5>;
		/* High-power output is selected as a consequence of using
		 * tx/rx-enable-gpio to control FE_CTRL1 and FE_CTRL2. Low-power
		 * output would require both FE_CTRL1 and FE_CTRL2 to be high,
		 * which is not currently supported by the driver.
		 */
		power-amplifier-output = "rfo-hp";
		rfo-lp-max-power = <15>;
		rfo-hp-max-power = <22>;
	};
};

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

		/*
		 * Set 16kB of storage (8x2kB pages) at the end of the 256kB of
		 * flash.
		 */
		storage_partition: partition@3c000 {
			label = "storage";
			reg = <0x0003c000 DT_SIZE_K(16)>;
		};
	};
};

&vref {
	status = "okay";
};

&vbat {
	status = "okay";
};
