feat(rme): add dev granules tests

Add tests for RMI_GRANULE_DELEGATE and
RMI_GRANULE_UNDELEGATE commands using
device granules.
Add plat_get_dev_region() function to
retrieve platform PCIe memory region info.

Change-Id: Ie59361dd28e11db348c30b033c156de044aa0ffc
Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
diff --git a/plat/arm/fvp/fvp_def.h b/plat/arm/fvp/fvp_def.h
index 3609b86..4b5bd59 100644
--- a/plat/arm/fvp/fvp_def.h
+++ b/plat/arm/fvp/fvp_def.h
@@ -55,9 +55,12 @@
 #define PCIE_MEM_1_BASE			0x50000000
 #define PCIE_MEM_1_SIZE			SZ_256M
 
-/* PCIe memory region #2 256GB */
+/*
+ * PCIe memory region #2 size is 256GB, but only 3GB
+ * are currently supported by GPT library
+ */
 #define PCIE_MEM_2_BASE			0x4000000000
-#define PCIE_MEM_2_SIZE			(SZ_1G * 256)
+#define PCIE_MEM_2_SIZE			(SZ_1G * 3U)
 
 /*******************************************************************************
  * GIC-400 & interrupt handling related constants
diff --git a/plat/arm/fvp/fvp_pcie.c b/plat/arm/fvp/fvp_pcie.c
index c43e42d..38bdf39 100644
--- a/plat/arm/fvp/fvp_pcie.c
+++ b/plat/arm/fvp/fvp_pcie.c
@@ -1,9 +1,10 @@
 /*
- * Copyright (c) 2024, Arm Limited. All rights reserved.
+ * Copyright (c) 2024-2025, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
+#include <assert.h>
 #include <pcie.h>
 
 #include <platform.h>
@@ -25,3 +26,32 @@
 {
 	return &fvp_pcie_cfg;
 }
+
+/*
+ * Retrieve platform PCIe memory region (Base Platform RevC only)
+ */
+int plat_get_dev_region(uint64_t *base, size_t *size,
+			uint32_t type, uint32_t idx)
+{
+#ifdef __aarch64__
+	assert((base != NULL) && (size != NULL));
+
+	if (type == DEV_MEM_NON_COHERENT) {
+		switch (idx) {
+		case 0U:
+			/* PCIe memory region 1 */
+			*base = PCIE_MEM_1_BASE;
+			*size = PCIE_MEM_1_SIZE;
+			return 0;
+		case 1U:
+			/* PCIe memory region 2 */
+			*base = PCIE_MEM_2_BASE;
+			*size = PCIE_MEM_2_SIZE;
+			return 0;
+		default:
+			break;
+		}
+	}
+#endif
+	return -1;
+}
diff --git a/plat/arm/fvp/plat_setup.c b/plat/arm/fvp/plat_setup.c
index 69cb0a1..f09bf59 100644
--- a/plat/arm/fvp/plat_setup.c
+++ b/plat/arm/fvp/plat_setup.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018-2024, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2025, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -36,6 +36,10 @@
 	MAP_REGION_FLAT(FLASH_BASE, FLASH_SIZE, MT_DEVICE | MT_RW | MT_NS),
 #endif
 	MAP_REGION_FLAT(PCIE_CONFIG_BASE, PCIE_CONFIG_SIZE, MT_DEVICE | MT_RW | MT_NS),
+#ifdef __aarch64__
+	MAP_REGION_FLAT(PCIE_MEM_1_BASE, PCIE_MEM_1_SIZE, MT_DEVICE | MT_RW | MT_NS),
+	MAP_REGION_FLAT(PCIE_MEM_2_BASE, PCIE_MEM_2_SIZE, MT_DEVICE | MT_RW | MT_NS),
+#endif
 	MAP_REGION_FLAT(DRAM_BASE, TFTF_BASE - DRAM_BASE, MT_MEMORY | MT_RW | MT_NS),
 	{0}
 };
diff --git a/plat/arm/fvp/platform.mk b/plat/arm/fvp/platform.mk
index ee30721..42df3f7 100644
--- a/plat/arm/fvp/platform.mk
+++ b/plat/arm/fvp/platform.mk
@@ -81,7 +81,7 @@
 $(eval $(call add_define,TFTF_DEFINES,FVP_MAX_PE_PER_CPU))
 
 # Default PA size for FVP platform
-PA_SIZE := 34
+PA_SIZE := 39
 
 $(eval $(call add_define,CACTUS_DEFINES,PA_SIZE))
 $(eval $(call add_define,IVY_DEFINES,PA_SIZE))
diff --git a/plat/common/plat_common.c b/plat/common/plat_common.c
index da58579..c06ad13 100644
--- a/plat/common/plat_common.c
+++ b/plat/common/plat_common.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018-2024, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2025, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -26,6 +26,7 @@
 #pragma weak plat_get_prot_regions
 #pragma weak plat_pcie_get_info_table
 #pragma weak plat_get_invalid_addr
+#pragma weak plat_get_dev_region
 
 #if IMAGE_TFTF
 
@@ -160,3 +161,9 @@
 {
 	return (uintptr_t)0x0;
 }
+
+int plat_get_dev_region(uint64_t *dev_base, size_t *dev_size,
+			uint32_t dev_type, uint32_t dev_idx)
+{
+	return -1;
+}