feat(notifications): bitmaps create and destroy

Handle FF-A calls FFA_NOTIFICATION_BITMAP_CREATE and
FFA_NOTIFICATION_BITMAP_DESTROY.
Interfaces are to be used by the NWd (Hypervisor or single OS kernel).

Change-Id: I0d805875ae6c7f8c080bda04e9e496d9e0d79b00
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/src/api.c b/src/api.c
index 369e40b..94cd8a6 100644
--- a/src/api.c
+++ b/src/api.c
@@ -2550,3 +2550,31 @@
 
 	return (struct ffa_value){.func = FFA_SUCCESS_32};
 }
+
+struct ffa_value api_ffa_notification_bitmap_create(ffa_vm_id_t vm_id,
+						    ffa_vcpu_count_t vcpu_count,
+						    struct vcpu *current)
+{
+	if (!plat_ffa_is_notifications_create_valid(current, vm_id)) {
+		dlog_verbose("Bitmap create for NWd VM IDs only (%x).\n",
+			     vm_id);
+		return ffa_error(FFA_NOT_SUPPORTED);
+	}
+
+	return plat_ffa_notifications_bitmap_create(vm_id, vcpu_count);
+}
+
+struct ffa_value api_ffa_notification_bitmap_destroy(ffa_vm_id_t vm_id,
+						     struct vcpu *current)
+{
+	/*
+	 * Validity of use of this interface is the same as for bitmap create.
+	 */
+	if (!plat_ffa_is_notifications_create_valid(current, vm_id)) {
+		dlog_verbose("Bitmap destroy for NWd VM IDs only (%x).\n",
+			     vm_id);
+		return ffa_error(FFA_NOT_SUPPORTED);
+	}
+
+	return plat_ffa_notifications_bitmap_destroy(vm_id);
+}