summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Marin <aamarin@us.ibm.com>2016-04-19 20:15:17 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-05-20 09:58:14 -0400
commite975f03d70583acbe4259b9c2316f76d424cc7f0 (patch)
tree3dbde4a756b180bff60036a5fbce20ac5e4c3045
parent148aacb9c1325acbb3fff4fa357411d6f6fa7591 (diff)
downloadtalos-hostboot-e975f03d70583acbe4259b9c2316f76d424cc7f0.tar.gz
talos-hostboot-e975f03d70583acbe4259b9c2316f76d424cc7f0.zip
Fix throttle procedure & MSS attribute clean up
Change-Id: I6ff864421bdb98b99170d1ed9ac30a833078b75c Original-Change-Id: I7b545b65aaf9cdfea08ab2c5142898f5c971a74b Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/23486 Tested-by: Jenkins Server Tested-by: Hostboot CI Reviewed-by: Louis Stermole <stermole@us.ibm.com> Reviewed-by: JACOB L. HARVEY <jlharvey@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Brian R. Silver <bsilver@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24842 Tested-by: FSP CI Jenkins
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.C64
1 files changed, 49 insertions, 15 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.C b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.C
index 08f716af6..50afba8ed 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.C
@@ -37,7 +37,6 @@ static const std::vector<std::pair<uint8_t, uint64_t> > TREFI_BASE =
// 16Gb - TBD
};
-
// Proposed DDR4 Full spec update(79-4A)
// Item No. 1716.78C
// pg.46
@@ -51,7 +50,6 @@ static const std::vector<std::pair<uint8_t, uint64_t> > TRFC1_MIN =
// 16Gb - TBD
};
-
// Proposed DDR4 Full spec update(79-4A)
// Item No. 1716.78C
// pg.46
@@ -65,7 +63,6 @@ static const std::vector<std::pair<uint8_t, uint64_t> > TRFC2_MIN =
// 16Gb - TBD
};
-
// Proposed DDR4 Full spec update(79-4A)
// Item No. 1716.78C
// pg.46
@@ -79,6 +76,42 @@ static const std::vector<std::pair<uint8_t, uint64_t> > TRFC4_MIN =
// 16Gb - TBD
};
+// Proposed DDR4 3DS Addendum
+// Item No. 1727.58A
+// pg. 69 - 71
+// Table 42 - Refresh parameters by logical rank density
+static const std::vector<std::pair<uint8_t, uint64_t> > TRFC_DLR1 =
+{
+ // { density in GBs, tRFC4(min) in nanoseconds }
+ {4, 90},
+ {8, 120},
+ // 16Gb - TBD
+};
+
+// Proposed DDR4 3DS Addendum
+// Item No. 1727.58A
+// pg. 69 - 71
+// Table 42 - Refresh parameters by logical rank density
+static const std::vector<std::pair<uint8_t, uint64_t> > TRFC_DLR2 =
+{
+ // { density in GBs, tRFC4(min) in nanoseconds }
+ {4, 55},
+ {8, 90}
+ // 16Gb - TBD
+};
+
+// Proposed DDR4 3DS Addendum
+// Item No. 1727.58A
+// pg. 69 - 71
+// Table 42 - Refresh parameters by logical rank density
+static const std::vector<std::pair<uint8_t, uint64_t> > TRFC_DLR4 =
+{
+ // { density in GBs, tRFC4(min) in nanoseconds }
+ {4, 40},
+ {8, 55}
+ // 16Gb - TBD
+};
+
/// @brief Calculates refresh interval time 1 (tREFI 1)
/// @param[in] i_target FAPI2 target
/// @param[out] o_value timing val in ps
@@ -94,12 +127,13 @@ fapi2::ReturnCode calc_trefi1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_ta
uint8_t l_dram_density = 0;
bool l_found_value = true;
- FAPI_TRY(mss::eff_dram_density(i_target, l_dram_density));
+ FAPI_TRY( mss::eff_dram_density(i_target, l_dram_density) );
+ FAPI_TRY( mss::mrw_temp_ref_range(l_temp_ref_range) );
switch(l_temp_ref_range)
{
- case fapi2::ENUM_ATTR_EFF_TEMP_REF_RANGE_NORMAL:
- l_found_value = mss::find_value_from_key(TREFI_BASE, l_dram_density, o_value);
+ case fapi2::ENUM_ATTR_MRW_TEMP_REF_RANGE_NORMAL:
+ l_found_value = mss::find_value_from_key(TREFI_BASE, l_dram_density, l_output);
FAPI_TRY( check::fail_for_invalid_map(i_target,
l_found_value,
l_dram_density,
@@ -108,7 +142,7 @@ fapi2::ReturnCode calc_trefi1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_ta
"normal temp_ref_range.") );
break;
- case fapi2::ENUM_ATTR_EFF_TEMP_REF_RANGE_EXTEND:
+ case fapi2::ENUM_ATTR_MRW_TEMP_REF_RANGE_EXTEND:
l_found_value = mss::find_value_from_key(TREFI_BASE, l_dram_density, l_output);
FAPI_TRY( check::fail_for_invalid_map(i_target,
l_found_value,
@@ -154,12 +188,12 @@ fapi2::ReturnCode calc_trefi2(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_ta
uint8_t l_dram_density = 0;
bool l_found_value = true;
- FAPI_TRY(mss::eff_temp_ref_range(i_target, l_temp_ref_range));
- FAPI_TRY(mss::eff_dram_density(i_target, l_dram_density));
+ FAPI_TRY( mss::mrw_temp_ref_range(l_temp_ref_range) );
+ FAPI_TRY( mss::eff_dram_density(i_target, l_dram_density) );
switch(l_temp_ref_range)
{
- case fapi2::ENUM_ATTR_EFF_TEMP_REF_RANGE_NORMAL:
+ case fapi2::ENUM_ATTR_MRW_TEMP_REF_RANGE_NORMAL:
l_found_value = mss::find_value_from_key(TREFI_BASE, l_dram_density, l_output);
FAPI_TRY( check::fail_for_invalid_map(i_target,
l_found_value,
@@ -172,7 +206,7 @@ fapi2::ReturnCode calc_trefi2(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_ta
o_value = l_quotient + (l_remainder == 0 ? 0 : 1);
break;
- case fapi2::ENUM_ATTR_EFF_TEMP_REF_RANGE_EXTEND:
+ case fapi2::ENUM_ATTR_MRW_TEMP_REF_RANGE_EXTEND:
l_found_value = mss::find_value_from_key(TREFI_BASE, l_dram_density, l_output);
FAPI_TRY( check::fail_for_invalid_map(i_target,
l_found_value,
@@ -218,12 +252,12 @@ fapi2::ReturnCode calc_trefi4( const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_t
uint8_t l_dram_density = 0;
bool l_found_value = true;
- FAPI_TRY(mss::eff_temp_ref_range(i_target, l_temp_ref_range));
- FAPI_TRY(mss::eff_dram_density(i_target, l_dram_density));
+ FAPI_TRY( mss::mrw_temp_ref_range(l_temp_ref_range) );
+ FAPI_TRY( mss::eff_dram_density(i_target, l_dram_density) );
switch(l_temp_ref_range)
{
- case fapi2::ENUM_ATTR_EFF_TEMP_REF_RANGE_NORMAL:
+ case fapi2::ENUM_ATTR_MRW_TEMP_REF_RANGE_NORMAL:
l_found_value = mss::find_value_from_key(TREFI_BASE, l_dram_density, l_output);
FAPI_TRY( check::fail_for_invalid_map(i_target,
l_found_value,
@@ -236,7 +270,7 @@ fapi2::ReturnCode calc_trefi4( const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_t
o_value = l_quotient + (l_remainder == 0 ? 0 : 1);
break;
- case fapi2::ENUM_ATTR_EFF_TEMP_REF_RANGE_EXTEND:
+ case fapi2::ENUM_ATTR_MRW_TEMP_REF_RANGE_EXTEND:
l_found_value = mss::find_value_from_key(TREFI_BASE, l_dram_density, l_output);
FAPI_TRY( check::fail_for_invalid_map(i_target,
l_found_value,
OpenPOWER on IntegriCloud