refactor(api): use an enum for memory permissions

Replace the `FFA_MEM_PERM` macros with an enum.

Change-Id: I54233f5ed2b5f24a47f360c63189615809087830
Signed-off-by: Karl Meakin <karl.meakin@arm.com>
diff --git a/src/api.c b/src/api.c
index d9157b8..7861a2f 100644
--- a/src/api.c
+++ b/src/api.c
@@ -4627,16 +4627,19 @@
 	CHECK((mode & (MM_MODE_NG | MM_MODE_USER)) ==
 	      (MM_MODE_NG | MM_MODE_USER));
 
-	ret = (struct ffa_value){.func = FFA_SUCCESS_32};
+	ret = (struct ffa_value){
+		.func = FFA_SUCCESS_32,
+		.arg3 = 1,
+	};
 
 	if (mode & MM_MODE_W) {
 		/* No memory should be writeable but not readable. */
 		CHECK(mode & MM_MODE_R);
-		ret.arg2 = (uint32_t)(FFA_MEM_PERM_RW);
+		ret.arg2 = FFA_MEM_PERM_RW;
 	} else if (mode & MM_MODE_R) {
-		ret.arg2 = (uint32_t)(FFA_MEM_PERM_RX);
+		ret.arg2 = FFA_MEM_PERM_RX;
 		if (!(mode & MM_MODE_X)) {
-			ret.arg2 = (uint32_t)(FFA_MEM_PERM_RO);
+			ret.arg2 = FFA_MEM_PERM_RO;
 		}
 	}
 out:
@@ -4645,7 +4648,8 @@
 }
 
 struct ffa_value api_ffa_mem_perm_set(vaddr_t base_addr, uint32_t page_count,
-				      uint32_t mem_perm, struct vcpu *current)
+				      enum ffa_mem_perm mem_perm,
+				      struct vcpu *current)
 {
 	struct vm_locked vm_locked;
 	struct ffa_value ret;
@@ -4674,8 +4678,17 @@
 		return ffa_error(FFA_INVALID_PARAMETERS);
 	}
 
-	if ((mem_perm != FFA_MEM_PERM_RW) && (mem_perm != FFA_MEM_PERM_RO) &&
-	    (mem_perm != FFA_MEM_PERM_RX)) {
+	switch (mem_perm) {
+	case FFA_MEM_PERM_RO:
+		new_mode = MM_MODE_R | MM_MODE_USER | MM_MODE_NG;
+		break;
+	case FFA_MEM_PERM_RW:
+		new_mode = MM_MODE_R | MM_MODE_W | MM_MODE_USER | MM_MODE_NG;
+		break;
+	case FFA_MEM_PERM_RX:
+		new_mode = MM_MODE_R | MM_MODE_X | MM_MODE_USER | MM_MODE_NG;
+		break;
+	default:
 		dlog_error("FFA_MEM_PERM_SET: invalid permissions %#x\n",
 			   mem_perm);
 		return ffa_error(FFA_INVALID_PARAMETERS);
@@ -4725,16 +4738,6 @@
 		goto out;
 	}
 
-	new_mode = MM_MODE_USER | MM_MODE_NG;
-
-	if (mem_perm == FFA_MEM_PERM_RW) {
-		new_mode |= MM_MODE_R | MM_MODE_W;
-	} else if (mem_perm == FFA_MEM_PERM_RX) {
-		new_mode |= MM_MODE_R | MM_MODE_X;
-	} else if (mem_perm == FFA_MEM_PERM_RO) {
-		new_mode |= MM_MODE_R;
-	}
-
 	/*
 	 * Safe to re-map memory, since we know the requested permissions are
 	 * valid, and the memory requested to be re-mapped is also valid.