From d5246e22c2c3d4e5656821bc12ede15ac2b46b9d Mon Sep 17 00:00:00 2001 From: Zane Shelley Date: Thu, 20 Oct 2016 09:30:23 -0500 Subject: PRD: removed templates from MemSymbol class Needed to do this to avoid templates in MemoryMru class. Change-Id: I2e82748be515dc0f7adb473312f32d91cfc20427 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31547 Reviewed-by: Benjamin J. Weisenbeck Reviewed-by: Caleb N. Palmer Tested-by: Jenkins Server Reviewed-by: Zane C. Shelley Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31624 Tested-by: FSP CI Jenkins --- src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C | 64 ++++++++++++----------- 1 file changed, 34 insertions(+), 30 deletions(-) (limited to 'src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C') diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C b/src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C index 91553ad9c..86316ca02 100755 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C @@ -25,6 +25,7 @@ #include #include +#include using namespace TARGETING; @@ -53,38 +54,22 @@ static const uint8_t symbol2Galois[] = // class MemSymbol //############################################################################## -template <> -MemSymbol MemSymbol::fromGalois( TargetHandle_t i_trgt, - const MemRank & i_rank, - uint8_t i_galois, - uint8_t i_mask ) +MemSymbol::MemSymbol( TARGETING::TargetHandle_t i_trgt, const MemRank & i_rank, + uint8_t i_symbol, uint8_t i_pins ) : + iv_trgt(i_trgt), iv_rank(i_rank), iv_symbol(i_symbol), + iv_pins(i_pins), iv_isDramSpared(false), iv_isEccSpared(false) { - // Get symbol from Galois field. - uint8_t symbol = SYMBOLS_PER_RANK; - for ( uint32_t i = 0; i < SYMBOLS_PER_RANK; i++ ) - { - if ( symbol2Galois[i] == i_galois ) - { - symbol = i; - break; - } - } - - // Get pins from mask (2 pins for MBA). - uint8_t pins = NO_SYMBOL_DQS; - if ( 0 != (i_mask & 0xaa) ) pins |= EVEN_SYMBOL_DQ; - if ( 0 != (i_mask & 0x55) ) pins |= ODD_SYMBOL_DQ; - - return MemSymbol( i_trgt, i_rank, symbol, pins ); + PRDF_ASSERT( NULL != i_trgt ); + PRDF_ASSERT( TYPE_MBA == getTargetType(i_trgt) || + TYPE_MCA == getTargetType(i_trgt) ); + PRDF_ASSERT( i_symbol < SYMBOLS_PER_RANK ); + PRDF_ASSERT( i_pins <= CEN_SYMBOL::BOTH_SYMBOL_DQS ); } //------------------------------------------------------------------------------ -template <> -MemSymbol MemSymbol::fromGalois( TargetHandle_t i_trgt, - const MemRank & i_rank, - uint8_t i_galois, - uint8_t i_mask ) +MemSymbol MemSymbol::fromGalois( TargetHandle_t i_trgt, const MemRank & i_rank, + uint8_t i_galois, uint8_t i_mask ) { // Get symbol from Galois field. uint8_t symbol = SYMBOLS_PER_RANK; @@ -97,11 +82,30 @@ MemSymbol MemSymbol::fromGalois( TargetHandle_t i_trgt, } } - // Get pins from mask (1 pin for MCA). + // Get pins from mask. uint8_t pins = NO_SYMBOL_DQS; - if ( 0 != (i_mask & 0xff) ) pins |= ODD_SYMBOL_DQ; + if ( TYPE_MBA == getTargetType(i_trgt) ) + { + // 2 pins for MBA. + if ( 0 != (i_mask & 0xaa) ) pins |= EVEN_SYMBOL_DQ; + if ( 0 != (i_mask & 0x55) ) pins |= ODD_SYMBOL_DQ; + } + else + { + // 1 pin for MCA. + if ( 0 != (i_mask & 0xff) ) pins |= ODD_SYMBOL_DQ; + } - return MemSymbol( i_trgt, i_rank, symbol, pins ); + return MemSymbol( i_trgt, i_rank, symbol, pins ); } +//------------------------------------------------------------------------------ + +uint8_t MemSymbol::getDq() const +{ + return TYPE_MBA == getTargetType(iv_trgt) ? symbol2Dq(iv_symbol) + : symbol2Dq(iv_symbol); +} + + } // end namespace PRDF -- cgit v1.2.1