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

#include <lib/libc/cdefs.h>

/dts-v1/;

/ {
	tb_fw-config {
		compatible = "arm,tb_fw";

		/* Disable authentication for development */
		disable_auth = <0x0>;

		/*
		 * The following two entries are placeholders for Mbed TLS
		 * heap information. The default values don't matter since
		 * they will be overwritten by BL1.
		 * In case of having shared Mbed TLS heap between BL1 and BL2,
		 * BL1 will populate these two properties with the respective
		 * info about the shared heap. This info will be available for
		 * BL2 in order to locate and re-use the heap.
		 */
		mbedtls_heap_addr = <0x0 0x0>;
		mbedtls_heap_size = <0x0>;

#if MEASURED_BOOT
		/* BL2 image hash calculated by BL1 */
		bl2_hash_data = [
			00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
#if BL2_HASH_SIZE > 32
			00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
#if BL2_HASH_SIZE > 48
			00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
#endif /* > 48 */
#endif /* > 32 */
			00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00];
#endif /* MEASURED_BOOT */
	};

	/*
	 * UUID's here are UUID RFC 4122 compliant meaning fieds are stored in
	 * network order (big endian)
	 */

#if ARM_IO_IN_DTB
	arm-io_policies {
		fip-handles {
			compatible = "arm,io-fip-handle";
			scp_bl2_uuid = "9766fd3d-89be-e849-ae5d-78a140608213";
			bl31_uuid = "47d4086d-4cfe-9846-9b95-2950cbbd5a00";
			bl32_uuid = "05d0e189-53dc-1347-8d2b-500a4b7a3e38";
			bl32_extra1_uuid = "0b70c29b-2a5a-7840-9f65-0a5682738288";
			bl32_extra2_uuid = "8ea87bb1-cfa2-3f4d-85fd-e7bba50220d9";
			bl33_uuid = "d6d0eea7-fcea-d54b-9782-9934f234b6e4";
			hw_cfg_uuid = "08b8f1d9-c9cf-9349-a962-6fbc6b7265cc";
			soc_fw_cfg_uuid = "9979814b-0376-fb46-8c8e-8d267f7859e0";
			tos_fw_cfg_uuid = "26257c1a-dbc6-7f47-8d96-c4c4b0248021";
			nt_fw_cfg_uuid = "28da9815-93e8-7e44-ac66-1aaf801550f9";
			t_key_cert_uuid = "827ee890-f860-e411-a1b4-777a21b4f94c";
			scp_fw_key_uuid = "024221a1-f860-e411-8d9b-f33c0e15a014";
			soc_fw_key_uuid = "8ab8becc-f960-e411-9ad0-eb4822d8dcf8";
			tos_fw_key_cert_uuid = "9477d603-fb60-e411-85dd-b7105b8cee04";
			nt_fw_key_cert_uuid = "8ad5832a-fb60-e411-8aaf-df30bbc49859";
			scp_fw_content_cert_uuid = "44be6f04-5e63-e411-b28b-73d8eaae9656";
			soc_fw_content_cert_uuid = "e2b20c20-5e63-e411-9ce8-abccf92bb666";
			tos_fw_content_cert_uuid = "a49f4411-5e63-e411-8728-3f05722af33d";
			nt_fw_content_cert_uuid = "8ec4c1f3-5d63-e411-a7a9-87ee40b23fa7";
			sp_content_cert_uuid = "776dfd44-8697-4c3b-91eb-c13e025a2a6f";
		};
	};
#endif /* ARM_IO_IN_DTB */

	secure-partitions {
		compatible = "arm,sp";

#ifdef ARM_BL2_SP_LIST_DTS
	#include __XSTRING(ARM_BL2_SP_LIST_DTS)
#else
#ifdef OPTEE_SP_FW_CONFIG
		op-tee {
			uuid = "486178e0-e7f8-11e3-bc5e-0002a5d5c51b";
			load-address = <0x6280000>;
		};
#else
		cactus-primary {
			uuid = "b4b5671e-4a90-4fe1-b81f-fb13dae1dacb";
			load-address = <0x7000000>;
			owner = "SiP";
		};

		cactus-secondary {
			uuid = "d1582309-f023-47b9-827c-4464f5578fc8";
			load-address = <0x7100000>;
			owner = "Plat";
		};

		cactus-tertiary {
			uuid = "79b55c73-1d8c-44b9-8593-61e1770ad8d2";
			load-address = <0x7200000>;
			owner = "Plat";
		};

		ivy {
			uuid = "eaba83d8-baaf-4eaf-8144-f7fdcbe544a7";
			load-address = <0x7600000>;
			owner = "Plat";
		};
#endif
#endif /* ARM_BL2_SP_LIST_DTS */
	};

#if COT_DESC_IN_DTB
	#include "cot_descriptors.dtsi"
#endif

};

#if COT_DESC_IN_DTB

#include "../fvp_def.h"

&trusted_nv_counter {
	reg = <TFW_NVCTR_BASE>;
};

&non_trusted_nv_counter {
	reg = <NTFW_CTR_BASE>;
};
#endif
