/*
 * 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,bt-c2h-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;
		watchdog0 = &iwdg;
	};
};

&die_temp {
	status = "okay";
};

&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>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

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

&i2c3 {
	pinctrl-0 = <&i2c3_scl_pc0 &i2c3_sda_pc1>;
	pinctrl-names = "default";
	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>;
	pinctrl-names = "default";
	status = "okay";
};

&timers1 {
	st,prescaler = <10000>;
	status = "okay";

	pwm1: pwm {
		status = "okay";
		pinctrl-0 = <&tim1_ch1_pa8>;
		pinctrl-names = "default";
	};
};

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

&lpuart1 {
	pinctrl-0 = <&lpuart1_tx_pc1 &lpuart1_rx_pc0
			&lpuart1_cts_pa6 &lpuart1_rts_pb12>;
	hw-flow-control;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

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

&iwdg {
	status = "okay";
};

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

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

&rng {
	status = "okay";
};

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

		/*
		 * Configure partitions while leaving space for M0 BLE f/w
		 * Since STM32WBCube release V1.13.2, only _HCIOnly_ f/w are supported.
		 * These FW are expected to be located not before 0x080DB000
		 * Current partition is using the first 876K of the flash for M4
		 */

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 DT_SIZE_K(48)>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000c000 DT_SIZE_K(400)>;
		};
		slot1_partition: partition@70000 {
			label = "image-1";
			reg = <0x00070000 DT_SIZE_K(400)>;
		};
		scratch_partition: partition@d4000 {
			label = "image-scratch";
			reg = <0x000d4000 DT_SIZE_K(16)>;
		};
		storage_partition: partition@d8000 {
			label = "storage";
			reg = <0x000d8000 DT_SIZE_K(8)>;
		};

	};
};
