refactor(realm): define PCIe helpers
This patch refactors the existing PCIe and DOE
helpers to define generic helpers to make them
reusable across more tests.
Signed-off-by: Soby Mathew <soby.mathew@arm.com>
Change-Id: I56a9f5c59715c7916f3f737ed6d3af94b0e3679f
diff --git a/tftf/tests/doe_tests/doe_helpers.c b/tftf/tests/doe_tests/doe_helpers.c
index 911fbd0..75f63b6 100644
--- a/tftf/tests/doe_tests/doe_helpers.c
+++ b/tftf/tests/doe_tests/doe_helpers.c
@@ -13,17 +13,6 @@
#include <pcie_doe.h>
#include <spdm.h>
-void pcie_init(void)
-{
- static bool is_init;
-
- /* Create PCIe table and enumeration */
- if (!is_init) {
- pcie_create_info_table();
- is_init = true;
- }
-}
-
/*
* @brief Returns the BDF Table pointer
*
@@ -36,39 +25,6 @@
return pcie_get_bdf_table();
}
-int find_doe_device(uint32_t *bdf_ptr, uint32_t *cap_base_ptr)
-{
- pcie_device_bdf_table_t *bdf_table_ptr = pcie_get_bdf_table();
- uint32_t num_bdf = bdf_table_ptr->num_entries;
-
- INFO("PCI BDF table entries: %u\n", num_bdf);
-
- /* If no entries in BDF table return error */
- if (num_bdf == 0) {
- ERROR("No BDFs entries found\n");
- return -ENODEV;
- }
-
- INFO("PCI BDF table 0x%lx\n", (uintptr_t)bdf_table_ptr);
-
- while (num_bdf-- != 0) {
- uint32_t bdf = bdf_table_ptr->device[num_bdf].bdf;
- uint32_t status, doe_cap_base;
-
- /* Check for DOE capability */
- status = pcie_find_capability(bdf, PCIE_ECAP, DOE_CAP_ID, &doe_cap_base);
- if (status == PCIE_SUCCESS) {
- INFO("PCIe DOE capability: bdf 0x%x cap_base 0x%x\n", bdf, doe_cap_base);
- *bdf_ptr = bdf;
- *cap_base_ptr = doe_cap_base;
- return 0;
- }
- }
-
- ERROR("No PCIe DOE capability found\n");
- return -ENODEV;
-}
-
int get_spdm_version(uint32_t bdf, uint32_t doe_cap_base)
{
uint32_t response[SPDM_GET_VERS_RESP_LEN], resp_len;
@@ -131,19 +87,14 @@
{
pcie_doe_disc_req_t request = { 0, };
pcie_doe_disc_resp_t response;
- uint32_t resp_len;
+ size_t resp_len;
int ret;
do {
- ret = pcie_doe_send_req(DOE_HEADER_0, bdf, doe_cap_base,
- (uint32_t *)&request,
- sizeof(pcie_doe_disc_req_t));
- if (ret != 0) {
- return ret;
- }
+ ret = pcie_doe_communicate(DOE_HEADER_0, bdf, doe_cap_base,
+ (void *)&request, sizeof(pcie_doe_disc_req_t),
+ (void *)&response, &resp_len);
- ret = pcie_doe_recv_resp(bdf, doe_cap_base,
- (uint32_t *)&response, &resp_len);
if (ret != 0) {
return ret;
}
diff --git a/tftf/tests/doe_tests/doe_helpers.h b/tftf/tests/doe_tests/doe_helpers.h
index d0fc5c8..8d48278 100644
--- a/tftf/tests/doe_tests/doe_helpers.h
+++ b/tftf/tests/doe_tests/doe_helpers.h
@@ -10,7 +10,6 @@
#include <stdint.h>
-void pcie_init(void);
int find_doe_device(uint32_t *bdf_ptr, uint32_t *cap_base_ptr);
int doe_discovery(uint32_t bdf, uint32_t doe_cap_base);
int get_spdm_version(uint32_t bdf, uint32_t doe_cap_base);
diff --git a/tftf/tests/doe_tests/test_doe.c b/tftf/tests/doe_tests/test_doe.c
index cc852fa..84b30d5 100644
--- a/tftf/tests/doe_tests/test_doe.c
+++ b/tftf/tests/doe_tests/test_doe.c
@@ -5,30 +5,15 @@
*/
#include "doe_helpers.h"
-
+#include <pcie_doe.h>
#include <test_helpers.h>
-#define SKIP_TEST_IF_DOE_NOT_SUPPORTED() \
- do { \
- /* Test PCIe DOE only for RME */ \
- if (!get_armv9_2_feat_rme_support()) { \
- tftf_testcase_printf("FEAT_RME not supported\n"); \
- return TEST_RESULT_SKIPPED; \
- } \
- \
- pcie_init(); \
- if (find_doe_device(&bdf, &doe_cap_base) != 0) { \
- tftf_testcase_printf("PCIe DOE not supported\n"); \
- return TEST_RESULT_SKIPPED; \
- } \
- } while (false)
-
test_result_t doe_discovery_test(void)
{
uint32_t bdf, doe_cap_base;
int ret;
- SKIP_TEST_IF_DOE_NOT_SUPPORTED();
+ SKIP_TEST_IF_DOE_NOT_SUPPORTED(bdf, doe_cap_base);
ret = doe_discovery(bdf, doe_cap_base);
if (ret != 0) {
@@ -43,7 +28,7 @@
uint32_t bdf, doe_cap_base;
int ret;
- SKIP_TEST_IF_DOE_NOT_SUPPORTED();
+ SKIP_TEST_IF_DOE_NOT_SUPPORTED(bdf, doe_cap_base);
ret = get_spdm_version(bdf, doe_cap_base);
if (ret != 0) {