summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs03.C12
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C44
2 files changed, 38 insertions, 18 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs03.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs03.C
index ae6277d1c..45ba9e8dd 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs03.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/ddr4/mrs03.C
@@ -55,14 +55,14 @@ namespace ddr4
/// @param[out] fapi2::ReturnCode FAPI2_RC_SUCCESS iff ok
///
mrs03_data::mrs03_data( const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, fapi2::ReturnCode& o_rc ):
- iv_mpr_mode(0),
- iv_mpr_page(0),
+ iv_mpr_mode(fapi2::ENUM_ATTR_EFF_MPR_MODE_DISABLE),
+ iv_mpr_page(fapi2::ENUM_ATTR_EFF_MPR_PAGE_PG0),
iv_geardown(0),
- iv_pda(0),
+ iv_pda(fapi2::ENUM_ATTR_EFF_PER_DRAM_ACCESS_DISABLE),
iv_crc_wr_latency(0),
- iv_temp_readout(0),
+ iv_temp_readout(fapi2::ENUM_ATTR_EFF_TEMP_READOUT_DISABLE),
iv_fine_refresh(0),
- iv_read_format(0)
+ iv_read_format(fapi2::ENUM_ATTR_EFF_MPR_RD_FORMAT_SERIAL)
{
FAPI_TRY( mss::eff_mpr_mode(i_target, iv_mpr_mode) );
FAPI_TRY( mss::eff_mpr_page(i_target, iv_mpr_page) );
@@ -123,7 +123,7 @@ fapi2::ReturnCode mrs03(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
constexpr uint64_t LOWEST_WL = 4;
constexpr uint64_t WL_COUNT = 3;
// 4 5 6
- constexpr uint8_t crc_wr_latency_map[WL_COUNT] = { 1, 2, 3 };
+ constexpr uint8_t crc_wr_latency_map[WL_COUNT] = { 0, 1, 2 };
fapi2::buffer<uint8_t> l_crc_wr_latency_buffer;
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C
index 546242237..e87c76b0c 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C
@@ -2489,7 +2489,6 @@ fapi_try_exit:
///
fapi2::ReturnCode eff_config::mpr_read_format(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
{
- // TK - RIT skeleton. Need to finish - AAM
std::vector<uint8_t> l_attrs_mpr_rd_format(PORTS_PER_MCS, 0);
// Targets
@@ -2501,7 +2500,8 @@ fapi2::ReturnCode eff_config::mpr_read_format(const fapi2::Target<TARGET_TYPE_DI
FAPI_TRY( eff_mpr_rd_format(l_mcs, l_attrs_mpr_rd_format.data()) );
- l_attrs_mpr_rd_format[l_port_num] = 0x00;
+ //Serial format is standard for Nimbus and needed for PHY calibration (draminit_training)
+ l_attrs_mpr_rd_format[l_port_num] = fapi2::ENUM_ATTR_EFF_MPR_RD_FORMAT_SERIAL;
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_MPR_RD_FORMAT,
l_mcs,
@@ -2519,7 +2519,6 @@ fapi_try_exit:
///
fapi2::ReturnCode eff_config::crc_wr_latency(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
{
- // TK - RIT skeleton. Need to finish - AAM
std::vector<uint8_t> l_attrs_crc_wr_latency(PORTS_PER_MCS, 0);
// Targets
@@ -2529,9 +2528,30 @@ fapi2::ReturnCode eff_config::crc_wr_latency(const fapi2::Target<TARGET_TYPE_DIM
// Current index
const auto l_port_num = index(l_mca);
+ //keep simulation to values we know work
+ uint8_t is_sim = 0;
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_IS_SIMULATION, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), is_sim) );
+
FAPI_TRY( eff_crc_wr_latency(l_mcs, l_attrs_crc_wr_latency.data()) );
- l_attrs_crc_wr_latency[l_port_num] = 0x04;
+ //keep simulation to values we know work
+ if(is_sim)
+ {
+ l_attrs_crc_wr_latency[l_port_num] = 0x05;
+ }
+ //set the attribute according to frequency
+ else
+ {
+ //TODO RTC:159481 - update CRC write latency to include 2667
+ //currently, JEDEC defines the following
+ //crc wr latency - freq
+ //4 - 1600
+ //5 - 1866, 2133, 2400
+ //6 - TBD
+ //Nimbus only supports 1866->2400 on the current list
+ //2667 is not noted. as such, alway setting crc_wr_latency to 0x05 until JEDEC value is updated
+ l_attrs_crc_wr_latency[l_port_num] = 0x05;
+ }
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_CRC_WR_LATENCY,
l_mcs,
@@ -2549,7 +2569,6 @@ fapi_try_exit:
///
fapi2::ReturnCode eff_config::temp_readout(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
{
- // TK - RIT skeleton. Need to finish - AAM
std::vector<uint8_t> l_attrs_temp_readout(PORTS_PER_MCS, 0);
// Targets
@@ -2561,7 +2580,8 @@ fapi2::ReturnCode eff_config::temp_readout(const fapi2::Target<TARGET_TYPE_DIMM>
FAPI_TRY( eff_temp_readout(l_mcs, l_attrs_temp_readout.data()) );
- l_attrs_temp_readout[l_port_num] = 0x00;
+ //Disabled for mainline mode
+ l_attrs_temp_readout[l_port_num] = fapi2::ENUM_ATTR_EFF_TEMP_READOUT_DISABLE;
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_TEMP_READOUT,
l_mcs,
@@ -2579,7 +2599,6 @@ fapi_try_exit:
///
fapi2::ReturnCode eff_config::per_dram_addressability(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
{
- // TK - RIT skeleton. Need to finish - AAM
std::vector<uint8_t> l_attrs_per_dram_access(PORTS_PER_MCS, 0);
// Targets
@@ -2591,7 +2610,8 @@ fapi2::ReturnCode eff_config::per_dram_addressability(const fapi2::Target<TARGET
FAPI_TRY( eff_per_dram_access(l_mcs, l_attrs_per_dram_access.data()) );
- l_attrs_per_dram_access[l_port_num] = 0x00;
+ //PDA is disabled in mainline functionality
+ l_attrs_per_dram_access[l_port_num] = fapi2::ENUM_ATTR_EFF_PER_DRAM_ACCESS_DISABLE;
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_PER_DRAM_ACCESS,
l_mcs,
@@ -2644,7 +2664,6 @@ fapi_try_exit:
///
fapi2::ReturnCode eff_config::mpr_page(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
{
- // TK - RIT skeleton. Need to finish - AAM
std::vector<uint8_t> l_attrs_mpr_page(PORTS_PER_MCS, 0);
// Targets
@@ -2656,7 +2675,8 @@ fapi2::ReturnCode eff_config::mpr_page(const fapi2::Target<TARGET_TYPE_DIMM>& i_
FAPI_TRY( eff_mpr_page(l_mcs, l_attrs_mpr_page.data()) );
- l_attrs_mpr_page[l_port_num] = 0x00;
+ //page0 is needed for PHY calibration algorithm (run in draminit_training)
+ l_attrs_mpr_page[l_port_num] = fapi2::ENUM_ATTR_EFF_MPR_PAGE_PG0;
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_MPR_PAGE,
l_mcs,
@@ -2674,7 +2694,6 @@ fapi_try_exit:
///
fapi2::ReturnCode eff_config::mpr_mode(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
{
- // TK - RIT skeleton. Need to finish - AAM
std::vector<uint8_t> l_attrs_mpr_mode(PORTS_PER_MCS, 0);
// Targets
@@ -2686,7 +2705,8 @@ fapi2::ReturnCode eff_config::mpr_mode(const fapi2::Target<TARGET_TYPE_DIMM>& i_
FAPI_TRY( eff_mpr_mode(l_mcs, l_attrs_mpr_mode.data()) );
- l_attrs_mpr_mode[l_port_num] = 0x00;
+ //MPR mode is disabled for mainline functionality
+ l_attrs_mpr_mode[l_port_num] = fapi2::ENUM_ATTR_EFF_MPR_MODE_DISABLE;
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_MPR_MODE,
l_mcs,
OpenPOWER on IntegriCloud