diff options
author | Matt Ploetz <maploetz@us.ibm.com> | 2013-12-06 11:23:30 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-12-13 09:49:42 -0600 |
commit | b080f2201c10e8c9ea7ed9813453ae4936fc3987 (patch) | |
tree | 9484d482303da1db1cf2c901441cd2794b7d6090 /src/usr/hwpf/hwp/bus_training/io_read_erepair.C | |
parent | ccba0c32f48745b88d91f50d87a5dff290abb11a (diff) | |
download | talos-hostboot-b080f2201c10e8c9ea7ed9813453ae4936fc3987.tar.gz talos-hostboot-b080f2201c10e8c9ea7ed9813453ae4936fc3987.zip |
INITPROC: Hostboot - SW234333 HWP io_read_erepair
Change-Id: I314667b3d5778d1b1c33267794336649ba047f7b
CQ: SW234333
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7573
Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com>
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/bus_training/io_read_erepair.C')
-rw-r--r-- | src/usr/hwpf/hwp/bus_training/io_read_erepair.C | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/src/usr/hwpf/hwp/bus_training/io_read_erepair.C b/src/usr/hwpf/hwp/bus_training/io_read_erepair.C index 08218cfff..2e5ad8c39 100644 --- a/src/usr/hwpf/hwp/bus_training/io_read_erepair.C +++ b/src/usr/hwpf/hwp/bus_training/io_read_erepair.C @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: io_read_erepair.C,v 1.6 2013/07/14 15:50:02 varkeykv Exp $ +// $Id: io_read_erepair.C,v 1.7 2013/10/22 11:46:38 varkeykv Exp $ // *!*************************************************************************** // *! (C) Copyright International Business Machines Corp. 1997, 1998 // *! All Rights Reserved -- Property of IBM @@ -61,7 +61,6 @@ ReturnCode io_read_erepair(const Target& target,std::vector<uint8_t> &rx_lanes) { ReturnCode rc; ecmdDataBufferBase data_one(16); - ecmdDataBufferBase data_two(16); ecmdDataBufferBase mask(16); uint8_t lane=0; @@ -125,7 +124,6 @@ ReturnCode io_read_erepair(const Target& target,std::vector<uint8_t> &rx_lanes) //Collect the RX bad lanes rc_ecmd|=data_one.flushTo0(); - rc_ecmd|=data_two.flushTo0(); if(rc_ecmd) { @@ -133,23 +131,29 @@ ReturnCode io_read_erepair(const Target& target,std::vector<uint8_t> &rx_lanes) return(rc); } - rc = GCR_read( target, interface, rx_lane_bad_vec_0_15_pg, clock_group, 0, data_one); - if(rc){return rc;} - rc = GCR_read( target, interface, rx_lane_bad_vec_16_31_pg, clock_group, 0, data_two); + rc = GCR_read( target, interface, rx_bad_lane_enc_gcrmsg_pg, clock_group, 0, data_one); if(rc){return rc;} // RX lane records // Set the RX bad lanes in the RX vector - for(uint8_t i=0;i<16;++i){ - if (data_one.isBitSet(i)) { - rx_lanes.push_back(lane+i); // 0 to 15 bad lanes - } - if(data_two.isBitSet(i)){ - rx_lanes.push_back(lane+i+16); // 16 to 31 bad lanes - } + // Get first bad lane + if(!data_one.isBitClear(0,7)) + { + data_one.extract(&lane,0,7); + lane=lane>>1; + FAPI_DBG("First bad lane is %d",lane); + rx_lanes.push_back(lane); // 0 to 15 bad lanes + } + // Get second bad lane if any + if(!data_one.isBitClear(7,7)){ + data_one.extract(&lane,7,7); + lane=lane>>1; + FAPI_DBG("Second bad lane is %d",lane); + rx_lanes.push_back(lane); // 16 to 31 bad lanes } + } return rc; } |