summaryrefslogtreecommitdiffstats
path: root/src/import/chips/ocmb/explorer/procedures/hwp/memory
diff options
context:
space:
mode:
authorMark Pizzutillo <Mark.Pizzutillo@ibm.com>2019-06-20 13:15:47 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2019-07-09 10:20:45 -0500
commitedce11bc98f220b92a9906929891ea430b77a54d (patch)
tree062f8492969b0193424aba61d00005f839d80347 /src/import/chips/ocmb/explorer/procedures/hwp/memory
parentd9bbcfabbc2f041ba85095ac70dc27c37cb87755 (diff)
downloadtalos-hostboot-edce11bc98f220b92a9906929891ea430b77a54d.tar.gz
talos-hostboot-edce11bc98f220b92a9906929891ea430b77a54d.zip
Fix more exp_draminit parameters
Change-Id: I1183b37048b6075bd85276058f123883efb351e9 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79299 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Louis Stermole <stermole@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: RYAN P. KING <rpking@us.ibm.com> Reviewed-by: Jennifer A Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79320 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/chips/ocmb/explorer/procedures/hwp/memory')
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_efd_processing.C8
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/exp_draminit_utils.H40
2 files changed, 40 insertions, 8 deletions
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_efd_processing.C b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_efd_processing.C
index a0b62b533..cf09e0a45 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_efd_processing.C
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_efd_processing.C
@@ -129,13 +129,13 @@ fapi2::ReturnCode init_vref_dq(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_t
static const uint8_t VREF_RANGE_BIT_LEFT_ALGINED = 1;
// Get the data
- uint8_t l_phy_vref[mss::exp::sizes::MAX_RANK_PER_DIMM] = {0};
+ uint8_t l_vref_dq[mss::exp::sizes::MAX_RANK_PER_DIMM] = {0};
uint8_t l_range = 0;
uint8_t l_value = 0;
fapi2::buffer<uint8_t> l_combined_vref;
- FAPI_TRY(mss::attr::get_exp_init_vref_dq(i_target, l_phy_vref));
+ FAPI_TRY(mss::attr::get_exp_init_vref_dq(i_target, l_vref_dq));
// Piece together the field
FAPI_TRY(i_efd_data->wr_vref_dq_range(l_range));
@@ -145,10 +145,10 @@ fapi2::ReturnCode init_vref_dq(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_t
l_combined_vref.writeBit<VREF_RANGE_BIT_LEFT_ALGINED>(l_range);
// Insert
- l_phy_vref[i_efd_data->get_rank()] = l_combined_vref;
+ l_vref_dq[i_efd_data->get_rank()] = l_combined_vref;
// Set the attribute
- FAPI_TRY(mss::attr::set_exp_init_vref_dq(i_target, l_phy_vref));
+ FAPI_TRY(mss::attr::set_exp_init_vref_dq(i_target, l_vref_dq));
fapi_try_exit:
return fapi2::current_err;
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/exp_draminit_utils.H b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/exp_draminit_utils.H
index fac27601b..e310ee220 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/exp_draminit_utils.H
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/exp_draminit_utils.H
@@ -134,6 +134,18 @@ enum msdg_enable
};
///
+/// @brief defines fields for the ODT RD/WR params
+///
+enum odt_fields
+{
+ FLD_LENGTH = 4,
+ RANK3 = 12,
+ RANK2 = 8,
+ RANK1 = 4,
+ RANK0 = 0,
+};
+
+///
/// @brief host_fw_command_struct structure setup
/// @param[in] i_cmd_data_crc the command data CRC
/// @param[out] o_cmd the command parameters to set
@@ -180,8 +192,8 @@ struct phy_params_t
uint8_t iv_num_pstate[MAX_DIMM_PER_PORT];
uint64_t iv_frequency;
uint8_t iv_odt_impedance[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
- uint8_t iv_drv_impedance_pu[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
- uint8_t iv_drv_impedance_pd[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
+ uint16_t iv_drv_impedance_pu[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
+ uint16_t iv_drv_impedance_pd[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
uint8_t iv_slew_rate[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
uint8_t iv_atx_impedance[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
uint8_t iv_atx_slew_rate[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
@@ -834,7 +846,17 @@ class phy_params
///
fapi2::ReturnCode set_OdtWrMapCs(user_input_msdg& io_phy_params) const
{
- io_phy_params.OdtWrMapCs[0] = iv_params.iv_odt_wr_map_cs[0][0];
+ fapi2::buffer<uint16_t> odt_wr_map_cs_buff;
+
+ // TK - Changes needed for Dual Drop / 4U in the future.
+ // Will likely require ODT RD/WR attribute changes
+ odt_wr_map_cs_buff.insert<odt_fields::RANK3, odt_fields::FLD_LENGTH>(iv_params.iv_odt_wr_map_cs[0][3]);
+ odt_wr_map_cs_buff.insert<odt_fields::RANK2, odt_fields::FLD_LENGTH>(iv_params.iv_odt_wr_map_cs[0][2]);
+ odt_wr_map_cs_buff.insert<odt_fields::RANK1, odt_fields::FLD_LENGTH>(iv_params.iv_odt_wr_map_cs[0][1]);
+ odt_wr_map_cs_buff.insert<odt_fields::RANK0, odt_fields::FLD_LENGTH>(iv_params.iv_odt_wr_map_cs[0][0]);
+
+ odt_wr_map_cs_buff.reverse();
+ io_phy_params.OdtWrMapCs[0] = odt_wr_map_cs_buff;
return fapi2::FAPI2_RC_SUCCESS;
}
@@ -845,7 +867,17 @@ class phy_params
///
fapi2::ReturnCode set_OdtRdMapCs(user_input_msdg& io_phy_params) const
{
- io_phy_params.OdtRdMapCs[0] = iv_params.iv_odt_rd_map_cs[0][0];
+ fapi2::buffer<uint16_t> odt_rd_map_cs_buff;
+
+ // TK - Changes needed for Dual Drop / 4U in the future.
+ // Will likely require ODT RD/WR attribute changes
+ odt_rd_map_cs_buff.insert<odt_fields::RANK3, odt_fields::FLD_LENGTH>(iv_params.iv_odt_rd_map_cs[0][3]);
+ odt_rd_map_cs_buff.insert<odt_fields::RANK2, odt_fields::FLD_LENGTH>(iv_params.iv_odt_rd_map_cs[0][2]);
+ odt_rd_map_cs_buff.insert<odt_fields::RANK1, odt_fields::FLD_LENGTH>(iv_params.iv_odt_rd_map_cs[0][1]);
+ odt_rd_map_cs_buff.insert<odt_fields::RANK0, odt_fields::FLD_LENGTH>(iv_params.iv_odt_rd_map_cs[0][0]);
+
+ odt_rd_map_cs_buff.reverse();
+ io_phy_params.OdtRdMapCs[0] = odt_rd_map_cs_buff;
return fapi2::FAPI2_RC_SUCCESS;
}
OpenPOWER on IntegriCloud