summaryrefslogtreecommitdiffstats
path: root/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/exp_draminit_utils.H
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/exp_draminit_utils.H')
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/exp_draminit_utils.H44
1 files changed, 25 insertions, 19 deletions
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 4309c7fe4..fac27601b 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
@@ -161,9 +161,9 @@ struct phy_params_t
///
uint32_t iv_version_number;
uint8_t iv_dimm_type[MAX_DIMM_PER_PORT];
- uint16_t iv_chip_select;
+ uint8_t iv_chip_select[MAX_DIMM_PER_PORT];
uint8_t iv_dram_data_width[MAX_DIMM_PER_PORT];
- uint16_t iv_height_3DS;
+ uint16_t iv_height_3DS[MAX_DIMM_PER_PORT];
uint16_t iv_dbyte_macro[MAX_DIMM_PER_PORT];
uint32_t iv_nibble[MAX_DIMM_PER_PORT];
uint8_t iv_addr_mirror[MAX_DIMM_PER_PORT];
@@ -194,8 +194,8 @@ struct phy_params_t
uint8_t iv_dram_dic[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
uint8_t iv_dram_preamble[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
uint8_t iv_phy_equalization[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
- uint8_t iv_init_vref_dq;
- uint16_t iv_init_phy_vref;
+ uint8_t iv_init_vref_dq[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
+ uint8_t iv_init_phy_vref[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
uint8_t iv_odt_wr_map_cs[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
uint8_t iv_odt_rd_map_cs[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
uint8_t iv_geardown_mode[MAX_DIMM_PER_PORT][MAX_RANK_PER_DIMM];
@@ -244,9 +244,9 @@ class phy_params
uint8_t l_master_ranks[MAX_DIMM_PER_PORT] = {};
// Fetch attributes and populate the member variables
FAPI_TRY(mss::attr::get_dimm_type(i_target, iv_params.iv_dimm_type));
- FAPI_TRY(mss::attr::get_exp_cs_present(i_target, iv_params.iv_chip_select));
+ FAPI_TRY(mss::attr::get_dimm_ranks_configed(i_target, iv_params.iv_chip_select));
FAPI_TRY(mss::attr::get_dram_width(i_target, iv_params.iv_dram_data_width));
- FAPI_TRY(mss::attr::get_exp_3ds_height(i_target, iv_params.iv_height_3DS));
+ FAPI_TRY(mss::attr::get_3ds_height(i_target, iv_params.iv_height_3DS));
FAPI_TRY(mss::attr::get_byte_enables(i_target, iv_params.iv_dbyte_macro));
FAPI_TRY(mss::attr::get_nibble_enables(i_target, iv_params.iv_nibble));
FAPI_TRY(mss::attr::get_exp_dram_address_mirroring(i_target, iv_params.iv_addr_mirror));
@@ -378,7 +378,14 @@ class phy_params
///
fapi2::ReturnCode setup_CsPresent(user_input_msdg& io_phy_params) const
{
- io_phy_params.CsPresent = iv_params.iv_chip_select;
+ fapi2::buffer<uint8_t> l_cs_present(iv_params.iv_chip_select[0]);
+
+ // Flip buffer (Needs to be right aligned, currently 0bXXXX0000)
+ l_cs_present.reverse();
+
+ // Now extend to 16 bits for phy_params struct
+ io_phy_params.CsPresent = static_cast<uint16_t>(l_cs_present);
+
return fapi2::FAPI2_RC_SUCCESS;
}
@@ -428,21 +435,21 @@ class phy_params
///
fapi2::ReturnCode setup_Height3DS(user_input_msdg& io_phy_params) const
{
- switch (iv_params.iv_height_3DS)
+ switch (iv_params.iv_height_3DS[0])
{
- case fapi2::ENUM_ATTR_MEM_EXP_3DS_HEIGHT_PLANAR:
+ case fapi2::ENUM_ATTR_MEM_3DS_HEIGHT_PLANAR:
io_phy_params.Height3DS = MSDG_PLANAR;
break;
- case fapi2::ENUM_ATTR_MEM_EXP_3DS_HEIGHT_H2:
+ case fapi2::ENUM_ATTR_MEM_3DS_HEIGHT_H2:
io_phy_params.Height3DS = MSDG_H2;
break;
- case fapi2::ENUM_ATTR_MEM_EXP_3DS_HEIGHT_H4:
+ case fapi2::ENUM_ATTR_MEM_3DS_HEIGHT_H4:
io_phy_params.Height3DS = MSDG_H4;
break;
- case fapi2::ENUM_ATTR_MEM_EXP_3DS_HEIGHT_H8:
+ case fapi2::ENUM_ATTR_MEM_3DS_HEIGHT_H8:
io_phy_params.Height3DS = MSDG_H8;
break;
@@ -452,9 +459,9 @@ class phy_params
fapi2::MSS_EXP_DRAMINIT_UNSUPPORTED_3DS_HEIGHT().
set_OCMB_TARGET(l_ocmb).
set_PORT(iv_target).
- set_HEIGHT(iv_params.iv_height_3DS),
+ set_HEIGHT(iv_params.iv_height_3DS[0]),
"%s 3DS Height is not a supported (%d)",
- mss::c_str(iv_target), iv_params.iv_height_3DS);
+ mss::c_str(iv_target), iv_params.iv_height_3DS[0]);
break;
}
@@ -604,7 +611,8 @@ class phy_params
///
fapi2::ReturnCode set_Frequency(user_input_msdg& io_phy_params) const
{
- io_phy_params.Frequency[0] = static_cast<uint16_t>(iv_params.iv_frequency);
+ // Divide by 2 to convert from DRAM freq to MEMCLK freq
+ io_phy_params.Frequency[0] = static_cast<uint16_t>(iv_params.iv_frequency / 2);
return fapi2::FAPI2_RC_SUCCESS;
}
@@ -804,7 +812,7 @@ class phy_params
///
fapi2::ReturnCode set_InitVrefDQ(user_input_msdg& io_phy_params) const
{
- io_phy_params.InitVrefDQ[0] = iv_params.iv_init_vref_dq;
+ io_phy_params.InitVrefDQ[0] = iv_params.iv_init_vref_dq[0][0];
return fapi2::FAPI2_RC_SUCCESS;
}
@@ -815,9 +823,7 @@ class phy_params
///
fapi2::ReturnCode set_InitPhyVref(user_input_msdg& io_phy_params) const
{
- // Attr Vref = percentage of VDDQ, Receiver Vref = VDDQ*PhyVref[6:0]/128
- // conversion is attr_value * 128 / 100
- io_phy_params.InitPhyVref[0] = iv_params.iv_init_phy_vref * 128 / 100;
+ io_phy_params.InitPhyVref[0] = iv_params.iv_init_phy_vref[0][0];
return fapi2::FAPI2_RC_SUCCESS;
}
OpenPOWER on IntegriCloud