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

/*
 * Default Flash planning for nRF9151dk_nrf9151.
 *
 * Zephyr build for nRF9151 with ARM TrustZone-M support,
 * implies building Secure and Non-Secure Zephyr images.
 *
 * Secure image will be placed, by default, in flash0
 * (or in slot0, if MCUboot is present).
 * Secure image will use sram0 for system memory.
 *
 * Non-Secure image will be placed in slot0_ns, and use
 * sram0_ns for system memory.
 *
 * Note that the Secure image only requires knowledge of
 * the beginning of the Non-Secure image (not its size).
 */

&slot0_partition {
	reg = <0x00010000 0x40000>;
};

&slot0_ns_partition {
	reg = <0x00050000 0x35000>;
};

&slot1_partition {
	reg = <0x00085000 0x40000>;
};

&slot1_ns_partition {
	reg = <0x000c5000 0x35000>;
};

/* Default SRAM planning when building for nRF9151 with
 * ARM TrustZone-M support
 * - Lowest 88 kB SRAM allocated to Secure image (sram0_s).
 * - 40 kB SRAM reserved for and used by the modem library
 *   (sram0_modem). This memory is Non-Secure.
 * - Upper 128 kB allocated to Non-Secure image (sram0_ns).
 *   When building with TF-M, both sram0_modem and sram0_ns
 *   are allocated to the Non-Secure image.
 */

&sram0_s {
	reg = <0x20000000 DT_SIZE_K(88)>;
};

&sram0_modem {
	reg = <0x20016000 DT_SIZE_K(40)>;
};

&sram0_ns {
	reg = <0x20020000 DT_SIZE_K(128)>;
};
