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

/dts-v1/;
#include "b_u585i_iot02a-common.dtsi"

/ {
	model = "STMicroelectronics B-U585I-IOT02A discovery kit";
	compatible = "st,b-u585i-iot02a";

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

	aliases {
		led0 = &green_led_1;
		led1 = &red_led_1;
		sw0 = &user_button;
	};
};

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

		/*
		 * Following flash partition is dedicated to the use of b_u585i_iot02a
		 * with TZEN=0 (so w/o TFM).
		 * Set the partitions with first MB to make use of the whole Bank1
		 */
		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 DT_SIZE_K(64)>;
		};
		slot0_partition: partition@10000 {
			label = "image-0";
			reg = <0x00010000 DT_SIZE_K(416)>;
		};
		slot1_partition: partition@78000 {
			label = "image-1";
			reg = <0x00078000 DT_SIZE_K(416)>;
		};
		scratch_partition: partition@e0000 {
			label = "image-scratch";
			reg = <0x000e0000 DT_SIZE_K(64)>;
		};
		storage_partition: partition@f0000 {
			label = "storage";
			reg = <0x000f0000 DT_SIZE_K(64)>;
		};

	};
};

&gpdma1 {
	status = "okay";
};

&uart4 {
	pinctrl-0 = <&uart4_tx_pc10 &uart4_rx_pc11>;
	pinctrl-names = "default";
	current-speed = <100000>;
	status = "okay";
};
