summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/memory/lib/dimm/rank.C
diff options
context:
space:
mode:
authorLouis Stermole <stermole@us.ibm.com>2016-09-08 06:57:10 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2016-09-20 12:31:14 -0400
commitfdc14c69e7367e34b00df532de7094586f5935f6 (patch)
tree656f4897ddb705143446f617689ff2aecfda7b05 /src/import/chips/p9/procedures/hwp/memory/lib/dimm/rank.C
parent50c1a970cfdc69dd6dc77c1b1c50d44190b8e55d (diff)
downloadtalos-hostboot-fdc14c69e7367e34b00df532de7094586f5935f6.tar.gz
talos-hostboot-fdc14c69e7367e34b00df532de7094586f5935f6.zip
Add register API for PHY Rank Pair registers
Fix access_delay_regs ut by choosing rank based on given rank pair Put rank functions into a rank namespace Change-Id: I57e0dc54e78c7b72df346fb902d5188330503919 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29372 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Brian R. Silver <bsilver@us.ibm.com> Reviewed-by: JACOB L. HARVEY <jlharvey@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29374 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/dimm/rank.C')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/dimm/rank.C46
1 files changed, 43 insertions, 3 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/rank.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/rank.C
index ea496a62c..9b18c4a8b 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/rank.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/rank.C
@@ -44,6 +44,43 @@ using fapi2::FAPI2_RC_INVALID_PARAMETER;
namespace mss
{
+// Definition of the Nimbus PHY rank_pair0 config registers
+const std::vector< uint64_t > rankPairTraits<TARGET_TYPE_MCA, 0>::RANK_PAIR_REGS =
+{
+ MCA_DDRPHY_PC_RANK_PAIR0_P0,
+ MCA_DDRPHY_PC_RANK_PAIR2_P0,
+};
+
+// Definition of the Nimbus PHY rank_pair1 config registers
+const std::vector< uint64_t > rankPairTraits<TARGET_TYPE_MCA, 1>::RANK_PAIR_REGS =
+{
+ MCA_DDRPHY_PC_RANK_PAIR0_P0,
+ MCA_DDRPHY_PC_RANK_PAIR2_P0,
+};
+
+// Definition of the Nimbus PHY rank_pair2 config registers
+const std::vector< uint64_t > rankPairTraits<TARGET_TYPE_MCA, 2>::RANK_PAIR_REGS =
+{
+ MCA_DDRPHY_PC_RANK_PAIR1_P0,
+ MCA_DDRPHY_PC_RANK_PAIR3_P0,
+};
+
+// Definition of the Nimbus PHY rank_pair3 config registers
+const std::vector< uint64_t > rankPairTraits<TARGET_TYPE_MCA, 3>::RANK_PAIR_REGS =
+{
+ MCA_DDRPHY_PC_RANK_PAIR1_P0,
+ MCA_DDRPHY_PC_RANK_PAIR3_P0,
+};
+
+// Definition of mappings for which fields (primary, secondary, ...) go into which regs
+const std::vector< uint64_t > rankPairTraits<TARGET_TYPE_MCA, 0>::RANK_PAIR_FIELD_MAP = { 0, 0, 1, 1 };
+const std::vector< uint64_t > rankPairTraits<TARGET_TYPE_MCA, 1>::RANK_PAIR_FIELD_MAP = { 0, 0, 1, 1 };
+const std::vector< uint64_t > rankPairTraits<TARGET_TYPE_MCA, 2>::RANK_PAIR_FIELD_MAP = { 0, 0, 1, 1 };
+const std::vector< uint64_t > rankPairTraits<TARGET_TYPE_MCA, 3>::RANK_PAIR_FIELD_MAP = { 0, 0, 1, 1 };
+
+namespace rank
+{
+
//
// Static table of rank pair assignments. Some of thoem won't be valid depending on
// the plug rules (which may be OpenPOWER, IBM, etc.) Some also won't make sense
@@ -290,8 +327,9 @@ fapi2::ReturnCode set_rank_pairs(const fapi2::Target<TARGET_TYPE_MCA>& i_target)
FAPI_DBG("setting rank pairs for %s. 0x%08llx, 0x%08llx csid: 0x%016llx",
mss::c_str(i_target), l_rp_registers.first, l_rp_registers.second, l_csid_data);
- FAPI_TRY( mss::putScom(i_target, MCA_DDRPHY_PC_RANK_PAIR0_P0, l_rp_registers.first) );
- FAPI_TRY( mss::putScom(i_target, MCA_DDRPHY_PC_RANK_PAIR1_P0, l_rp_registers.second) );
+ // need an extra pair of parens to make FAPI_TRY parsing work correctly
+ FAPI_TRY( (mss::rank::write_rank_pair_reg< 0, 0 >(i_target, l_rp_registers.first)) );
+ FAPI_TRY( (mss::rank::write_rank_pair_reg< 0, 1 >(i_target, l_rp_registers.second)) );
FAPI_TRY( mss::putScom(i_target, MCA_DDRPHY_PC_CSID_CFG_P0, l_csid_data) );
// HACK HACK HACK: put this in the code properly!! BRS
@@ -419,4 +457,6 @@ fapi_try_exit:
return fapi2::current_err;
}
-} // namespace
+} // namespace rank
+
+} // namespace mss
OpenPOWER on IntegriCloud