summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBenjamin Weisenbeck <bweisenb@us.ibm.com>2017-11-09 13:17:32 -0600
committerChristian R. Geddes <crgeddes@us.ibm.com>2017-11-27 20:05:00 -0500
commit68e2f99dbe29c9fd178a7413acb4968db48713e7 (patch)
tree6af61dc0c436e01f61805d0d9374c798709a98aa /src
parentc2c5d0e657f6229b9d248fde3195708e303adce1 (diff)
downloadtalos-hostboot-68e2f99dbe29c9fd178a7413acb4968db48713e7.tar.gz
talos-hostboot-68e2f99dbe29c9fd178a7413acb4968db48713e7.zip
erepair VPD access bug fixes
Fixed Expected size of VPD buffer for nimbus. Added a TargetType template argument to interfaces instead of using compound target types for fapi targets, so that type check conditions will work as intended. Change-Id: Ice35d4380924232e1b6f722bd48d0c2e81dd4e1e CQ: SW408663 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49497 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49504 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C180
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H95
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H13
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.C74
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.H69
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.C78
-rwxr-xr-xsrc/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.H69
7 files changed, 214 insertions, 364 deletions
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C
index 682313e21..6fce652b5 100755
--- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.C
@@ -54,17 +54,10 @@ using namespace fapi2;
*
* @return ReturnCode
*/
+template<fapi2::TargetType K, fapi2::TargetType J>
fapi2::ReturnCode mnfgCheckFieldVPD(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp1_target,
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp2_target,
+ const fapi2::Target < K >& i_endp1_target,
+ const fapi2::Target < J >& i_endp2_target,
const uint8_t i_clkGroup);
@@ -96,17 +89,10 @@ fapi2::ReturnCode mnfgCheckFieldVPD(
*
* @return ReturnCode
*/
+template<fapi2::TargetType K, fapi2::TargetType J>
fapi2::ReturnCode getVerifiedRepairLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp1_target,
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp2_target,
+ const fapi2::Target < K >& i_endp1_target,
+ const fapi2::Target < J >& i_endp2_target,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_endp1_txFaillanes,
std::vector<uint8_t>& o_endp1_rxFaillanes,
@@ -149,12 +135,9 @@ void invalidateNonMatchingFailLanes(std::vector<uint8_t>& io_endp1_txFaillanes,
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode geteRepairThreshold(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const bool i_mfgModeIPL,
uint8_t& o_threshold);
@@ -180,12 +163,9 @@ fapi2::ReturnCode geteRepairThreshold(
*
* @return void
*/
+template<fapi2::TargetType K>
void getCornerTestingLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_tgtType,
+ const fapi2::Target < K >& i_tgtType,
std::vector<uint8_t>& o_endp1_txFailLanes,
std::vector<uint8_t>& o_endp1_rxFailLanes,
std::vector<uint8_t>& o_endp2_txFailLanes,
@@ -212,17 +192,10 @@ void combineFieldandMnfgLanes(std::vector<uint8_t>& i_mnfgFaillanes,
/***** Function definitions *****/
+template<fapi2::TargetType K, fapi2::TargetType J>
fapi2::ReturnCode erepairGetRestoreLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp1_target,
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp2_target,
+ const fapi2::Target < K >& i_endp1_target,
+ const fapi2::Target < J >& i_endp2_target,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_endp1_txFaillanes,
std::vector<uint8_t>& o_endp1_rxFaillanes,
@@ -512,6 +485,16 @@ fapi_try_exit:
return fapi2::current_err;
}
+template ReturnCode erepairGetRestoreLanes<TARGET_TYPE_XBUS, TARGET_TYPE_XBUS>(
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS >& i_endp1_target,
+ const fapi2::Target < fapi2::TARGET_TYPE_XBUS >& i_endp2_target,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_endp1_txFaillanes,
+ std::vector<uint8_t>& o_endp1_rxFaillanes,
+ std::vector<uint8_t>& o_endp2_txFaillanes,
+ std::vector<uint8_t>& o_endp2_rxFaillanes);
+
+
void combineFieldandMnfgLanes(std::vector<uint8_t>& i_mnfgFaillanes,
std::vector<uint8_t>& i_fieldFaillanes,
std::vector<uint8_t>& o_allFaillanes)
@@ -539,12 +522,9 @@ void combineFieldandMnfgLanes(std::vector<uint8_t>& i_mnfgFaillanes,
}
+template<fapi2::TargetType K>
void getCornerTestingLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_tgtType,
+ const fapi2::Target < K >& i_tgtType,
std::vector<uint8_t>& o_endp1_txFaillanes,
std::vector<uint8_t>& o_endp1_rxFaillanes,
std::vector<uint8_t>& o_endp2_txFaillanes,
@@ -639,12 +619,9 @@ fapi_try_exit:
return;
}
+template<fapi2::TargetType K>
fapi2::ReturnCode geteRepairThreshold(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const bool i_mfgModeIPL,
uint8_t& o_threshold)
{
@@ -722,17 +699,10 @@ fapi_try_exit:
return fapi2::current_err;
}
+template<fapi2::TargetType K, fapi2::TargetType J>
fapi2::ReturnCode mnfgCheckFieldVPD(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp1_target,
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp2_target,
+ const fapi2::Target < K >& i_endp1_target,
+ const fapi2::Target < J >& i_endp2_target,
const uint8_t i_clkGroup)
{
fapi2::current_err = fapi2::FAPI2_RC_SUCCESS;
@@ -794,17 +764,10 @@ fapi_try_exit:
return fapi2::current_err;
}
+template<fapi2::TargetType K, fapi2::TargetType J>
fapi2::ReturnCode getVerifiedRepairLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp1_target,
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp2_target,
+ const fapi2::Target < K >& i_endp1_target,
+ const fapi2::Target < J >& i_endp2_target,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_endp1_txFaillanes,
std::vector<uint8_t>& o_endp1_rxFaillanes,
@@ -814,14 +777,10 @@ fapi2::ReturnCode getVerifiedRepairLanes(
{
fapi2::current_err = fapi2::FAPI2_RC_SUCCESS;
- getLanes_t l_getLanes = NULL;
- setLanes_t l_setLanes = NULL;
+ getLanes_t<K> l_getLanes = NULL;
+ setLanes_t<K> l_setLanes = NULL;
- fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > l_target[2] = {i_endp1_target, i_endp2_target};
+ fapi2::Target < K > l_target[2] = {i_endp1_target, i_endp2_target};
bool l_invalidFails_inTx_OfTgt[2] = {false, false};
bool l_invalidFails_inRx_OfTgt[2] = {false, false};
uint8_t l_tgtIndx = 0;
@@ -1020,12 +979,9 @@ void invalidateNonMatchingFailLanes(std::vector<uint8_t>& io_endp1_txFaillanes,
}
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairGetFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
std::vector<uint8_t>& o_rxFailLanes)
@@ -1071,12 +1027,16 @@ fapi_try_exit:
return fapi2::current_err;
}
+template fapi2::ReturnCode erepairGetFailedLanes<TARGET_TYPE_XBUS>(
+ const fapi2::Target < TARGET_TYPE_XBUS >& i_endp_target,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_txFailLanes,
+ std::vector<uint8_t>& o_rxFailLanes);
+
+
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairGetFieldFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
std::vector<uint8_t>& o_rxFailLanes)
@@ -1100,12 +1060,9 @@ fapi_try_exit:
}
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairGetMnfgFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
std::vector<uint8_t>& o_rxFailLanes)
@@ -1128,17 +1085,10 @@ fapi_try_exit:
return fapi2::current_err;
}
+template<fapi2::TargetType K, fapi2::TargetType J>
fapi2::ReturnCode erepairSetFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_txEndp_target,
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_rxEndp_target,
+ const fapi2::Target < K >& i_txEndp_target,
+ const fapi2::Target < J >& i_rxEndp_target,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_rxFailLanes,
bool& o_thresholdExceed)
@@ -1147,8 +1097,8 @@ fapi2::ReturnCode erepairSetFailedLanes(
uint64_t l_allMnfgFlags = 0;
bool l_mnfgModeIPL = false;
uint8_t l_threshold = 0;
- setLanes_t l_setLanes = NULL;
- getLanes_t l_getLanes = NULL;
+ setLanes_t<K> l_setLanes = NULL;
+ getLanes_t<K> l_getLanes = NULL;
std::vector<uint8_t> l_txFaillanes;
std::vector<uint8_t> l_rxFaillanes;
std::vector<uint8_t> l_emptyVector;
@@ -1273,12 +1223,17 @@ fapi_try_exit:
return fapi2::current_err;
}
+template ReturnCode erepairSetFailedLanes<TARGET_TYPE_XBUS, TARGET_TYPE_XBUS>(
+ const fapi2::Target < TARGET_TYPE_XBUS >& i_txEndp_target,
+ const fapi2::Target < TARGET_TYPE_XBUS >& i_rxEndp_target,
+ const uint8_t i_clkGroup,
+ const std::vector<uint8_t>& i_rxFailLanes,
+ bool& o_thresholdExceed);
+
+
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairSetFieldFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_txFailLanes,
const std::vector<uint8_t>& i_rxFailLanes)
@@ -1299,12 +1254,9 @@ fapi_try_exit:
return fapi2::current_err;
}
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairSetMnfgFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_txFailLanes,
const std::vector<uint8_t>& i_rxFailLanes)
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H
index 271e0818f..246857af3 100755
--- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H
@@ -37,25 +37,20 @@
const uint8_t EREPAIR_MAX_CENTAUR_PER_MCS = 1;
-typedef fapi2::ReturnCode (*getLanes_t)(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_tgtHandle,
- const uint8_t i_clkGroup,
- std::vector<uint8_t>& o_txFailLanes,
- std::vector<uint8_t>& o_rxFailLanes);
+template<fapi2::TargetType K>
+using getLanes_t = fapi2::ReturnCode (*)(
+ const fapi2::Target < K >& i_tgtHandle,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_txFailLanes,
+ std::vector<uint8_t>& o_rxFailLanes);
+
+template<fapi2::TargetType K>
+using setLanes_t = fapi2::ReturnCode (*)(
+ const fapi2::Target < K >& i_tgtHandle,
+ const uint8_t i_clkGroup,
+ const std::vector<uint8_t>& o_txFailLanes,
+ const std::vector<uint8_t>& o_rxFailLanes);
-typedef fapi2::ReturnCode (*setLanes_t)(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_tgtHandle,
- const uint8_t i_clkGroup,
- const std::vector<uint8_t>& i_txFailLanes,
- const std::vector<uint8_t>& i_rxFailLanes);
/**
* @brief FW Team Utility function that gets eRepair data from the VPD
@@ -71,13 +66,10 @@ typedef fapi2::ReturnCode (*setLanes_t)(
* @return ReturnCode
*
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairGetFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
- const uint8_t i_clkGroup,
+ const fapi2::Target < K >& i_endp_target,
+ const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
std::vector<uint8_t>& o_rxFailLanes);
@@ -96,12 +88,9 @@ fapi2::ReturnCode erepairGetFailedLanes(
* @return ReturnCode
*
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairGetFieldFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
std::vector<uint8_t>& o_rxFailLanes);
@@ -121,12 +110,9 @@ fapi2::ReturnCode erepairGetFieldFailedLanes(
* @return ReturnCode
*
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairGetMnfgFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
std::vector<uint8_t>& o_rxFailLanes);
@@ -153,17 +139,10 @@ fapi2::ReturnCode erepairGetMnfgFailedLanes(
*
* @return ReturnCode
*/
+template<fapi2::TargetType K, fapi2::TargetType J>
fapi2::ReturnCode erepairSetFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_txEndp_target,
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_rxEndp_target,
+ const fapi2::Target < K >& i_txEndp_target,
+ const fapi2::Target < J >& i_rxEndp_target,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_rxFailLanes,
bool& o_thresholdExceed);
@@ -183,12 +162,9 @@ fapi2::ReturnCode erepairSetFailedLanes(
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairSetFieldFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_txFailLanes,
const std::vector<uint8_t>& i_rxFailLanes);
@@ -208,12 +184,9 @@ fapi2::ReturnCode erepairSetFieldFailedLanes(
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode erepairSetMnfgFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp_target,
+ const fapi2::Target < K >& i_endp_target,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_txFailLanes,
const std::vector<uint8_t>& i_rxFailLanes);
@@ -255,18 +228,10 @@ fapi2::ReturnCode erepairSetMnfgFailedLanes(
* @return ReturnCode
*
*/
-
+template<fapi2::TargetType K, fapi2::TargetType J>
fapi2::ReturnCode erepairGetRestoreLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp1_target,
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_endp2_target,
+ const fapi2::Target < K >& i_endp1_target,
+ const fapi2::Target < J >& i_endp2_target,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_endp1_txFaillanes,
std::vector<uint8_t>& o_endp1_rxFaillanes,
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H
index 108d3d2f4..024beab69 100755
--- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairConsts.H
@@ -85,15 +85,10 @@ const uint8_t DMIBUS_MAXSPARES_IN_HW = 2;
const uint8_t DMIBUS_UPSTREAM_MAX_LANE_WIDTH = 21;
const uint8_t DMIBUS_DNSTREAM_MAX_LANE_WIDTH = 14;
-#ifdef P9_CUMULUS
- const uint32_t EREPAIR_P9_MODULE_VPD_FIELD_SIZE = 0x10E; // 270 bytes
- const uint32_t EREPAIR_P9_MODULE_VPD_MNFG_SIZE = 0x10E; // 270 bytes
- const uint32_t EREPAIR_MEM_FIELD_VPD_SIZE_PER_CENTAUR = 0x36; // 54 bytes
- const uint32_t EREPAIR_MEM_MNFG_VPD_SIZE_PER_CENTAUR = 0x36; // 54 bytes
-#else // Nimbus
- const uint32_t EREPAIR_P9_MODULE_VPD_FIELD_SIZE = 0x66; // 102 bytes
- const uint32_t EREPAIR_P9_MODULE_VPD_MNFG_SIZE = 0x66; // 102 bytes
-#endif
+const uint32_t EREPAIR_P9_MODULE_VPD_FIELD_SIZE = 0x10E; // 270 bytes
+const uint32_t EREPAIR_P9_MODULE_VPD_MNFG_SIZE = 0x10E; // 270 bytes
+const uint32_t EREPAIR_MEM_FIELD_VPD_SIZE_PER_CENTAUR = 0x36; // 54 bytes
+const uint32_t EREPAIR_MEM_MNFG_VPD_SIZE_PER_CENTAUR = 0x36; // 54 bytes
//TODO:
enum busType
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.C b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.C
index 68938da65..8f89f58ec 100755
--- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.C
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.C
@@ -64,12 +64,9 @@ using namespace fapi2;
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode retrieveRepairData(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
erepairVpdType i_vpdType,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
@@ -94,12 +91,9 @@ fapi2::ReturnCode retrieveRepairData(
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode determineRepairLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
uint8_t* i_buf,
uint32_t i_bufSz,
const uint8_t i_clkGroup,
@@ -115,12 +109,9 @@ fapi2::ReturnCode determineRepairLanes(
* or ENUM_ATTR_EFF_CUSTOM_DIMM_YES
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode getDimmType(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
uint8_t& o_customDimm);
@@ -140,12 +131,9 @@ fapi2::ReturnCode getDimmType(
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode decodeFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
uint8_t i_busInterface,
uint32_t i_failBit,
std::vector<uint8_t>& o_FailLanes);
@@ -154,12 +142,9 @@ fapi2::ReturnCode decodeFailedLanes(
* Accessor HWP
*****************************************************************************/
+template<fapi2::TargetType K>
fapi2::ReturnCode p9_io_erepairGetFailedLanesHwp(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
erepairVpdType i_vpdType,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
@@ -186,12 +171,16 @@ fapi_try_exit:
return fapi2::current_err;
}
+template ReturnCode p9_io_erepairGetFailedLanesHwp<TARGET_TYPE_XBUS>(
+ const fapi2::Target <TARGET_TYPE_XBUS>& i_target,
+ erepairVpdType i_vpdType,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_txFailLanes,
+ std::vector<uint8_t>& o_rxFailLanes);
+
+template<fapi2::TargetType K>
fapi2::ReturnCode retrieveRepairData(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
erepairVpdType i_vpdType,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
@@ -273,7 +262,7 @@ fapi2::ReturnCode retrieveRepairData(
else
{
// Determine the Processor target
- l_procTarget = i_target.getParent<fapi2::TARGET_TYPE_PROC_CHIP>();
+ l_procTarget = i_target.template getParent<TARGET_TYPE_PROC_CHIP>();
fapi2::MvpdRecord l_vpdRecord = fapi2::MVPD_RECORD_VWML;
@@ -344,12 +333,9 @@ fapi_try_exit:
return fapi2::current_err;
}
+template<fapi2::TargetType K>
fapi2::ReturnCode determineRepairLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
uint8_t* i_buf,
uint32_t i_bufSz,
const uint8_t i_clkGroup,
@@ -379,7 +365,7 @@ fapi2::ReturnCode determineRepairLanes(
l_tgtType = i_target.getType();
// Get the parent chip target
- l_chipTarget = i_target.getParent<fapi2::TARGET_TYPE_PROC_CHIP>();
+ l_chipTarget = i_target.template getParent<TARGET_TYPE_PROC_CHIP>();
// Get the chip position
uint32_t l_chipPosition;
@@ -593,12 +579,9 @@ fapi_try_exit:
return fapi2::current_err;
}
+template<fapi2::TargetType K>
fapi2::ReturnCode getDimmType(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
uint8_t& o_customDimm)
{
fapi2::ReturnCode l_rc = fapi2::FAPI2_RC_SUCCESS;
@@ -644,12 +627,9 @@ fapi_try_exit:
return l_rc;
}
+template<fapi2::TargetType K>
fapi2::ReturnCode decodeFailedLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
uint8_t i_busInterface,
uint32_t i_failBit,
std::vector<uint8_t>& o_FailLanes)
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.H b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.H
index c63575379..b79f8aff8 100755
--- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.H
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairGetFailedLanesHwp.H
@@ -42,49 +42,40 @@
#include <p9_io_erepairConsts.H>
-typedef fapi2::ReturnCode (*p9_io_erepairGetFailedLanesHwp_FP_t)(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+template<fapi2::TargetType K>
+using p9_io_erepairGetFailedLanesHwp_FP_t = fapi2::ReturnCode (*)(
+ const fapi2::Target < K >& i_target,
+ EREPAIR::erepairVpdType i_vpdType,
+ const uint8_t i_clkGroup,
+ std::vector<uint8_t>& o_txFailLanes,
+ std::vector<uint8_t>& o_rxFailLanes);
+
+
+/**
+ * @brief FW Team HWP that retrieves the eRepair fail lanes.
+ * It retrieves the eRepair data from the P9 MVPD and the Centaur FRU
+ * VPD sections depending on the passed target type. It then parses the
+ * eRepair data to determine the fail lane numbers on the sub-interfaces
+ * (Tx and Rx) of the passed bus target.
+ *
+ * @param[in] i_tgtHandle Reference to X-Bus or A-Bus or MCS or memBuf Target
+ * @param[in] i_vpdType Specifies which VPD (MNFG or Field) to access.
+ * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
+ * @param[o] o_txFailLanes Reference to a vector that will hold eRepair fail
+ * lane numbers of the Tx sub-interface.
+ * @param[o] o_rxFailLanes Reference to a vector that will hold eRepair fail
+ * lane numbers of the Rx sub-interface.
+ *
+ * @return ReturnCode
+ *
+ */
+template<fapi2::TargetType K>
+fapi2::ReturnCode p9_io_erepairGetFailedLanesHwp(
+ const fapi2::Target < K >& i_target,
EREPAIR::erepairVpdType i_vpdType,
const uint8_t i_clkGroup,
std::vector<uint8_t>& o_txFailLanes,
std::vector<uint8_t>& o_rxFailLanes);
-extern "C"
-{
-
- /**
- * @brief FW Team HWP that retrieves the eRepair fail lanes.
- * It retrieves the eRepair data from the P9 MVPD and the Centaur FRU
- * VPD sections depending on the passed target type. It then parses the
- * eRepair data to determine the fail lane numbers on the sub-interfaces
- * (Tx and Rx) of the passed bus target.
- *
- * @param[in] i_tgtHandle Reference to X-Bus or A-Bus or MCS or memBuf Target
- * @param[in] i_vpdType Specifies which VPD (MNFG or Field) to access.
- * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
- * @param[o] o_txFailLanes Reference to a vector that will hold eRepair fail
- * lane numbers of the Tx sub-interface.
- * @param[o] o_rxFailLanes Reference to a vector that will hold eRepair fail
- * lane numbers of the Rx sub-interface.
- *
- * @return ReturnCode
- *
- */
- fapi2::ReturnCode p9_io_erepairGetFailedLanesHwp(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
- EREPAIR::erepairVpdType i_vpdType,
- const uint8_t i_clkGroup,
- std::vector<uint8_t>& o_txFailLanes,
- std::vector<uint8_t>& o_rxFailLanes);
-
-}// end of extern C
#endif
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.C b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.C
index 1632ddb3c..7b32a9766 100755
--- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.C
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.C
@@ -61,12 +61,9 @@ using namespace fapi2;
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode writeRepairDataToVPD(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
erepairVpdType i_vpdType,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_txFailLanes,
@@ -88,12 +85,9 @@ fapi2::ReturnCode writeRepairDataToVPD(
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode writeRepairLanesToBuf(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
const std::vector<uint8_t>& i_txFailLanes,
const std::vector<uint8_t>& i_rxFailLanes,
const uint32_t i_bufSz,
@@ -116,12 +110,9 @@ fapi2::ReturnCode writeRepairLanesToBuf(
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode updateRepairLanesToBuf(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
const interfaceType i_interface,
const uint32_t i_bufSz,
const uint8_t i_clkGroup,
@@ -143,12 +134,9 @@ fapi2::ReturnCode updateRepairLanesToBuf(
*
* @return ReturnCode
*/
+template<fapi2::TargetType K>
fapi2::ReturnCode gatherRepairLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
uint8_t i_busInterface,
uint8_t i_repairLane,
uint32_t* o_failBit);
@@ -158,12 +146,9 @@ fapi2::ReturnCode gatherRepairLanes(
* Accessor HWP
*****************************************************************************/
+template<fapi2::TargetType K>
fapi2::ReturnCode p9_io_erepairSetFailedLanesHwp(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
erepairVpdType i_vpdType,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_txFailLanes,
@@ -174,7 +159,7 @@ fapi2::ReturnCode p9_io_erepairSetFailedLanesHwp(
FAPI_INF(">> erepairSetFailedLanesHwp");
- FAPI_ASSERT(( (i_txFailLanes.size() != 0) && (i_rxFailLanes.size() != 0) ),
+ FAPI_ASSERT(( (i_txFailLanes.size() != 0) || (i_rxFailLanes.size() != 0) ),
fapi2::P9_EREPAIR_NO_RX_TX_FAILED_LANES_ERR()
.set_TX_LANE(i_txFailLanes.size()).set_RX_LANE(i_rxFailLanes.size()),
"ERROR: No Tx/Rx fail lanes were provided");
@@ -192,13 +177,16 @@ fapi_try_exit:
return fapi2::current_err;
}
+template ReturnCode p9_io_erepairSetFailedLanesHwp<TARGET_TYPE_XBUS>(
+ const fapi2::Target <TARGET_TYPE_XBUS>& i_target,
+ erepairVpdType i_vpdType,
+ const uint8_t i_clkGroup,
+ const std::vector<uint8_t>& o_txFailLanes,
+ const std::vector<uint8_t>& o_rxFailLanes);
+template<fapi2::TargetType K>
fapi2::ReturnCode writeRepairDataToVPD(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
erepairVpdType i_vpdType,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_txFailLanes,
@@ -328,7 +316,7 @@ fapi2::ReturnCode writeRepairDataToVPD(
else
{
// Determine the Processor target
- l_procTarget = i_target.getParent<fapi2::TARGET_TYPE_PROC_CHIP>();
+ l_procTarget = i_target.template getParent<TARGET_TYPE_PROC_CHIP>();
fapi2::MvpdRecord l_vpdRecord = MVPD_RECORD_VWML;
@@ -409,13 +397,9 @@ fapi_try_exit:
}
+template<fapi2::TargetType K>
fapi2::ReturnCode writeRepairLanesToBuf(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
-
+ const fapi2::Target < K >& i_target,
const std::vector<uint8_t>& i_txFailLanes,
const std::vector<uint8_t>& i_rxFailLanes,
const uint32_t i_bufSz,
@@ -458,13 +442,9 @@ fapi_try_exit:
return fapi2::current_err;
}
+template<fapi2::TargetType K>
fapi2::ReturnCode updateRepairLanesToBuf(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
-
+ const fapi2::Target < K >& i_target,
const interfaceType i_interface,
const uint32_t i_bufSz,
const uint8_t i_clkGroup,
@@ -538,7 +518,7 @@ fapi2::ReturnCode updateRepairLanesToBuf(
// Get the chip target
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> l_chipTarget;
- l_chipTarget = i_target.getParent<fapi2::TARGET_TYPE_PROC_CHIP>();
+ l_chipTarget = i_target.template getParent<TARGET_TYPE_PROC_CHIP>();
// Get the chip number
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_POS,
@@ -1095,13 +1075,9 @@ fapi_try_exit:
return fapi2::current_err;
}
-
+template<fapi2::TargetType K>
fapi2::ReturnCode gatherRepairLanes(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+ const fapi2::Target < K >& i_target,
uint8_t i_busInterface,
uint8_t i_repairLane,
uint32_t* o_failBit)
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.H b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.H
index 45c58f10d..ba51290cd 100755
--- a/src/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.H
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_erepairSetFailedLanesHwp.H
@@ -41,48 +41,39 @@
#include <fapi2.H>
#include <p9_io_erepairConsts.H>
-typedef fapi2::ReturnCode (*p9_io_erepairSetFailedLanesHwp_FP_t)(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
+template<fapi2::TargetType K>
+using p9_io_erepairSetFailedLanesHwp_FP_t = fapi2::ReturnCode (*)(
+ const fapi2::Target < K >& i_target,
+ EREPAIR::erepairVpdType i_vpdType,
+ const uint8_t i_clkGroup,
+ const std::vector<uint8_t>& i_txFailLanes,
+ const std::vector<uint8_t>& i_rxFailLanes);
+
+
+/**
+ * @brief FW Team HWP that writes the eRepair fail lanes to the VPD.
+ * The fail lanes will be written to either the P9 MVPD or the
+ * Centaur FRU VPD depending on the passed target type.
+ *
+ * @param[in] i_target Reference to X-Bus or O-Bus or MCS or memBuf Target
+ * @param[in] i_vpdType Specifies which VPD (MNFG or Field) to access.
+ * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
+ * @param[in] i_txFailLanes Reference to a vector that has the Tx side
+ * (of i_tgtHandle) fail lane numbers that need
+ * to be written to the VPD
+ * @param[in] i_rxFailLanes Reference to a vector that has the Rx side
+ * (of i_tgtHandle) fail lane numbers that need
+ * to be written to the VPD
+ *
+ * @return ReturnCode
+ *
+ */
+template<fapi2::TargetType K>
+fapi2::ReturnCode p9_io_erepairSetFailedLanesHwp(
+ const fapi2::Target < K >& i_target,
EREPAIR::erepairVpdType i_vpdType,
const uint8_t i_clkGroup,
const std::vector<uint8_t>& i_txFailLanes,
const std::vector<uint8_t>& i_rxFailLanes);
-extern "C"
-{
-
- /**
- * @brief FW Team HWP that writes the eRepair fail lanes to the VPD.
- * The fail lanes will be written to either the P9 MVPD or the
- * Centaur FRU VPD depending on the passed target type.
- *
- * @param[in] i_target Reference to X-Bus or O-Bus or MCS or memBuf Target
- * @param[in] i_vpdType Specifies which VPD (MNFG or Field) to access.
- * @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..]
- * @param[in] i_txFailLanes Reference to a vector that has the Tx side
- * (of i_tgtHandle) fail lane numbers that need
- * to be written to the VPD
- * @param[in] i_rxFailLanes Reference to a vector that has the Rx side
- * (of i_tgtHandle) fail lane numbers that need
- * to be written to the VPD
- *
- * @return ReturnCode
- *
- */
- fapi2::ReturnCode p9_io_erepairSetFailedLanesHwp(
- const fapi2::Target < fapi2::TARGET_TYPE_XBUS |
- fapi2::TARGET_TYPE_OBUS |
- fapi2::TARGET_TYPE_MEMBUF_CHIP |
- fapi2::TARGET_TYPE_MCS_CHIPLET |
- fapi2::TARGET_TYPE_MCS > &i_target,
- EREPAIR::erepairVpdType i_vpdType,
- const uint8_t i_clkGroup,
- const std::vector<uint8_t>& i_txFailLanes,
- const std::vector<uint8_t>& i_rxFailLanes);
-}// end of extern C
-
#endif
OpenPOWER on IntegriCloud