summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures
diff options
context:
space:
mode:
authorAndre Marin <aamarin@us.ibm.com>2017-06-09 18:04:10 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-06-14 09:42:41 -0400
commit7074cfc250e019e570573891e903cc44130dee24 (patch)
tree00f21c439c2021034418be3ed44373ce19eeb908 /src/import/chips/p9/procedures
parent0116e1f975aa63d61a4d5d1457cc35247829b8db (diff)
downloadtalos-hostboot-7074cfc250e019e570573891e903cc44130dee24.tar.gz
talos-hostboot-7074cfc250e019e570573891e903cc44130dee24.zip
Double POR timings (tMOD, tMRD, and tZQ) for more margin per lab
Change-Id: Ia1e575d93370372ae6bcb393258bb6f95e324874 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41639 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Louis Stermole <stermole@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/41641 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs_load_ddr4.C18
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/zqcal.C8
2 files changed, 17 insertions, 9 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs_load_ddr4.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs_load_ddr4.C
index 515f45296..3805a7d5c 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs_load_ddr4.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs_load_ddr4.C
@@ -84,17 +84,21 @@ fapi2::ReturnCode mrs_load( const fapi2::Target<TARGET_TYPE_DIMM>& i_target,
{
FAPI_INF("ddr4::mrs_load %s", mss::c_str(i_target));
+ // Doubling tMRD delay to increase margin per lab request
+ const size_t DOUBLE_TMRD = 2 * mss::tmrd();
+ const size_t DOUBLE_TMOD = 2 * mss::tmod(i_target);
+
static const std::vector< mrs_data<TARGET_TYPE_MCBIST> > MRS_DATA =
{
// JEDEC ordering of MRS per DDR4 power on sequence
- { 3, mrs03, mrs03_decode, mss::tmrd() },
- { 6, mrs06, mrs06_decode, mss::tmrd() },
- { 5, mrs05, mrs05_decode, mss::tmrd() },
- { 4, mrs04, mrs04_decode, mss::tmrd() },
- { 2, mrs02, mrs02_decode, mss::tmrd() },
- { 1, mrs01, mrs01_decode, mss::tmrd() },
+ { 3, mrs03, mrs03_decode, DOUBLE_TMRD },
+ { 6, mrs06, mrs06_decode, DOUBLE_TMRD },
+ { 5, mrs05, mrs05_decode, DOUBLE_TMRD },
+ { 4, mrs04, mrs04_decode, DOUBLE_TMRD },
+ { 2, mrs02, mrs02_decode, DOUBLE_TMRD },
+ { 1, mrs01, mrs01_decode, DOUBLE_TMRD },
// We need to wait tmod before zqcl, a non-mrs command
- { 0, mrs00, mrs00_decode, mss::tmod(i_target) },
+ { 0, mrs00, mrs00_decode, DOUBLE_TMOD },
};
std::vector< uint64_t > l_ranks;
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/zqcal.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/zqcal.C
index b92c9086d..e69e06130 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/zqcal.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/zqcal.C
@@ -69,8 +69,12 @@ fapi2::ReturnCode setup_dram_zqcal( const fapi2::Target<fapi2::TARGET_TYPE_DIMM>
// Note: this isn't general - assumes Nimbus via MCBIST instruction here BRS
l_inst = ccs::zqcl_command<TARGET_TYPE_MCBIST>(i_target, i_rank);
- l_inst.arr1.insertFromRight<MCBIST_CCS_INST_ARR1_00_IDLES,
- MCBIST_CCS_INST_ARR1_00_IDLES_LEN>(tDLLK + mss::tzqinit());
+ // Doubling tZQ to better margin per lab request
+ {
+ const size_t DELAY = 2 * (tDLLK + mss::tzqinit());
+ l_inst.arr1.insertFromRight<MCBIST_CCS_INST_ARR1_00_IDLES,
+ MCBIST_CCS_INST_ARR1_00_IDLES_LEN>(DELAY);
+ }
// There's nothing to decode here.
FAPI_INF("ZQCL 0x%016llx:0x%016llx %s:rank %d",
OpenPOWER on IntegriCloud