diff options
| author | Brian Stegmiller <bjs@us.ibm.com> | 2015-05-29 08:23:13 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-07-13 14:45:47 -0500 |
| commit | f4f2b24186bf0c22aa02fcfc5bb036446dac0e0d (patch) | |
| tree | 772876541dd727561ee889e9a92b148ea9aaed16 /src/usr/diag/prdf/common/framework/service | |
| parent | 8888ee15e0af659d5ba73c2c5aa12e9d297759d9 (diff) | |
| download | talos-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-x | src/usr/diag/prdf/common/framework/service/prdfTargetServices.C | 37 | ||||
| -rwxr-xr-x | src/usr/diag/prdf/common/framework/service/prdfTargetServices.H | 10 |
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 |

