feat(ff-a): FFA_NOTIFICATION_INFO_GET helpers

Define FF-A v1.1 call FFA_NOTIFICATION_INFO_GET wrapper, and helpers to
operate with helper return values. Update to error code list.

Change-Id: I0bbb7735912d7cabe92d645d19848e3c5d5b8d06
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/include/runtime_services/ffa_helpers.h b/include/runtime_services/ffa_helpers.h
index eba1c9e..eddd55a 100644
--- a/include/runtime_services/ffa_helpers.h
+++ b/include/runtime_services/ffa_helpers.h
@@ -93,6 +93,38 @@
 	return FFA_NOTIFICATIONS_BITMAP(val.ret4, val.ret5);
 }
 
+/*
+ * FFA_NOTIFICATION_INFO_GET is a SMC64 interface.
+ * The following macros are defined for SMC64 implementation.
+ */
+#define FFA_NOTIFICATIONS_INFO_GET_MAX_IDS		20U
+
+#define FFA_NOTIFICATIONS_INFO_GET_FLAG_MORE_PENDING	UINT64_C(0x1)
+
+#define FFA_NOTIFICATIONS_LISTS_COUNT_SHIFT		0x7U
+#define FFA_NOTIFICATIONS_LISTS_COUNT_MASK		0x1FU
+#define FFA_NOTIFICATIONS_LIST_SHIFT(l) 		(2 * (l - 1) + 12)
+#define FFA_NOTIFICATIONS_LIST_SIZE_MASK 		0x3U
+
+static inline uint32_t ffa_notifications_info_get_lists_count(
+	smc_ret_values ret)
+{
+	return (uint32_t)(ret.ret2 >> FFA_NOTIFICATIONS_LISTS_COUNT_SHIFT)
+	       & FFA_NOTIFICATIONS_LISTS_COUNT_MASK;
+}
+
+static inline uint32_t ffa_notifications_info_get_list_size(
+	smc_ret_values ret, uint32_t list)
+{
+	return (uint32_t)(ret.ret2 >> FFA_NOTIFICATIONS_LIST_SHIFT(list)) &
+	       FFA_NOTIFICATIONS_LIST_SIZE_MASK;
+}
+
+static inline bool ffa_notifications_info_get_more_pending(smc_ret_values ret)
+{
+	return (ret.ret2 & FFA_NOTIFICATIONS_INFO_GET_FLAG_MORE_PENDING) != 0U;
+}
+
 enum ffa_data_access {
 	FFA_DATA_ACCESS_NOT_SPECIFIED,
 	FFA_DATA_ACCESS_RO,
@@ -473,6 +505,7 @@
 				    ffa_notification_bitmap_t bitmap);
 smc_ret_values ffa_notification_get(ffa_id_t receiver, uint32_t vcpu_id,
 				    uint32_t flags);
+smc_ret_values ffa_notification_info_get(void);
 #endif /* __ASSEMBLY__ */
 
 #endif /* FFA_HELPERS_H */