diff options
author | Benjamin Weisenbeck <bweisenb@us.ibm.com> | 2017-11-09 13:17:32 -0600 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2017-11-27 20:05:00 -0500 |
commit | 68e2f99dbe29c9fd178a7413acb4968db48713e7 (patch) | |
tree | 6af61dc0c436e01f61805d0d9374c798709a98aa /src | |
parent | c2c5d0e657f6229b9d248fde3195708e303adce1 (diff) | |
download | talos-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')
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 |