diff options
author | Brian Silver <bsilver@us.ibm.com> | 2016-03-11 14:43:25 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-04-01 21:26:44 -0400 |
commit | 768b11a950286484c5ac72d2685b6d6aca8971e8 (patch) | |
tree | d26b274fa62870e9c84d92ccb4f9b6a29fcaeb42 /src/import/chips/p9/procedures/hwp/memory/lib/mc/xlate.C | |
parent | 74c4c141b1d8d8dbb3a1e40f493840f0551cf97c (diff) | |
download | talos-hostboot-768b11a950286484c5ac72d2685b6d6aca8971e8.tar.gz talos-hostboot-768b11a950286484c5ac72d2685b6d6aca8971e8.zip |
Change address translation registers to account for MCA odd ports
Change-Id: I3c2dc6e8e888736c19fc716e5de23f9009d44343
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/21949
Tested-by: Jenkins Server
Reviewed-by: Louis Stermole <stermole@us.ibm.com>
Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/22780
Tested-by: FSP CI Jenkins
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/mc/xlate.C')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/mc/xlate.C | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mc/xlate.C b/src/import/chips/p9/procedures/hwp/memory/lib/mc/xlate.C index f9f778ce6..2c0beb8bf 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/mc/xlate.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/mc/xlate.C @@ -70,6 +70,14 @@ fapi2::ReturnCode mc<TARGET_TYPE_MCS>::setup_xlate_map(const fapi2::Target<TARGE FAPI_INF("Setting up xlate registers for MCA%d (%d)", mss::pos(i_target), mss::index(i_target)); + // The addressing for the xlt registers is funky. We have a different unit0 address for units 0/2 + // than we do for 1/3. + const uint64_t& l_t0_address = mss::pos(i_target) % 2 ? MCS_0_PORT13_MCP0XLT0 : MCS_0_PORT02_MCP0XLT0; + const uint64_t& l_t1_address = mss::pos(i_target) % 2 ? MCS_0_PORT13_MCP0XLT1 : MCS_0_PORT02_MCP0XLT1; + const uint64_t& l_t2_address = mss::pos(i_target) % 2 ? MCS_0_PORT13_MCP0XLT2 : MCS_0_PORT02_MCP0XLT2; + + FAPI_DBG("xlate scoms registers 0x%016lx, 0x%016lx, 0x%016lx", l_t0_address, l_t1_address, l_t2_address); + // We enable the DIMM select bit for slot1 if we have two DIMM installed l_xlate.writeBit<MCS_PORT13_MCP0XLT0_SLOT1_D_VALUE>(l_dimms.size() == 2); @@ -202,9 +210,9 @@ fapi2::ReturnCode mc<TARGET_TYPE_MCS>::setup_xlate_map(const fapi2::Target<TARGE FAPI_DBG("HACK: Cramming 0x%016lx in for MCP0XLT1", l_xlate1); FAPI_DBG("HACK: Cramming 0x%016lx in for MCP0XLT2", l_xlate2); - FAPI_TRY( mss::putScom(i_target.getParent<TARGET_TYPE_MCS>(), MCS_0_PORT02_MCP0XLT0, l_xlate) ); - FAPI_TRY( mss::putScom(i_target.getParent<TARGET_TYPE_MCS>(), MCS_0_PORT02_MCP0XLT1, l_xlate1) ); - FAPI_TRY( mss::putScom(i_target.getParent<TARGET_TYPE_MCS>(), MCS_0_PORT02_MCP0XLT2, l_xlate2) ); + FAPI_TRY( mss::putScom(i_target.getParent<TARGET_TYPE_MCS>(), l_t0_address, l_xlate) ); + FAPI_TRY( mss::putScom(i_target.getParent<TARGET_TYPE_MCS>(), l_t1_address, l_xlate1) ); + FAPI_TRY( mss::putScom(i_target.getParent<TARGET_TYPE_MCS>(), l_t2_address, l_xlate2) ); fapi_try_exit: return fapi2::current_err; |