/*
 * Copyright (c) 2023 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <mem.h>
#include <arm/nordic/nrf5340_cpunet.dtsi>

/ {
	model = "Nordic NRF5340 BSIM NRF5340 Network";
	compatible = "bsim,nrf5340-bsim-nrf5340-cpunet","bsim,nrf53";

	/* We need to remove aliases to nodes we delete */
	aliases {
		/delete-property/ sram-0;
		/delete-property/ sram-1;
		/delete-property/ gpiote-0;
		/delete-property/ wdt-0;
		/delete-property/ i2c-0;
		/delete-property/ spi-0;
		/delete-property/ uart-0;
		/delete-property/ gpio-0;
		/delete-property/ gpio-1;
	};

	chosen {
		zephyr,ieee802154 = &ieee802154;
		/delete-property/ zephyr,flash-controller;
		zephyr,flash = &flash1;
	};

	soc {
		/delete-node/ memory@20000000;
		/delete-node/ memory@21000000;
		/delete-node/ gpiote@4100a000;
		/delete-node/ watchdog@4100b000;
		/delete-node/ mbox@41012000;
		/delete-node/ i2c@41013000;
		/delete-node/ spi@41013000;
		/delete-node/ uart@41013000;
		/delete-node/ acl@41080000;
		/delete-node/ vmc@41081000;
		/delete-node/ gpio@418c0500;
		/delete-node/ gpio@418c0800;
	};

	/delete-node/ cpus;
	/delete-node/ ipc;
	/delete-node/ sw-pwm;
};

&radio {
	/* These features are not yet supported by the RADIO model */
	/delete-property/ dfe-supported;
	/delete-property/ ble-coded-phy-supported;
};

&ieee802154 {
	status = "okay";
};

&flash1 {
	reg = <0x01000000 DT_SIZE_K(256)>;
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		storage_partition: partition@0 {
			label = "storage";
			reg = <0x00000000 DT_SIZE_K(256)>;
		};
	};
};
