Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Added clock group parameter in api to identify the higher/lower order bus width of XBUS-X0 & X1 - Added AccessorHwpFuncs Change-Id: Id00219cc437e4949f2bcbdb239d46d9e1db36ed0 Original-Change-Id: Ieb9b1072ed73b26b321ec16f0742271f48aff810 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/10587 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/48244 Tested-by: Daniel M. Crowell <dcrowell@us.ibm.com>
- Loading branch information
1 parent
865ed6c
commit 5f50367
Showing
1 changed file
with
276 additions
and
0 deletions.
There are no files selected for viewing
276 changes: 276 additions & 0 deletions
276
src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,276 @@ | ||
/* IBM_PROLOG_BEGIN_TAG */ | ||
/* This is an automatically generated prolog. */ | ||
/* */ | ||
/* $Source: src/import/chips/p9/procedures/hwp/io/p9_io_erepairAccessorHwpFuncs.H $ */ | ||
/* */ | ||
/* OpenPOWER HostBoot Project */ | ||
/* */ | ||
/* Contributors Listed Below - COPYRIGHT 2015,2017 */ | ||
/* [+] International Business Machines Corp. */ | ||
/* */ | ||
/* */ | ||
/* Licensed under the Apache License, Version 2.0 (the "License"); */ | ||
/* you may not use this file except in compliance with the License. */ | ||
/* You may obtain a copy of the License at */ | ||
/* */ | ||
/* http://www.apache.org/licenses/LICENSE-2.0 */ | ||
/* */ | ||
/* Unless required by applicable law or agreed to in writing, software */ | ||
/* distributed under the License is distributed on an "AS IS" BASIS, */ | ||
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ | ||
/* implied. See the License for the specific language governing */ | ||
/* permissions and limitations under the License. */ | ||
/* */ | ||
/* IBM_PROLOG_END_TAG */ | ||
/// | ||
/// @file p9_io_erepairAccessorHwpFuncs.H | ||
/// @brief FW Team utility functions that access fabric and memory eRepair data. | ||
/// | ||
//---------------------------------------------------------------------------- | ||
|
||
|
||
#ifndef P9_IO_EREPAIRACCESSORHWPFUNCS_H_ | ||
#define P9_IO_EREPAIRACCESSORHWPFUNCS_H_ | ||
|
||
#include <fapi2.H> | ||
#include <algorithm> | ||
|
||
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); | ||
|
||
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 | ||
* This function gets the eRepair data from both the Field VPD | ||
* and the Manufacturing VPD. | ||
* | ||
* @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target | ||
* @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..] | ||
* @param[out] o_txFailLanes Reference to a Vector that will contain the fail | ||
* lanes read from the VPD for Drive side | ||
* @param[out] o_rxFailLanes Reference to a Vector that will contain the fail | ||
* lanes read from the VPD for Receive side | ||
* @return ReturnCode | ||
* | ||
*/ | ||
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, | ||
std::vector<uint8_t>& o_txFailLanes, | ||
std::vector<uint8_t>& o_rxFailLanes); | ||
|
||
/** | ||
* @brief FW Team Utility function that gets eRepair data | ||
* | ||
* This is a wrapper function for the Accessor HWP which reads failed lane | ||
* numbers from the Field VPD | ||
* | ||
* @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target | ||
* @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..] | ||
* @param[out] o_txFailLanes Reference to a Vector that will contain the fail | ||
* lanes read from the Field VPD for Drive side | ||
* @param[out] o_rxFailLanes Reference to a Vector that will contain the fail | ||
* lanes read from the Field VPD for Receive side | ||
* @return ReturnCode | ||
* | ||
*/ | ||
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 uint8_t i_clkGroup, | ||
std::vector<uint8_t>& o_txFailLanes, | ||
std::vector<uint8_t>& o_rxFailLanes); | ||
|
||
/** | ||
* @brief FW Team Utility function that gets eRepair data | ||
* | ||
* This is a wrapper function for the Accessor HWP which reads failed lane | ||
* numbers from the Manufacturing VPD | ||
* | ||
* @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target | ||
* @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..] | ||
* @param[out] o_txFailLanes Reference to a Vector that will contain the fail | ||
* lanes read from the Mnfg VPD for Drive side | ||
* @param[out] o_rxFailLanes Reference to a Vector that will contain the fail | ||
* lanes read from the Mnfg VPD for Receive side | ||
* @return ReturnCode | ||
* | ||
*/ | ||
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 uint8_t i_clkGroup, | ||
std::vector<uint8_t>& o_txFailLanes, | ||
std::vector<uint8_t>& o_rxFailLanes); | ||
|
||
/** | ||
* @brief FW Team Utility function that sets eRepair data in the VPD. | ||
* This functions sets the eRepair data to either the Field VPD | ||
* or the Manufacturing VPD depending on whether the IPL was done | ||
* in normal mode or Manufacturing mode. | ||
* It writes eRepair data to the VPD of both the endpoint targets | ||
* passed as arguments. | ||
* | ||
* @param[in] i_txEndp_target Reference to X-Bus or O-Bus or MCS or memBuf | ||
* Target. This is the peer target of | ||
* i_rxEndp_target | ||
* @param[in] i_rxEndp_target Reference to X-Bus or O-Bus or MCS or memBuf | ||
* Target. This is the target on which the | ||
* badlanes were found | ||
* @param[in] i_rxFailLanes Vector that will contain the fail lanes | ||
* to be written to VPD for Receive side | ||
* @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..] | ||
* @param[out] o_thresholdExceed If TRUE, indicates that the eRepair threshold | ||
* has exceeded, FALSE otherwise. | ||
* | ||
* @return ReturnCode | ||
*/ | ||
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 std::vector<uint8_t>& i_rxFailLanes, | ||
const uint8_t i_clkGroup, | ||
bool& o_thresholdExceed); | ||
|
||
/** | ||
* @brief FW Team Utility function that sets eRepair data in Field VPD | ||
* | ||
* This is a wrapper function for the Accessor HWP which writes failed lane | ||
* numbers to the Field VPD | ||
* | ||
* @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target | ||
* @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..] | ||
* @param[in] i_txFailLanes Vector that will contain the fail lane | ||
* to be written to Field VPD for Drive side | ||
* @param[in] i_rxFailLanes Vector that will contain the fail lanes | ||
* to be written to Field VPD for Receive side | ||
* | ||
* @return ReturnCode | ||
*/ | ||
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 uint8_t i_clkGroup, | ||
const std::vector<uint8_t>& i_txFailLanes, | ||
const std::vector<uint8_t>& i_rxFailLanes); | ||
|
||
/** | ||
* @brief FW Team Utility function that sets eRepair data in Manufacturing VPD | ||
* | ||
* This is a wrapper function for the Accessor HWP which writes failed lane | ||
* numbers to the Manufacturing VPD | ||
* | ||
* @param[in] i_endp_target Reference to X-Bus or O-Bus or MCS or memBuf Target | ||
* @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..] | ||
* @param[in] i_txFailLanes Vector that will contain the fail lane | ||
* to be written to Mnfg VPD for Drive side | ||
* @param[in] i_rxFailLanes Vector that will contain the fail lanes | ||
* to be written to Mnfg VPD for Receive side | ||
* | ||
* @return ReturnCode | ||
*/ | ||
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 uint8_t i_clkGroup, | ||
const std::vector<uint8_t>& i_txFailLanes, | ||
const std::vector<uint8_t>& i_rxFailLanes); | ||
|
||
/** | ||
* @brief Function which retrieves the lanes that need to be restored for the | ||
* given end point targets | ||
* | ||
* This function is called by the iStep dispatcher during the Restore Repair | ||
* iStep for Fabric buses and DMI buses. The caller need to make sure that the | ||
* first and fourth arguments are the endpoint targets of a Fabric bus or | ||
* DMI bus. | ||
* It calls the wrapper functions of Accessor HWP to read the fail lane data | ||
* recorded in the VPD on both the ends and verifies that there are matching | ||
* records on both the ends. If matching fail lanes are not found, the | ||
* corresponding fail lane data is invalidated using the wrapper Accessor HWP | ||
* that writes data to the VPD. | ||
* | ||
* @param [in] i_endp1_target Reference to X-Bus or O-Bus or MCS Target | ||
* @param [in] i_endp2_target Reference to X-Bus or O-Bus or MCS Target | ||
* @param[in] i_clkGroup Specifies clock group 0:[XOA, X1A,..] 1:[X0B, X1B,..] | ||
* @param [out] o_endp1_txFaillanes Reference to vector that will have the | ||
* fail lane numbers that need to be restored | ||
* for the Tx side of the target passed | ||
* as first param | ||
* @param [out] o_endp1_rxFaillanes Reference to vector that will have the | ||
* fail lane numbers that need to be restored | ||
* for the Rx side of the target passed | ||
* as first param | ||
* @param [out] o_endp2_txFaillanes Reference to vector that will have the | ||
* fail lane numbers that need to be restored | ||
* for the Tx side of the target passed | ||
* as fourth param | ||
* @param [out] o_endp2_rxFaillanes Reference to vector that will have the | ||
* fail lane numbers that need to be restored | ||
* for the Rx side of the target passed | ||
* as fourth param | ||
* | ||
* @return ReturnCode | ||
* | ||
*/ | ||
|
||
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 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); | ||
|
||
#endif |