feat(notifications): get notifications from SPs

Handling the call FFA_NOTIFICATION_GET to retrieve pending notifications
from SPs:
- SPMC retrieves the pending notifications from the partition's bitmap
field;
- Hypervisor forwards the call to SPMC, analyzes the returned value
and populates its return to the VM.
Hypervisor case useful to test notifications full signaling flow from
NWd.

Change-Id: Icda45d0bca025a023c75ec2ceecf15d06c2456a0
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/inc/hf/arch/plat/ffa.h b/inc/hf/arch/plat/ffa.h
index 8a072f8..85487df 100644
--- a/inc/hf/arch/plat/ffa.h
+++ b/inc/hf/arch/plat/ffa.h
@@ -45,6 +45,11 @@
 bool plat_ffa_is_notification_get_valid(struct vcpu *current,
 					ffa_vm_id_t receiver_id);
 
+bool plat_ffa_notifications_get_from_sp(struct vm_locked receiver_locked,
+					ffa_vcpu_index_t vcpu_id,
+					ffa_notifications_bitmap_t *from_sp,
+					struct ffa_value *ret);
+
 bool plat_ffa_notifications_get_call(ffa_vm_id_t receiver_id, uint32_t vcpu_id,
 				     uint32_t flags, struct ffa_value *ret);
 
diff --git a/inc/vmapi/hf/ffa.h b/inc/vmapi/hf/ffa.h
index 5198be6..dda1001 100644
--- a/inc/vmapi/hf/ffa.h
+++ b/inc/vmapi/hf/ffa.h
@@ -417,6 +417,18 @@
 	return (ffa_notifications_bitmap_t)hi << 32U | lo;
 }
 
+static inline ffa_notifications_bitmap_t ffa_notification_get_from_sp(
+	struct ffa_value val)
+{
+	return ffa_notifications_bitmap((uint32_t)val.arg2, (uint32_t)val.arg3);
+}
+
+static inline ffa_notifications_bitmap_t ffa_notification_get_from_vm(
+	struct ffa_value val)
+{
+	return ffa_notifications_bitmap((uint32_t)val.arg4, (uint32_t)val.arg5);
+}
+
 /**
  * Flags used in calls to FFA_NOTIFICATION_GET interface.
  */