Add FF-A v1.1 format FFA_PARTITION_INFO_GET support
FF-A v1.0 and v1.1 functions are conditionally compiled based on the
selected FF-A version macro value.
Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: I03fbdaa14202134066e693f74103a2a3be765a10
diff --git a/components/messaging/ffa/libsp/ffa.c b/components/messaging/ffa/libsp/ffa.c
index 1afe44d..89fd8fe 100644
--- a/components/messaging/ffa/libsp/ffa.c
+++ b/components/messaging/ffa/libsp/ffa.c
@@ -173,6 +173,7 @@
return FFA_OK;
}
+#if CFG_FFA_VERSION == FFA_VERSION_1_0
ffa_result ffa_partition_info_get(const struct ffa_uuid *uuid, uint32_t *count)
{
struct ffa_params result = {0};
@@ -193,6 +194,31 @@
*count = result.a2;
return FFA_OK;
}
+#elif CFG_FFA_VERSION >= FFA_VERSION_1_1
+ffa_result ffa_partition_info_get(const struct ffa_uuid *uuid, uint32_t flags, uint32_t *count,
+ uint32_t *size)
+{
+ struct ffa_params result = {0};
+ uint32_t abi_uuid[4] = {0};
+
+ ffa_uuid_to_abi_format(uuid, abi_uuid);
+
+ ffa_svc(FFA_PARTITION_INFO_GET, abi_uuid[0], abi_uuid[1], abi_uuid[2],
+ abi_uuid[3], flags, FFA_PARAM_MBZ, FFA_PARAM_MBZ,
+ &result);
+
+ if (result.a0 == FFA_ERROR) {
+ *count = UINT32_C(0);
+ *size = UINT32_C(0);
+ return ffa_get_errorcode(&result);
+ }
+
+ assert(result.a0 == FFA_SUCCESS_32);
+ *count = result.a2;
+ *size = result.a3;
+ return FFA_OK;
+}
+#endif /* CFG_FFA_VERSION */
ffa_result ffa_id_get(uint16_t *id)
{