summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2016-10-20 09:30:23 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2016-10-21 13:18:28 -0400
commitd5246e22c2c3d4e5656821bc12ede15ac2b46b9d (patch)
tree537a7748be576f467df218120edd762bcf41f853 /src/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C
parent2e9a4e30d0f87247c425ef0ce01d678407fa2578 (diff)
downloadtalos-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-xsrc/usr/diag/prdf/common/plat/mem/prdfMemSymbol.C64
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
OpenPOWER on IntegriCloud