/*
 * Copyright (c) 2023, ARM Limited and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

/dts-v1/;

#include <platform_def.h>

/ {
#define MODE_SEL0		(0x1)

#define SECURE_RO		0x1
#define SECURE_RW		0x3
#define SECURE_EXECUTE_RO 	0x5
#define SECURE_EXECUTE_RW 	0x7
#define NON_SECURE_RO 		0x9
#define NON_SECURE_RW 		0xB
#define NON_SECURE_EXECUTE_RO 	0xD
#define NON_SECURE_EXECUTE_RW 	0xF
	/*
	 * FF-A compatible Secure Partition Manager parses the
	 * manifest file and fetch the following booting arguments to
	 * pass on to the StandAloneMM(StMM) Secure Partition.
	 */
	compatible = "arm,ffa-manifest-1.0";

	description = "RDN2 StMM";
	ffa-version = <0x00010001>; /* 31:16 - Major, 15:0 - Minor */
	uuid = <0x378daedc 0xf06b4446 0x831440ab 0x933c87a3>;
	id = <0x8001>;
	execution-ctx-count = <1>;
	exception-level = <MODE_SEL0>; /* S-EL0 */
	execution-state = <0>; /* AArch64 */
	load-address = <0x0 0xFF200000>;
	image-size = <0x0 0x280000>;
	xlat-granule = <0>; /* 4KiB */
	boot-order = <0>;
	messaging-method = <0x3>; /* Direct request/response supported. */
	power-management-messages = <0>;
	gp-register-num = <0>;

	device-regions {
		compatible = "arm,ffa-manifest-device-regions";

		/*
		 * System registers region for access from S-EL0.
		 * Similar to PLAT_ARM_SECURE_MAP_SYSTEMREG.
		 */
		sys-regs {
			base-address = <0x0 0x0C010000>;
			pages-count = <0x10>;
			attributes = <SECURE_RW>;
		};

		rtc {
			base-address = <0x0 0x0C170000>;
			pages-count = <0x1>;
			attributes = <SECURE_RW>;
		};

		/*
		 * ARM CSS SoC Expansion Peripherals.
		 */
		soc_components {
			base-address = <0x0 0x0E000000>;
			pages-count = <0x2000>;
			attributes = <SECURE_RW>;
		};

		cluster_utility {
			base-address = <0x0 0x20000000>;
			pages-count = <0x20000>;
			attributes = <SECURE_RW>;
		};

		secure_uart {
			base-address = <0x0 0x2A410000>;
			pages-count = <0x10>;
			attributes = <SECURE_RW>;
		};

		/*
		 * Used for Secure booting.
		 */
		nor_flash2 {
			base-address = <0x10 0x54000000>;
			pages-count = <0x4000>;
			attributes = <SECURE_RW>;
		};
	};

	memory-regions {
		compatible = "arm,ffa-manifest-memory-regions";

		/*
		 * SPM Payload memory. Mapped as code region for S-EL0
		 * Similar to ARM_SP_IMAGE_MMAP macro used for defining base of
		 * the SP image.
		 */
		stmm_region {
			base-address = <0x0 0xff200000>;
			pages-count = <0x300>;
			/* StMM will remap the regions during runtime. */
			attributes = <SECURE_EXECUTE_RO>;
		};

		/*
		 * Memory shared between EL3 SPMC and S-EL0.
		 */
		rx-tx-buffers {
			description = "shared-buff";
			base-address = <0x0 0xff500000>;
			pages-count = <0x100>;
			attributes = <SECURE_RW>;
		};

		/*
		 * Memory shared between Normal world and S-EL0.
		 */
		ns_comm_buffer {
			/*
			 * Description is needed for StMM to identify
			 * ns-communication buffer.
			 */
			description = "ns-comm";
			base-address = <0x0 0xff600000>;
			pages-count = <0x30>;
			attributes = <NON_SECURE_RW>;
		};

		/*
		 * Heap used by SP to allocate memory for DMA.
		 */
		heap {
			/*
			 * Description is needed for StMM to identify
			 * heap buffer.
			 */
			description = "heap";
			base-address = <0x0 0xFF630000>;
			pages-count = <0x5D0>;
			attributes = <SECURE_RW>;
		};
	};
};
