summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C')
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C53
1 files changed, 32 insertions, 21 deletions
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
index e3da2e952..25db47d64 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemCaptureData.C
@@ -535,25 +535,27 @@ void addEccData<TYPE_MCBIST>( ExtensibleChip * i_chip,
}
template<>
-void addEccData<TYPE_MEM_PORT>( ExtensibleChip * i_chip,
- STEP_CODE_DATA_STRUCT & io_sc )
+void addEccData<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
+ STEP_CODE_DATA_STRUCT & io_sc )
{
- PRDF_ASSERT( TYPE_MEM_PORT == i_chip->getType() );
+ PRDF_ASSERT( TYPE_OCMB_CHIP == i_chip->getType() );
CaptureData & cd = io_sc.service_data->GetCaptureData();
-
- TargetHandle_t trgt = i_chip->getTrgt();
- ExtensibleChip * ocmb = getConnectedParent( i_chip, TYPE_OCMB_CHIP );
- OcmbDataBundle * db = getOcmbDataBundle( ocmb );
+ OcmbDataBundle * db = getOcmbDataBundle( i_chip );
+ TargetHandle_t ocmbTrgt = i_chip->getTrgt();
// Add DRAM repairs data from hardware.
- captureDramRepairsData<TYPE_OCMB_CHIP>( ocmb->getTrgt(), cd );
+ captureDramRepairsData<TYPE_OCMB_CHIP>( ocmbTrgt, cd );
// Add DRAM repairs data from VPD.
- captureDramRepairsVpd<TYPE_MEM_PORT>( trgt, cd );
+ // TODO RTC 210072 - Explorer only has one port, however, multiple ports
+ // will be supported in the future. Updates will need to be made here so we
+ // can get the relevant port.
+ TargetHandle_t memPort = getConnectedChild( ocmbTrgt, TYPE_MEM_PORT, 0 );
+ captureDramRepairsVpd<TYPE_MEM_PORT>( memPort, cd );
// Add IUE counts to capture data.
- captureIueCounts<OcmbDataBundle*>( ocmb->getTrgt(), db, cd );
+ captureIueCounts<OcmbDataBundle*>( ocmbTrgt, db, cd );
// Add CE table to capture data.
db->iv_ceTable.addCapData( cd );
@@ -563,17 +565,6 @@ void addEccData<TYPE_MEM_PORT>( ExtensibleChip * i_chip,
}
template<>
-void addEccData<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
- STEP_CODE_DATA_STRUCT & io_sc )
-{
- PRDF_ASSERT( TYPE_OCMB_CHIP == i_chip->getType() );
-
- // Add data for each connected MEM_PORT.
- ExtensibleChipList list = getConnected( i_chip, TYPE_MEM_PORT );
- for ( auto & port : list ) { addEccData<TYPE_MEM_PORT>(port, io_sc); }
-}
-
-template<>
void addEccData<TYPE_MBA>( ExtensibleChip * i_chip,
STEP_CODE_DATA_STRUCT & io_sc )
{
@@ -635,6 +626,26 @@ void addEccData<TYPE_MBA>( TargetHandle_t i_trgt, errlHndl_t io_errl )
ErrDataService::AddCapData( cd, io_errl );
}
+template<>
+void addEccData<TYPE_OCMB_CHIP>( TargetHandle_t i_trgt,
+ errlHndl_t io_errl )
+{
+ PRDF_ASSERT( TYPE_OCMB_CHIP == getTargetType(i_trgt) );
+
+ CaptureData cd;
+
+ // Add DRAM repairs data from hardware.
+ captureDramRepairsData<TYPE_OCMB_CHIP>( i_trgt, cd );
+
+ // Add DRAM repairs data from VPD.
+ // TODO RTC 210072 - Explorer only has one port, however, multiple ports
+ // will be supported in the future. Updates will need to be made here so we
+ // can get the relevant port.
+ TargetHandle_t memPort = getConnectedChild( i_trgt, TYPE_MEM_PORT, 0 );
+ captureDramRepairsVpd<TYPE_MEM_PORT>( memPort, cd );
+
+ ErrDataService::AddCapData( cd, io_errl );
+}
//------------------------------------------------------------------------------
OpenPOWER on IntegriCloud