Correctly report supported SPCI functions.

Bug: 132420445
Change-Id: I654cc2ee45b79d19826c42e2e19108ab6797495c
diff --git a/src/api.c b/src/api.c
index 988e5f6..857f75c 100644
--- a/src/api.c
+++ b/src/api.c
@@ -1437,13 +1437,24 @@
 	switch (function_id) {
 	case SPCI_ERROR_32:
 	case SPCI_SUCCESS_32:
-	case SPCI_ID_GET_32:
-	case SPCI_YIELD_32:
+	case SPCI_INTERRUPT_32:
 	case SPCI_VERSION_32:
 	case SPCI_FEATURES_32:
-	case SPCI_MSG_SEND_32:
+	case SPCI_RX_RELEASE_32:
+	case SPCI_RXTX_MAP_64:
+	case SPCI_ID_GET_32:
 	case SPCI_MSG_POLL_32:
 	case SPCI_MSG_WAIT_32:
+	case SPCI_YIELD_32:
+	case SPCI_RUN_32:
+	case SPCI_MSG_SEND_32:
+	case SPCI_MEM_DONATE_32:
+	case SPCI_MEM_LEND_32:
+	case SPCI_MEM_SHARE_32:
+	case SPCI_MEM_RETRIEVE_REQ_32:
+	case SPCI_MEM_RETRIEVE_RESP_32:
+	case SPCI_MEM_RELINQUISH_32:
+	case SPCI_MEM_RECLAIM_32:
 		return (struct spci_value){.func = SPCI_SUCCESS_32};
 	default:
 		return spci_error(SPCI_NOT_SUPPORTED);
diff --git a/test/vmapi/primary_only/primary_only.c b/test/vmapi/primary_only/primary_only.c
index e5cf198..1be94a9 100644
--- a/test/vmapi/primary_only/primary_only.c
+++ b/test/vmapi/primary_only/primary_only.c
@@ -234,21 +234,24 @@
 	ret = spci_features(SPCI_SUCCESS_32);
 	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
 
+	ret = spci_features(SPCI_INTERRUPT_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
 	ret = spci_features(SPCI_VERSION_32);
 	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
 
 	ret = spci_features(SPCI_FEATURES_32);
 	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
 
+	ret = spci_features(SPCI_RX_RELEASE_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_RXTX_MAP_64);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
 	ret = spci_features(SPCI_ID_GET_32);
 	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
 
-	ret = spci_features(SPCI_YIELD_32);
-	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
-
-	ret = spci_features(SPCI_MSG_SEND_32);
-	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
-
 	ret = spci_features(SPCI_MSG_POLL_32);
 	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
 
@@ -257,6 +260,33 @@
 
 	ret = spci_features(SPCI_YIELD_32);
 	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_RUN_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_MSG_SEND_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_MEM_DONATE_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_MEM_LEND_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_MEM_SHARE_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_MEM_RETRIEVE_REQ_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_MEM_RETRIEVE_RESP_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_MEM_RELINQUISH_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
+
+	ret = spci_features(SPCI_MEM_RECLAIM_32);
+	EXPECT_EQ(ret.func, SPCI_SUCCESS_32);
 }
 
 /**
@@ -273,24 +303,12 @@
 	ret = spci_features(0x84000000);
 	EXPECT_SPCI_ERROR(ret, SPCI_NOT_SUPPORTED);
 
-	ret = spci_features(SPCI_INTERRUPT_32);
-	EXPECT_SPCI_ERROR(ret, SPCI_NOT_SUPPORTED);
-
-	ret = spci_features(SPCI_RX_RELEASE_32);
-	EXPECT_SPCI_ERROR(ret, SPCI_NOT_SUPPORTED);
-
-	ret = spci_features(SPCI_RXTX_MAP_32);
-	EXPECT_SPCI_ERROR(ret, SPCI_NOT_SUPPORTED);
-
 	ret = spci_features(SPCI_RXTX_UNMAP_32);
 	EXPECT_SPCI_ERROR(ret, SPCI_NOT_SUPPORTED);
 
 	ret = spci_features(SPCI_PARTITION_INFO_GET_32);
 	EXPECT_SPCI_ERROR(ret, SPCI_NOT_SUPPORTED);
 
-	ret = spci_features(SPCI_RUN_32);
-	EXPECT_SPCI_ERROR(ret, SPCI_NOT_SUPPORTED);
-
 	ret = spci_features(SPCI_MSG_SEND_DIRECT_RESP_32);
 	EXPECT_SPCI_ERROR(ret, SPCI_NOT_SUPPORTED);