diff options
author | Andre Marin <aamarin@us.ibm.com> | 2016-04-19 20:15:17 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-05-20 09:58:14 -0400 |
commit | e975f03d70583acbe4259b9c2316f76d424cc7f0 (patch) | |
tree | 3dbde4a756b180bff60036a5fbce20ac5e4c3045 /src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.C | |
parent | 148aacb9c1325acbb3fff4fa357411d6f6fa7591 (diff) | |
download | talos-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
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.C')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.C | 64 |
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, |