summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatt Derksen <v2cibmd@us.ibm.com>2016-04-07 14:51:26 -0500
committerStephen Cprek <smcprek@us.ibm.com>2016-04-21 13:51:57 -0500
commit6d2b7d0c32bf12e354be90f0d2cd58572c88d67f (patch)
treea1e990a98ff64a8deacb8a8149aaa49262a371ed /src
parent1709ac31da9777ddff1c1b08b44d6482dba376d0 (diff)
downloadblackbird-hostboot-6d2b7d0c32bf12e354be90f0d2cd58572c88d67f.tar.gz
blackbird-hostboot-6d2b7d0c32bf12e354be90f0d2cd58572c88d67f.zip
Added platform implementations of fapi2 ring access functions.
fapi2::getRing(), fapi2::modifyRing() and fapi2::putRing(). Change-Id: I50fee8d2b04496e7ae7f0966dabdc53b5524a454 RTC:126630 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/23207 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/include/usr/fapi2/plat_hw_access.H44
-rw-r--r--src/usr/fapi2/plat_hw_access.C236
-rw-r--r--src/usr/fapi2/test/fapi2HwAccessTest.H49
-rw-r--r--src/usr/fapi2/test/p9_hwtests.C103
-rw-r--r--src/usr/fapi2/test/p9_hwtests.H20
5 files changed, 416 insertions, 36 deletions
diff --git a/src/include/usr/fapi2/plat_hw_access.H b/src/include/usr/fapi2/plat_hw_access.H
index d5e76e55c..f4c669fa8 100644
--- a/src/include/usr/fapi2/plat_hw_access.H
+++ b/src/include/usr/fapi2/plat_hw_access.H
@@ -41,6 +41,7 @@
#include <target.H>
#include <target_types.H>
#include <hw_access_def.H>
+#include <p9_ringId.H>
namespace fapi2
{
@@ -103,7 +104,6 @@ ReturnCode platGetCfamRegister(const Target<TARGET_TYPE_ALL>& i_target,
///
/// @brief Platform-level implementation called by putCfamRegister()
/// Hardware procedures writers will not call this function.
-/// @Tparam K template parameter, passed in target.
/// @param[in] i_target HW target to operate on.
/// @param[in] i_address CFAM address to write to.
/// @param[out] i_data 32-bit buffer that holds data to write into address.
@@ -117,7 +117,6 @@ ReturnCode platPutCfamRegister(const Target<TARGET_TYPE_ALL>& i_target,
///
/// @brief Platform-level implementation of modifyCfamRegister()
/// Hardware procedures writers will not call this function.
-/// @Tparam K template parameter, passed in target.
/// @param[in] i_target HW target to operate on.
/// @param[in] i_address CFAM register address to modify.
/// @param[out] i_data 32-bit buffer that holds data to modify.
@@ -129,25 +128,20 @@ ReturnCode platModifyCfamRegister(const Target<TARGET_TYPE_ALL>& i_target,
const buffer<uint32_t> i_data,
const fapi2::ChipOpModifyMode i_modifyMode);
-//@TODO RTC:126630 getRing is not yet supported
-#if 0
/// @brief Reads a ring from a chip.
-/// @tparam K template parameter, passed in target.
/// @param[in] i_target Target to operate on.
/// @param[in] i_address Ring address to read from.
/// @param[out] o_data Buffer that holds data read from HW target.
/// @param[in] i_ringMode Ring operation mode.
/// @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-template< TargetType K >
-inline ReturnCode getRing(const Target<K>& i_target,
- const scanRingId_t i_address,
- variable_buffer& o_data,
- const RingMode i_ringMode = 0);
+ReturnCode platGetRing(const Target<TARGET_TYPE_ALL>& i_target,
+ const scanRingId_t i_address,
+ variable_buffer& o_data,
+ const RingMode i_ringMode);
/// @brief Read-modify-write a ring on a chip.
-/// @tparam K template parameter, passed in target.
/// @param[in] i_target Target to operate on.
/// @param[in] i_address Ring address to modify.
/// @param[in] i_data Buffer that contains RS4 compressed ring data
@@ -155,14 +149,34 @@ inline ReturnCode getRing(const Target<K>& i_target,
/// @param[in] i_modifyMode The modify mode (or/and/xor)
/// @param[in] i_ringMode Ring operation mode.
/// @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
-template< TargetType K >
-inline ReturnCode modifyRing(const Target<K>& i_target,
+ReturnCode platModifyRing(const Target<TARGET_TYPE_ALL>& i_target,
const scanRingId_t i_address,
const variable_buffer& i_data,
const ChipOpModifyMode i_modifyMode,
- const RingMode i_ringMode = 0);
+ const RingMode i_ringMode);
+
-#endif // End if 0
+// This will be used in future Cumulus code
+/// @brief Write a ring on a chip.
+/// @param[in] i_target Target to operate on.
+/// @param[in] i_address Ring address to modify.
+/// @param[in] i_data Buffer that contains RS4 compressed ring data
+/// to be written
+/// @param[in] i_ringMode Ring operation mode.
+/// @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
+ReturnCode platPutRing(const Target<TARGET_TYPE_ALL>& i_target,
+ const scanRingId_t i_address,
+ variable_buffer& i_data,
+ const RingMode i_ringMode);
+
+/// @brief Writes a ring to a chip.
+/// @param[in] i_target Target to operate on.
+/// @param[in] i_ringID Ring ID that will identify the Ring in the image.
+/// @param[in] i_ringMode Ring operation mode.
+/// @return fapi2::ReturnCode. FAPI2_RC_SUCCESS if success, else error code.
+ReturnCode platPutRing(const Target<TARGET_TYPE_ALL>& i_target,
+ const RingID i_ringID,
+ const RingMode i_ringMode);
// --------------------------------------------------------------------------
// NOTE:
diff --git a/src/usr/fapi2/plat_hw_access.C b/src/usr/fapi2/plat_hw_access.C
index 367aea566..07e4c2a7c 100644
--- a/src/usr/fapi2/plat_hw_access.C
+++ b/src/usr/fapi2/plat_hw_access.C
@@ -39,9 +39,9 @@
#include <hwpf_fapi2_reasoncodes.H>
#include <fapi2/plat_hw_access.H>
-//@TODO-RTC:144504-Remove when the attribute shows up
-//just use an existing string type for now
-#define ATTR_FAPI_NAME_type ATTR_OPAL_MODEL_type
+#include <scan/scanif.H>
+#include <hw_access_def.H>
+
namespace fapi2
{
@@ -52,6 +52,9 @@ const uint32_t CFAM_ADDRESS_MASK = 0x1FF;
// Bits 0-6 are engine offset
const uint32_t CFAM_ENGINE_OFFSET = 0xFE00;
+// Function prototypes
+uint64_t platGetDDScanMode(const uint32_t i_ringMode);
+
//------------------------------------------------------------------------------
// HW Communication Functions to be implemented at the platform layer.
//------------------------------------------------------------------------------
@@ -616,17 +619,18 @@ ReturnCode platModifyCfamRegister(const Target<TARGET_TYPE_ALL>& i_target,
return l_rc;
}
-//@TODO RTC:126630 getRing is not yet supported
-
-#if 0
-
-/// @brief Platform-level implementation called by fapiGetRing()
+/// @brief Platform-level implementation called by getRing()
ReturnCode platGetRing(const Target<TARGET_TYPE_ALL>& i_target,
const scanRingId_t i_address,
variable_buffer& o_data,
const RingMode i_ringMode)
{
FAPI_DBG(ENTER_MRK "platGetRing");
+
+ // Note: Trace is placed here in plat code because PPE doesn't support
+ // trace in common fapi2_hw_access.H
+ bool l_traceit = platIsScanTraceEnabled();
+
ReturnCode l_rc;
errlHndl_t l_err = NULL;
@@ -634,42 +638,234 @@ ReturnCode platGetRing(const Target<TARGET_TYPE_ALL>& i_target,
TARGETING::Target* l_target =
reinterpret_cast<TARGETING::Target*>(i_target.get());
+ // Grab the name of the target
+ TARGETING::ATTR_FAPI_NAME_type l_targName = {0};
+ fapi2::toString(i_target, l_targName, sizeof(l_targName));
+
// Output buffer must be set to ring's len by user
uint64_t l_ringLen = o_data.getBitLength();
uint64_t l_flag = platGetDDScanMode(i_ringMode);
- size_t l_size = o_data.getByteLength();
+ size_t l_size = o_data.getLength<uint8_t>();
l_err = deviceRead(l_target,
- ecmdDataBufferBaseImplementationHelper::getDataPtr(&o_data),
- l_size,
- DEVICE_SCAN_ADDRESS(i_address, l_ringLen, l_flag));
+ o_data.pointer(),
+ l_size,
+ DEVICE_SCAN_ADDRESS(i_address, l_ringLen, l_flag));
if (l_err)
{
+ FAPI_ERR("platGetRing: deviceRead returns error!");
+ FAPI_ERR("fapiGetRing failed - Target %s, Addr %.16llX",
+ l_targName, i_address);
l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_err));
}
+ if (l_traceit)
+ {
+ uint64_t l_data = o_data.get<uint64_t>();
+ FAPI_SCAN("TRACE : GETRING : %s : %.16llX %.16llX",
+ l_targName,
+ i_address,
+ l_data);
+ }
+
FAPI_DBG(EXIT_MRK "platGetRing");
return l_rc;
}
-/// @brief Platform-level implementation called by fapiPutRing()
+// This will be used in future Cumulus code
+/// @brief Platform-level implementation called by putRing()
inline ReturnCode platPutRing(const Target<TARGET_TYPE_ALL>& i_target,
const scanRingId_t i_address,
variable_buffer& i_data,
const RingMode i_ringMode)
{
+ FAPI_DBG(ENTER_MRK "platPutRing");
+ ReturnCode l_rc;
+ errlHndl_t l_err = NULL;
+
+ // Note: Trace is placed here in plat code because PPE doesn't support
+ // trace in common fapi2_hw_access.H
+ bool l_traceit = platIsScanTraceEnabled();
+
+ // Extract the component pointer
+ TARGETING::Target* l_target =
+ reinterpret_cast<TARGETING::Target*>(i_target.get());
+
+ // Grab the name of the target
+ TARGETING::ATTR_FAPI_NAME_type l_targName = {0};
+ fapi2::toString(i_target, l_targName, sizeof(l_targName));
+
+ // Output buffer must be set to ring's len by user
+ uint64_t l_ringLen = i_data.getBitLength();
+ uint64_t l_flag = platGetDDScanMode(i_ringMode);
+ size_t l_size = i_data.getLength<uint8_t>();
+ l_err = deviceWrite(l_target,
+ i_data.pointer(),
+ l_size,
+ DEVICE_SCAN_ADDRESS(i_address, l_ringLen, l_flag));
+ if (l_err)
+ {
+ FAPI_ERR("platPutRing: deviceRead returns error!");
+ FAPI_ERR("fapiPutRing failed - Target %s, Addr %.16llX",
+ l_targName, i_address);
+ // Add the error log pointer as data to the ReturnCode
+ l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_err));
+ }
+
+ if (l_traceit)
+ {
+ uint64_t l_data = i_data.get<uint64_t>();
+ FAPI_SCAN("TRACE : PUTRING : %s : %.16llX %.16llX",
+ l_targName,
+ i_address,
+ l_data);
+ }
+
+ FAPI_DBG(EXIT_MRK "platPutRing");
+ return l_rc;
+}
+
+
+/// @brief Platform-level implementation called by modifyRing()
+ReturnCode platModifyRing(const Target<TARGET_TYPE_ALL>& i_target,
+ const scanRingId_t i_address,
+ const variable_buffer& i_data,
+ const ChipOpModifyMode i_modifyMode,
+ const RingMode i_ringMode)
+{
+ FAPI_DBG(ENTER_MRK "platModifyRing");
+ ReturnCode l_rc;
+ errlHndl_t l_err = NULL;
+ variable_buffer l_current_data(i_data);
+
+ // Note: Trace is placed here in plat code because PPE doesn't support
+ // trace in common fapi2_hw_access.H
+ bool l_traceit = platIsScanTraceEnabled();
+
+ // Grab the name of the target
+ TARGETING::ATTR_FAPI_NAME_type l_targName = {0};
+ fapi2::toString(i_target, l_targName, sizeof(l_targName));
+
+ do
+ {
+ // Extract the component pointer
+ TARGETING::Target* l_target =
+ reinterpret_cast<TARGETING::Target*>(i_target.get());
+
+ // --------------------
+ // Read current value
+ // --------------------
+ uint64_t l_ringLen = l_current_data.getBitLength();
+ uint64_t l_flag = platGetDDScanMode(i_ringMode);
+ size_t l_size = l_current_data.getLength<uint8_t>();
+ l_err = deviceRead(l_target,
+ l_current_data.pointer(),
+ l_size,
+ DEVICE_SCAN_ADDRESS(i_address, l_ringLen, l_flag));
+ if (l_err)
+ {
+ FAPI_ERR("platModifyRing: deviceRead returns error!");
+ FAPI_ERR("platModifyRing failed - Target %s, Addr %.16llX",
+ l_targName, i_address);
+
+ // Add the error log pointer as data to the ReturnCode
+ l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_err));
+
+ // break out if read fails
+ break;
+ }
+
+ // ----------------------
+ // Applying modification
+ // ----------------------
+ /* TODO-RTC:151261 - re-enable when variable_buffer operations supported
+ if (fapi2::CHIP_OP_MODIFY_MODE_OR == i_modifyMode)
+ {
+ l_current_data |= i_data;
+ }
+ else if (fapi2::CHIP_OP_MODIFY_MODE_AND == i_modifyMode)
+ {
+ l_current_data &= i_data;
+ }
+ else
+ {
+ l_current_data ^= i_data;
+ } */
+
+
+ // -------------------------
+ // Write back updated data
+ // -------------------------
+ l_err = deviceWrite(l_target,
+ l_current_data.pointer(),
+ l_size,
+ DEVICE_SCAN_ADDRESS(i_address, l_ringLen, l_flag));
+ if (l_err)
+ {
+ FAPI_ERR("platModifyRing: deviceWrite returns error!");
+ FAPI_ERR("platModifyRing failed - Target %s, Addr %.16llX",
+ l_targName, i_address);
+ // Add the error log pointer as data to the ReturnCode
+ l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_err));
+ break;
+ }
+
+ } while (0);
+
+ if (l_traceit)
+ {
+ uint64_t l_data = l_current_data.get<uint64_t>();
+ FAPI_SCAN("TRACE : MODIFYRING : %s : %.16llX %.16llX",
+ l_targName,
+ i_address,
+ l_data);
+ }
+ FAPI_DBG(EXIT_MRK "platModifyRing");
+ return l_rc;
}
-/// @brief Platform-level implementation called by fapiModifyRing()
-ReturnCode modifyRing(const Target<TARGET_TYPE_ALL>& i_target,
- const scanRingId_t i_address,
- variable_buffer& i_data,
- const ChipOpModifyMode i_modifyMode,
- const RingMode i_ringMode = 0)
+
+ReturnCode platPutRing(const Target<TARGET_TYPE_ALL>& i_target,
+ const RingID i_ringID,
+ const RingMode i_ringMode)
{
+ FAPI_DBG(ENTER_MRK "platPutRing with RingID");
+ ReturnCode l_rc;
+
+ // TODO-RTC:132654:Use SBE to drive scans
+
+ FAPI_DBG(EXIT_MRK "platPutRing with RingID");
+ return l_rc;
}
-#endif // End if 0
+//******************************************************************************
+// platGetDDScanMode function
+//******************************************************************************
+uint64_t platGetDDScanMode(const uint32_t i_ringMode)
+{
+ uint32_t l_scanMode = 0;
+
+ if ( ((i_ringMode & fapi2::RING_MODE_SET_PULSE_NO_OPCG_COND) ==
+ fapi2::RING_MODE_SET_PULSE_NO_OPCG_COND) ||
+ ((i_ringMode & fapi2::RING_MODE_SET_PULSE_NSL) ==
+ fapi2::RING_MODE_SET_PULSE_NSL) ||
+ ((i_ringMode & fapi2::RING_MODE_SET_PULSE_SL) ==
+ fapi2::RING_MODE_SET_PULSE_SL) ||
+ ((i_ringMode & fapi2::RING_MODE_SET_PULSE_ALL) ==
+ fapi2::RING_MODE_SET_PULSE_ALL) )
+ {
+ l_scanMode |= SCAN::SET_PULSE;
+ }
+
+ // Header Check
+ if ((i_ringMode & fapi2::RING_MODE_NO_HEADER_CHECK) ==
+ fapi2::RING_MODE_NO_HEADER_CHECK )
+ {
+ l_scanMode |= SCAN::NO_HEADER_CHECK;
+ }
+
+ return l_scanMode;
+}
// --------------------------------------------------------------------------
// NOTE:
diff --git a/src/usr/fapi2/test/fapi2HwAccessTest.H b/src/usr/fapi2/test/fapi2HwAccessTest.H
index 626992fc3..8d7422f7f 100644
--- a/src/usr/fapi2/test/fapi2HwAccessTest.H
+++ b/src/usr/fapi2/test/fapi2HwAccessTest.H
@@ -157,6 +157,53 @@ void test_fapi2HwAccess()
delete l_errl; // delete unexpected error log so we dont get
// a false negative on the next case (future?)
}
+
+ numTests++;
+ FAPI_INVOKE_HWP(l_errl, p9_ringtest_getring_fail, fapi2_procTarget);
+ if(l_errl != NULL)
+ {
+ delete l_errl; // delete expected error log
+ }
+ else
+ {
+ TS_FAIL("No error from p9_ringtest_getring_fail !!");
+ numFails++;
+ }
+ numTests++;
+ FAPI_INVOKE_HWP(l_errl, p9_ringtest_modring_fail, fapi2_procTarget);
+ if(l_errl != NULL)
+ {
+ delete l_errl; // delete expected error log
+ }
+ else
+ {
+ TS_FAIL("No error from p9_ringtest_modring_fail!!");
+ numFails++;
+ }
+
+#if 0 // TODO-RTC:151428 - need simics support for these to pass
+ numTests++;
+ FAPI_INVOKE_HWP(l_errl, p9_ringtest_getring_pass, fapi2_procTarget);
+ if (l_errl)
+ {
+ TS_FAIL("Error from p9_ringtest_getring_pass!!");
+ numFails++;
+ errlCommit(l_errl,FAPI2_COMP_ID);
+ delete l_errl; // delete unexpected error log so we dont get
+ // a false negative on the next case
+ }
+ numTests++;
+ FAPI_INVOKE_HWP(l_errl, p9_ringtest_modring_pass, fapi2_procTarget);
+ if (l_errl)
+ {
+ TS_FAIL("Error from p9_ringtest_modring_pass!!");
+ numFails++;
+ errlCommit(l_errl,FAPI2_COMP_ID);
+ delete l_errl; // delete unexpected error log so we dont get
+ // a false negative on the next case
+ }
+#endif
+
}while(0);
FAPI_INF("fapi2HwAccessTest Test Complete. %d/%d fails", numFails , numTests);
@@ -165,4 +212,4 @@ void test_fapi2HwAccess()
};
-#endif // End __FAPI2_HWACCESSTEST_H \ No newline at end of file
+#endif // End __FAPI2_HWACCESSTEST_H
diff --git a/src/usr/fapi2/test/p9_hwtests.C b/src/usr/fapi2/test/p9_hwtests.C
index 2f066aa4e..c5e0322db 100644
--- a/src/usr/fapi2/test/p9_hwtests.C
+++ b/src/usr/fapi2/test/p9_hwtests.C
@@ -29,6 +29,7 @@
//-----------------------------------------------------------------------------
#include <fapi2.H>
+#include <fapi2_hw_access.H>
fapi2::ReturnCode p9_scomtest_getscom_fail(
@@ -91,6 +92,7 @@ fapi2::ReturnCode p9_cfamtest_getcfam_fail(
}
+
fapi2::ReturnCode p9_cfamtest_putcfam_fail(
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
{
@@ -111,6 +113,7 @@ fapi2::ReturnCode p9_cfamtest_putcfam_fail(
}
+
fapi2::ReturnCode p9_scomtest_getscom_pass(
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
{
@@ -190,3 +193,103 @@ fapi2::ReturnCode p9_cfamtest_putcfam_pass(
return fapi2::current_err;
}
+
+
+fapi2::ReturnCode p9_ringtest_getring_fail(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
+{
+ fapi2::variable_buffer l_ringdata;
+
+ FAPI_INF("Entering p9_ringtest_getring_fail...");
+
+ FAPI_INF("Do getring on proc target");
+ FAPI_TRY(fapi2::getRing(i_target,
+ (scanRingId_t)(0x22334455),
+ l_ringdata,
+ fapi2::RING_MODE_HEADER_CHECK));
+
+ fapi_try_exit:
+
+ FAPI_INF("Exiting p9_ringtest_getring_fail...");
+
+ return fapi2::current_err;
+
+}
+
+
+fapi2::ReturnCode p9_ringtest_modring_fail(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
+{
+ fapi2::variable_buffer l_ringdata;
+ l_ringdata.resize(861);
+
+ FAPI_INF("Entering p9_ringtest_modring_fail...");
+
+ FAPI_INF("Do modifyRing on proc target");
+ FAPI_TRY(fapi2::modifyRing(i_target,
+ (scanRingId_t)0x22334455,
+ l_ringdata,
+ fapi2::CHIP_OP_MODIFY_MODE_OR,
+ fapi2::RING_MODE_HEADER_CHECK));
+
+ fapi_try_exit:
+
+ FAPI_INF("Exiting p9_ringtest_modring_fail...");
+
+ return fapi2::current_err;
+
+}
+
+
+fapi2::ReturnCode p9_ringtest_getring_pass(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
+{
+ fapi2::variable_buffer l_ringdata;
+ l_ringdata.resize(861);
+
+ FAPI_INF("Entering p9_ringtest_getring_pass...");
+
+ FAPI_INF("Do getring on proc target");
+ FAPI_TRY(fapi2::getRing(i_target,
+ (scanRingId_t)0x00030088,
+ l_ringdata,
+ fapi2::RING_MODE_HEADER_CHECK));
+
+ fapi_try_exit:
+
+ FAPI_INF("Exiting p9_ringtest_getring_pass...");
+
+ return fapi2::current_err;
+
+}
+
+
+fapi2::ReturnCode p9_ringtest_modring_pass(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
+{
+ uint32_t bit32_array[861];
+ uint32_t length;
+
+ for (length = 0; length < 861; length++)
+ {
+ bit32_array[length] = length;
+ }
+
+ fapi2::variable_buffer l_ringdata(bit32_array, length, 32 * 861);
+
+ FAPI_INF("Entering p9_ringtest_modring_pass...");
+
+ FAPI_INF("Do putring on proc target");
+ FAPI_TRY(fapi2::modifyRing(i_target,
+ (scanRingId_t)0x00030088,
+ l_ringdata,
+ fapi2::CHIP_OP_MODIFY_MODE_OR,
+ fapi2::RING_MODE_HEADER_CHECK));
+
+ fapi_try_exit:
+
+ FAPI_INF("Exiting p9_ringtest_modring_pass...");
+
+ return fapi2::current_err;
+
+}
diff --git a/src/usr/fapi2/test/p9_hwtests.H b/src/usr/fapi2/test/p9_hwtests.H
index 9143e2a64..40ba3d06b 100644
--- a/src/usr/fapi2/test/p9_hwtests.H
+++ b/src/usr/fapi2/test/p9_hwtests.H
@@ -48,6 +48,15 @@ fapi2::ReturnCode p9_cfamtest_putcfam_fail(
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);
+fapi2::ReturnCode p9_ringtest_getring_fail(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);
+
+
+fapi2::ReturnCode p9_ringtest_modring_fail(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);
+
+
+
fapi2::ReturnCode p9_scomtest_getscom_pass(
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);
@@ -64,4 +73,15 @@ fapi2::ReturnCode p9_cfamtest_putcfam_pass(
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);
+/////////////
+//
+// TODO-RTC:151428 - need simics support for these ring functions to pass
+//
+fapi2::ReturnCode p9_ringtest_getring_pass(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);
+
+fapi2::ReturnCode p9_ringtest_modring_pass(
+ fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target);
+/////////////
+
#endif
OpenPOWER on IntegriCloud