diff options
author | Zane Shelley <zshelle@us.ibm.com> | 2016-10-20 09:30:23 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2016-10-21 13:18:28 -0400 |
commit | d5246e22c2c3d4e5656821bc12ede15ac2b46b9d (patch) | |
tree | 537a7748be576f467df218120edd762bcf41f853 /src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C | |
parent | 2e9a4e30d0f87247c425ef0ce01d678407fa2578 (diff) | |
download | talos-hostboot-d5246e22c2c3d4e5656821bc12ede15ac2b46b9d.tar.gz talos-hostboot-d5246e22c2c3d4e5656821bc12ede15ac2b46b9d.zip |
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 <bweisenb@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31624
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C')
-rwxr-xr-x | src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C | 64 |
1 files changed, 34 insertions, 30 deletions
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 <prdfMemSymbol.H> #include <prdfTrace.H> +#include <prdfParserUtils.H> using namespace TARGETING; @@ -53,38 +54,22 @@ static const uint8_t symbol2Galois[] = // class MemSymbol //############################################################################## -template <> -MemSymbol<TYPE_MBA> MemSymbol<TYPE_MBA>::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<TYPE_MBA>( 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<TYPE_MCA> MemSymbol<TYPE_MCA>::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<TYPE_MCA> MemSymbol<TYPE_MCA>::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<TYPE_MCA>( 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<TYPE_MBA>(iv_symbol) + : symbol2Dq<TYPE_MCA>(iv_symbol); +} + + } // end namespace PRDF |