summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/framework/service
diff options
context:
space:
mode:
authorBrian Stegmiller <bjs@us.ibm.com>2015-05-29 08:23:13 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-07-13 14:45:47 -0500
commitf4f2b24186bf0c22aa02fcfc5bb036446dac0e0d (patch)
tree772876541dd727561ee889e9a92b148ea9aaed16 /src/usr/diag/prdf/common/framework/service
parent8888ee15e0af659d5ba73c2c5aa12e9d297759d9 (diff)
downloadtalos-hostboot-f4f2b24186bf0c22aa02fcfc5bb036446dac0e0d.tar.gz
talos-hostboot-f4f2b24186bf0c22aa02fcfc5bb036446dac0e0d.zip
PRD: Centaur DDR4 address translation support
Change-Id: Iff60d5f1ab0c0d59d80c97d3fbfca0f663f23421 RTC: 127952 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/18041 Reviewed-by: Zane Shelley <zshelle@us.ibm.com> Tested-by: Jenkins Server Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/18937 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf/common/framework/service')
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/service/prdfTargetServices.C37
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/service/prdfTargetServices.H10
2 files changed, 47 insertions, 0 deletions
diff --git a/src/usr/diag/prdf/common/framework/service/prdfTargetServices.C b/src/usr/diag/prdf/common/framework/service/prdfTargetServices.C
index 4f083a028..139f26183 100755
--- a/src/usr/diag/prdf/common/framework/service/prdfTargetServices.C
+++ b/src/usr/diag/prdf/common/framework/service/prdfTargetServices.C
@@ -1390,6 +1390,43 @@ uint8_t getRanksPerDimm( TargetHandle_t i_mba, uint8_t i_ds )
//------------------------------------------------------------------------------
+uint8_t getMasterRanksPerDimm( TARGETING::TargetHandle_t i_mbaTarget,
+ uint8_t i_ds )
+{
+ #define PRDF_FUNC "[PlatServices::getMasterRanksPerDimm] "
+
+ uint8_t rankCount = 0; // default if something fails
+
+ do
+ {
+ if ( MAX_DIMM_PER_PORT <= i_ds )
+ {
+ PRDF_ERR( PRDF_FUNC"Invalid parameters i_ds:%u", i_ds );
+ break;
+ }
+
+ // NOTE: Unable to use getAttr() because it is not able to return an
+ // array. Otherwise, all of the following would be able to fit in
+ // one line of code. The targeting may fix this later.
+
+ ATTR_EFF_NUM_MASTER_RANKS_PER_DIMM_type attr;
+ if (!i_mbaTarget->tryGetAttr<ATTR_EFF_NUM_MASTER_RANKS_PER_DIMM>(attr))
+ {
+ PRDF_ERR(PRDF_FUNC"fail get ATTR_EFF_NUM_MASTER_RANKS_PER_DIMM");
+ break;
+ }
+
+ // Note that DIMMs are plugged in pairs so the rank numbers should be
+ // the same for each port.
+ rankCount = attr[0][i_ds];
+
+ } while(0);
+
+ return rankCount;
+
+ #undef PRDF_FUNC
+}
+
//##############################################################################
//##
//## Clock specific functions
diff --git a/src/usr/diag/prdf/common/framework/service/prdfTargetServices.H b/src/usr/diag/prdf/common/framework/service/prdfTargetServices.H
index 1a43ef70a..747fd5d30 100755
--- a/src/usr/diag/prdf/common/framework/service/prdfTargetServices.H
+++ b/src/usr/diag/prdf/common/framework/service/prdfTargetServices.H
@@ -377,6 +377,16 @@ int32_t getDimmRowCol( TARGETING::TargetHandle_t i_mba, uint8_t & o_rowNum,
*/
uint8_t getRanksPerDimm( TARGETING::TargetHandle_t i_mbaTarget, uint8_t i_ds );
+/**
+ * @brief Obtains number of MASTER ranks per DIMM select.
+ * @param i_mbaTarget MBA target.
+ * @param i_ds DIMM select for DIMM.
+ * @return Number of MASTER ranks confgured per DIMM select. If internal function
+ * fails it will return 0.
+ */
+uint8_t getMasterRanksPerDimm( TARGETING::TargetHandle_t i_mbaTarget,
+ uint8_t i_ds );
+
//##############################################################################
//##
//## Clock specific functions
OpenPOWER on IntegriCloud