summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Steffen <cwsteffen@us.ibm.com>2015-11-18 15:44:54 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-04-06 09:53:51 -0400
commite58549dbf784843c87f24a1a25bcc6d546fcf0fb (patch)
treee18b483bcad693bad6bbfc5b32475897eeca7f4c
parentc04eaa1d663c1e6d6877835c1c285a3a22e112a4 (diff)
downloadtalos-hostboot-e58549dbf784843c87f24a1a25bcc6d546fcf0fb.tar.gz
talos-hostboot-e58549dbf784843c87f24a1a25bcc6d546fcf0fb.zip
P9 I/O Read Erepair Level 2
Change-Id: I44bf4876db1eb564729957dc137a38146131d722 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22183 Tested-by: Jenkins Server Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38892 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.C50
-rw-r--r--src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.H10
2 files changed, 48 insertions, 12 deletions
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.C b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.C
index 10992eb35..cbae9d67d 100644
--- a/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.C
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.C
@@ -30,7 +30,7 @@
/// *HWP HWP Backup Owner : Gary Peterson <garyp@us.ibm.com>
/// *HWP FW Owner : Jamie Knight <rjknight@us.ibm.com>
/// *HWP Team : IO
-/// *HWP Level : 1
+/// *HWP Level : 2
/// *HWP Consumed by : FSP:HB
///----------------------------------------------------------------------------
///
@@ -50,6 +50,8 @@
// Includes
// ----------------------------------------------------------------------------
#include "p9_io_xbus_read_erepair.H"
+#include "p9_io_gcr.H"
+#include "p9_io_regs.H"
// ----------------------------------------------------------------------------
// Procedure Function
@@ -58,22 +60,54 @@
/**
* @brief A HWP that runs Read eRepair. This procedure reads the current bad
- * lanes and passes by reference the lane numbers in a vector
- * @param[in] i_target Reference to Target
- * @param[out] o_bad_lanes Vector of bad lanes
+ * lanes and passes by reference the lane numbers in a vector.
+ * @param[in] i_target Reference to Target
+ * @param[in] i_clock_group Clock Group of Target
+ * @param[out] o_bad_lanes Vector of bad lanes
* @retval ReturnCode
*/
fapi2::ReturnCode
p9_io_xbus_read_erepair(const fapi2::Target < fapi2::TARGET_TYPE_XBUS >& i_target,
+ const uint8_t& i_clock_group,
std::vector< uint8_t >& o_bad_lanes)
{
FAPI_IMP("Entering...");
- fapi2::ReturnCode rc = 0;
-#if 0
+
+ fapi2::ReturnCode rc = fapi2::FAPI2_RC_SUCCESS;
+ const uint16_t BAD_LANES_3PLUS = 3;
+ const uint16_t BAD_LANES_2 = 2;
+ const uint16_t BAD_LANES_1 = 1;
+ const uint16_t BAD_LANES_0 = 0;
+ Register < EDIP_RX_GLBSM_STAT9_E_PG > rx_bad_lanes_reg;
+
+ o_bad_lanes.clear();
+
+ FAPI_TRY(rx_bad_lanes_reg.read(i_target, i_clock_group), "Reading Bad Lane Code Failed.");
+ FAPI_DBG( "Bad Lane Code: %d", rx_bad_lanes_reg.get<EDIP_RX_BAD_LANE_CODE>() );
+
+ switch( rx_bad_lanes_reg.get<EDIP_RX_BAD_LANE_CODE>() )
+ {
+ case BAD_LANES_3PLUS:
+ FAPI_DBG( "Bad Lane: Three or more bad lanes found." );
+
+ case BAD_LANES_2:
+ FAPI_DBG( "Bad Lane 2: %d", rx_bad_lanes_reg.get<EDIP_RX_BAD_LANE2>() );
+ o_bad_lanes.push_back( (uint8_t)rx_bad_lanes_reg.get<EDIP_RX_BAD_LANE2>() );
+
+ case BAD_LANES_1:
+ FAPI_DBG( "Bad Lane 1: %d", rx_bad_lanes_reg.get<EDIP_RX_BAD_LANE1>() );
+ o_bad_lanes.push_back( (uint8_t)rx_bad_lanes_reg.get<EDIP_RX_BAD_LANE1>() );
+ break;
+
+ case BAD_LANES_0:
+ FAPI_DBG( "No Bad Lanes" );
+
+ default:
+ break;
+ }
fapi_try_exit:
-#endif
FAPI_IMP("Exiting...");
- return fapi2::FAPI2_RC_SUCCESS;
+ return fapi2::current_err;
}
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.H b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.H
index c8f2f637d..24b84e0b4 100644
--- a/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.H
+++ b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_read_erepair.H
@@ -27,7 +27,7 @@
/// *HWP HWP Backup Owner : Gary Peterson <garyp@us.ibm.com>
/// *HWP FW Owner : Jamie Knight <rjknight@us.ibm.com>
/// *HWP Team : IO
-/// *HWP Level : 1
+/// *HWP Level : 2
/// *HWP Consumed by : FSP:HB
///----------------------------------------------------------------------------
@@ -41,7 +41,7 @@
// function pointer typedef definition for HWP call support
typedef fapi2::ReturnCode (*p9_io_xbus_read_erepair_FP_t)
-(const fapi2::Target < fapi2::TARGET_TYPE_XBUS >&, std::vector< uint8_t >&);
+(const fapi2::Target < fapi2::TARGET_TYPE_XBUS >&, const uint8_t&, std::vector< uint8_t >&);
extern "C"
@@ -49,12 +49,14 @@ extern "C"
/**
* @brief A HWP that runs Read eRepair. This procedure reads the current bad
* lanes and passes by reference the lane numbers in a vector
- * @param[in] i_target Reference to Target
- * @param[out] o_bad_lanes Vector of bad lanes
+ * @param[in] i_target Reference to Target
+ * @param[in] i_clock_group Clock Group of Target
+ * @param[out] o_bad_lanes Vector of bad lanes
* @retval ReturnCode
*/
fapi2::ReturnCode
p9_io_xbus_read_erepair(const fapi2::Target< fapi2::TARGET_TYPE_XBUS >& i_target,
+ const uint8_t& i_clock_group,
std::vector< uint8_t >& o_bad_lanes);
} // extern "C"
OpenPOWER on IntegriCloud