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

/dts-v1/;
#include <st/wb/stm32wb55Xg.dtsi>
#include <st/wb/stm32wb55rgvx-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"

/ {
	model = "STMicroelectronics STM32WB55RG-NUCLEO board";
	compatible = "st,stm32wb55rg-nucleo";

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

	power-states {
		stop0: state0 {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-idle";
			substate-id = <1>;
			min-residency-us = <100>;
		};
		stop1: state1 {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-idle";
			substate-id = <2>;
			min-residency-us = <500>;
		};
		stop2: state2 {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-idle";
			substate-id = <3>;
			min-residency-us = <900>;
		};
	};

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

	gpio_keys {
		compatible = "gpio-keys";
		user_button_1: button_0 {
			label = "SW1";
			gpios = <&gpioc 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
		};
		user_button_2: button_1 {
			label = "SW2";
			gpios = <&gpiod 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
		};
		user_button_3: button_2 {
			label = "SW3";
			gpios = <&gpiod 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
		};
	};

	aliases {
		led0 = &green_led_2;
		sw0 = &user_button_1;
		sw1 = &user_button_2;
		sw2 = &user_button_3;
	};
};

&clk_hse {
	status = "okay";
};

&clk_lse {
	status = "okay";
};

&rcc {
	clocks = <&clk_hse>;
	clock-frequency = <DT_FREQ_M(32)>;
	cpu1-prescaler = <1>;
	cpu2-prescaler = <1>;
	ahb4-prescaler = <1>;
	apb1-prescaler = <1>;
	apb2-prescaler = <1>;
};

&cpu0 {
	cpu-power-states = <&stop0 &stop1 &stop2>;
};

&usart1 {
	pinctrl-0 = <&usart1_tx_pb6 &usart1_rx_pb7>;
	current-speed = <115200>;
	status = "okay";
};

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

&i2c3 {
	pinctrl-0 = <&i2c3_scl_pc0 &i2c3_sda_pc1>;
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
};

&rtc {
	status = "okay";
};

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

&timers1 {
	status = "okay";

	pwm1: pwm {
		status = "okay";
		st,prescaler = <10000>;
		pinctrl-0 = <&tim1_ch1_pa8>;
	};
};

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

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

&adc1 {
	pinctrl-0 = <&adc1_in3_pc2>;
	status = "okay";
};

&iwdg {
	status = "okay";
};

&lptim1 {
	status = "okay";
};

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

&rng {
	status = "okay";
};

&flash0 {
	/*
	 * For more information, see:
	 * https://docs.zephyrproject.org/latest/reference/devicetree/index.html#fixed-flash-partitions
	 */
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		/* Set all partitions with first 808K of flash */
		/* last 216K are reseved for M0 usage */
		/* Configure partitions to make use of the whole 808K */

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0xc000>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000C000 0x5c000>;
		};
		slot1_partition: partition@68000 {
			label = "image-1";
			reg = <0x00068000 0x5c000>;
		};
		scratch_partition: partition@c4000 {
			label = "image-scratch";
			reg = <0x000c4000 0x4000>;
		};
		storage_partition: partition@c8000 {
			label = "storage";
			reg = <0x000c8000 0x2000>;
		};

	};
};
