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

/dts-v1/;
#include <st/wba/stm32wba52Xg.dtsi>
#include <st/wba/stm32wba52cgux-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "STMicroelectronics STM32WBA52CG-NUCLEO board";
	compatible = "st,stm32wba52cg-nucleo";

	#address-cells = <1>;
	#size-cells = <1>;

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

	leds: leds {
		compatible = "gpio-leds";
		blue_led_1: led_1 {
			gpios = <&gpiob 4 GPIO_ACTIVE_LOW>;
			label = "User LD1";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button {
			label = "User";
			gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_KEY_0>;
		};
	};

	aliases {
		led0 = &blue_led_1;
		sw0 = &user_button;
	};
};

&clk_lsi {
	status = "okay";
};

&clk_lse {
	status = "okay";
};

&clk_hse {
	status = "okay";
};

&clk_hsi {
	status = "okay";
};

&pll1 {
	div-m = <8>;
	mul-n = <48>;
	div-q = <2>;
	div-r = <2>;
	clocks = <&clk_hse>;
	status = "okay";
};

&rcc {
	clocks = <&pll1>;
	clock-frequency = <DT_FREQ_M(96)>;
	ahb-prescaler = <1>;
	ahb5-prescaler = <4>;
	apb1-prescaler = <1>;
	apb2-prescaler = <1>;
	apb7-prescaler = <1>;
};

&iwdg {
	status = "okay";
};

&rtc {
	status = "okay";
	clocks = <&rcc STM32_CLOCK_BUS_APB7 0x00200000>,
			<&rcc STM32_SRC_LSE RTC_SEL(1)>;
	prescaler = <32768>;
};

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

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

&spi1 {
	pinctrl-0 = <&spi1_nss_pa12 &spi1_sck_pb4
		     &spi1_miso_pb3 &spi1_mosi_pa15>;
	pinctrl-names = "default";
	status = "okay";
};

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

&adc4 {
	pinctrl-0 = <&adc4_in8_pa1>;
	pinctrl-names = "default";
	st,adc-clock-source = <ASYNC>;
	st,adc-prescaler = <4>;
	status = "okay";
};

stm32_lp_tick_source: &lptim1 {
	clocks = <&rcc STM32_CLOCK_BUS_APB7 0x00000800>,
		 <&rcc STM32_SRC_LSE LPTIM1_SEL(3)>;
	status = "okay";
};

&rng {
	status = "okay";
};
