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);