/*
 * Copyright (c) 2023 Marin Jurjević <marin.jurjevic@hotmail.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/g0/stm32g070Xb.dtsi>
#include <st/g0/stm32g070rbtx-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"

/ {
	model = "STMicroelectronics STM32G070RB-NUCLEO board";
	compatible = "st,stm32g070rb-nucleo";

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


	leds {
		compatible = "gpio-leds";
		green_led_1: led_4 {
			gpios = <&gpioa 5 GPIO_ACTIVE_HIGH>;
			label = "User LD4";
		};
	};

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

	aliases {
		led0 = &green_led_1;
		sw0 = &user_button;
		watchdog0 = &iwdg;
		die-temp0 = &die_temp;
		volt-sensor0 = &vref;
	};
};

&clk_lsi {
	status = "okay";
};

&clk_hsi {
	status = "okay";
};

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

&rcc {
	clocks = <&pll>;
	clock-frequency = <DT_FREQ_M(64)>;
	ahb-prescaler = <1>;
	apb1-prescaler = <1>;
};

&usart1 {
	pinctrl-0 = <&usart1_tx_pc4 &usart1_rx_pc5>;
	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";
};

&rtc {
	clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00000400>,
		 <&rcc STM32_SRC_LSI RTC_SEL(2)>;

	status = "okay";
};

&iwdg {
	status = "okay";
};

&timers3 {
	st,prescaler = <10000>;
	status = "okay";
	pwm3: pwm {
		status = "okay";
		pinctrl-0 = <&tim3_ch1_pa6>;
		pinctrl-names = "default";
	};
};

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

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

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

&spi2 {
	pinctrl-0 = <&spi2_nss_pb12 &spi2_sck_pb13
		     &spi2_miso_pb14 &spi2_mosi_pb15>;
	pinctrl-names = "default";
	status = "okay";
};

&adc1 {
	pinctrl-0 = <&adc1_in0_pa0 &adc1_in1_pa1>;
	pinctrl-names = "default";
	status = "okay";
	vref-mv = <3300>;
};

&die_temp {
	status = "okay";
};

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

		/* Set 2KB of storage at the end of 128KB flash */
		storage_partition: partition@1f800 {
			label = "storage";
			reg = <0x0001f800 DT_SIZE_K(2)>;
		};
	};
};

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

&vref {
	status = "okay";
};
