From edce11bc98f220b92a9906929891ea430b77a54d Mon Sep 17 00:00:00 2001 From: Mark Pizzutillo Date: Thu, 20 Jun 2019 13:15:47 -0500 Subject: Fix more exp_draminit parameters Change-Id: I1183b37048b6075bd85276058f123883efb351e9 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79299 Tested-by: FSP CI Jenkins Reviewed-by: Louis Stermole Tested-by: Jenkins Server Tested-by: Hostboot CI Tested-by: HWSV CI Reviewed-by: STEPHEN GLANCY Reviewed-by: RYAN P. KING Reviewed-by: Jennifer A Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79320 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Christian R. Geddes --- .../memory/lib/data_engine/attr_engine_traits.H | 237 +++++++++++++++++++-- .../memory/lib/mss_generic_attribute_getters.H | 32 +-- .../memory/lib/spd/ddimm/ddr4/efd_traits_ddr4.H | 24 +-- .../generic_memory_si_attributes.xml | 24 ++- 4 files changed, 267 insertions(+), 50 deletions(-) (limited to 'src/import/generic') diff --git a/src/import/generic/memory/lib/data_engine/attr_engine_traits.H b/src/import/generic/memory/lib/data_engine/attr_engine_traits.H index 5de4f0da2..d78a0aa95 100644 --- a/src/import/generic/memory/lib/data_engine/attr_engine_traits.H +++ b/src/import/generic/memory/lib/data_engine/attr_engine_traits.H @@ -595,7 +595,28 @@ struct attrEngineTraits static inline fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - return i_efd_data->phy_odt_impedance(o_setting); + uint8_t l_odt_impedance = 0; + + static const std::vector< std::pair > ODT_IMP_MAP = + { + // {key byte, PHY ODT IMP (ohms)} + {0b00000, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_DQ_DQS_DISABLE}, + {0b00001, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_DQ_DQS_OHM_40}, + {0b00010, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_DQ_DQS_OHM_60}, + {0b00011, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_DQ_DQS_OHM_80}, + {0b00100, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_DQ_DQS_OHM_120}, + {0b00101, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_DQ_DQS_OHM_240}, + + // All others reserved + }; + const auto l_ocmb = i_efd_data->get_ocmb_target(); + + FAPI_TRY(i_efd_data->phy_odt_impedance(l_odt_impedance)); + // Map SPD value to desired setting + FAPI_TRY(lookup_table_check(l_ocmb, ODT_IMP_MAP, mss::SET_SI_MC_RCV_IMP_DQ_DQS, l_odt_impedance, o_setting)); + + fapi_try_exit: + return fapi2::current_err; } }; @@ -645,7 +666,41 @@ struct attrEngineTraits static inline fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - return i_efd_data->phy_drive_impedance_pull_up(o_setting); + uint8_t l_phy_drv_imp_pu; + + static const std::vector< std::pair > PHY_DRV_IMP_PU_MAP = + { + // {key byte, DRV IMP PU (ohms)} + {0b000000, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_DISABLE}, + {0b000001, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_28}, + {0b000010, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_30}, + {0b000011, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_32}, + {0b000100, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_34}, + {0b000101, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_36}, + {0b000110, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_40}, + {0b000111, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_43}, + {0b001000, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_48}, + {0b001001, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_53}, + {0b001010, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_60}, + {0b001011, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_68}, + {0b001100, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_80}, + {0b001101, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_96}, + {0b001110, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_120}, + {0b001111, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_160}, + {0b010000, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_240}, + {0b010001, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_OHM_480}, + + // All others reserved + }; + const auto l_ocmb = i_efd_data->get_ocmb_target(); + + FAPI_TRY(i_efd_data->phy_drive_impedance_pull_up(l_phy_drv_imp_pu)); + // Map SPD value to desired setting + FAPI_TRY(lookup_table_check(l_ocmb, PHY_DRV_IMP_PU_MAP, mss::SET_SI_MC_DRV_IMP_DQ_DQS_PULL_UP, + static_cast(l_phy_drv_imp_pu), o_setting)); + + fapi_try_exit: + return fapi2::current_err; } }; @@ -695,7 +750,41 @@ struct attrEngineTraits static inline fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - return i_efd_data->phy_drive_impedance_pull_down(o_setting); + uint8_t l_phy_drv_imp_pd = 0; + + static const std::vector< std::pair > PHY_DRV_IMP_PD_MAP = + { + // {key byte, DRV IMP PD (ohms)} + {0b000000, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_DISABLE}, + {0b000001, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_28}, + {0b000010, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_30}, + {0b000011, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_32}, + {0b000100, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_34}, + {0b000101, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_36}, + {0b000110, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_40}, + {0b000111, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_43}, + {0b001000, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_48}, + {0b001001, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_53}, + {0b001010, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_60}, + {0b001011, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_68}, + {0b001100, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_80}, + {0b001101, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_96}, + {0b001110, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_120}, + {0b001111, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_160}, + {0b010000, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_240}, + {0b010001, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_OHM_480}, + + // All others reserved + }; + const auto l_ocmb = i_efd_data->get_ocmb_target(); + + FAPI_TRY(i_efd_data->phy_drive_impedance_pull_down(l_phy_drv_imp_pd)); + // Map SPD value to desired setting + FAPI_TRY(lookup_table_check(l_ocmb, PHY_DRV_IMP_PD_MAP, mss::SET_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN, + static_cast(l_phy_drv_imp_pd), o_setting)); + + fapi_try_exit: + return fapi2::current_err; } }; @@ -796,7 +885,29 @@ struct attrEngineTraits static inline fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - return i_efd_data->atx_impedance(o_setting); + uint8_t l_atx_impedance = 0; + + static const std::vector< std::pair > ATX_IMP_MAP = + { + // {key byte, ATX IMP (ohm)} + {0b0000, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CMD_ADDR_DISABLE}, + {0b0001, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CMD_ADDR_OHM_20}, + {0b0010, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CMD_ADDR_OHM_24}, + {0b0011, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CMD_ADDR_OHM_30}, + {0b0100, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CMD_ADDR_OHM_40}, + {0b0101, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CMD_ADDR_OHM_60}, + {0b0110, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CMD_ADDR_OHM_120}, + + // All others reserved + }; + const auto l_ocmb = i_efd_data->get_ocmb_target(); + + FAPI_TRY(i_efd_data->atx_impedance(l_atx_impedance)); + // Map SPD value to desired setting + FAPI_TRY(lookup_table_check(l_ocmb, ATX_IMP_MAP, mss::SET_SI_MC_DRV_IMP_CMD_ADDR, l_atx_impedance, o_setting)); + + fapi_try_exit: + return fapi2::current_err; } }; @@ -896,7 +1007,29 @@ struct attrEngineTraits static inline fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - return i_efd_data->ck_impedance(o_setting); + uint8_t l_ck_impedance = 0; + + static const std::vector< std::pair > CK_IMP_MAP = + { + // {key byte, CK IMP (ohm)} + {0b0000, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CLK_DISABLE}, + {0b0001, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CLK_OHM_20}, + {0b0010, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CLK_OHM_24}, + {0b0011, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CLK_OHM_30}, + {0b0100, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CLK_OHM_40}, + {0b0101, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CLK_OHM_60}, + {0b0110, fapi2::ENUM_ATTR_MEM_SI_MC_DRV_IMP_CLK_OHM_120}, + + // All others reserved + }; + const auto l_ocmb = i_efd_data->get_ocmb_target(); + + FAPI_TRY(i_efd_data->ck_impedance(l_ck_impedance)); + // Map SPD value to desired setting + FAPI_TRY(lookup_table_check(l_ocmb, CK_IMP_MAP, mss::SET_SI_MC_DRV_IMP_CLK, l_ck_impedance, o_setting)); + + fapi_try_exit: + return fapi2::current_err; } }; @@ -996,7 +1129,29 @@ struct attrEngineTraits static inline fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - return i_efd_data->alert_odt_impedance(o_setting); + uint8_t l_alert_odt_imp = 0; + + static const std::vector< std::pair > ALERT_ODT_IMP_MAP = + { + // {key byte, ALERT ODT IMP (ohms)} + {0b0000, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_ALERT_N_DISABLE}, + {0b0001, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_ALERT_N_OHM_40}, + {0b0010, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_ALERT_N_OHM_48}, + {0b0011, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_ALERT_N_OHM_60}, + {0b0100, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_ALERT_N_OHM_80}, + {0b0101, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_ALERT_N_OHM_120}, + {0b0110, fapi2::ENUM_ATTR_MEM_SI_MC_RCV_IMP_ALERT_N_OHM_240}, + + // All others reserved + }; + const auto l_ocmb = i_efd_data->get_ocmb_target(); + + FAPI_TRY(i_efd_data->alert_odt_impedance(l_alert_odt_imp)); + // Map SPD value to desired setting + FAPI_TRY(lookup_table_check(l_ocmb, ALERT_ODT_IMP_MAP, mss::SET_SI_MC_RCV_IMP_ALERT_N, l_alert_odt_imp, o_setting)); + + fapi_try_exit: + return fapi2::current_err; } }; @@ -1046,7 +1201,27 @@ struct attrEngineTraits static inline fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - return i_efd_data->dram_rtt_nom(o_setting); + uint8_t l_rtt_nom = 0; + + static const std::vector< std::pair > RTT_NOM_MAP = + { + {0b0000, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_NOM_DISABLE}, + {0b0001, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_NOM_OHM34}, + {0b0010, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_NOM_OHM40}, + {0b0011, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_NOM_OHM60}, + {0b0100, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_NOM_OHM80}, + {0b0101, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_NOM_OHM120}, + {0b0110, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_NOM_OHM240}, + // All others reserved + }; + const auto l_ocmb = i_efd_data->get_ocmb_target(); + + FAPI_TRY(i_efd_data->dram_rtt_nom(l_rtt_nom)); + // Map SPD value to desired setting + FAPI_TRY(lookup_table_check(l_ocmb, RTT_NOM_MAP, mss::SET_SI_DRAM_RTT_NOM, l_rtt_nom, o_setting)); + + fapi_try_exit: + return fapi2::current_err; } }; @@ -1096,7 +1271,24 @@ struct attrEngineTraits static inline fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - return i_efd_data->dram_rtt_wr(o_setting); + uint8_t l_rtt_wr = 0; + + static const std::vector< std::pair > RTT_WR_MAP = + { + {0b0000, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_WR_DISABLE}, + {0b0001, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_WR_OHM80}, + {0b0010, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_WR_OHM120}, + {0b0011, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_WR_OHM240}, + // All others reserved + }; + const auto l_ocmb = i_efd_data->get_ocmb_target(); + + FAPI_TRY(i_efd_data->dram_rtt_wr(l_rtt_wr)); + // Map SPD value to desired setting + FAPI_TRY(lookup_table_check(l_ocmb, RTT_WR_MAP, mss::SET_SI_DRAM_RTT_WR, l_rtt_wr, o_setting)); + + fapi_try_exit: + return fapi2::current_err; } }; @@ -1146,7 +1338,29 @@ struct attrEngineTraits static inline fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - return i_efd_data->dram_rtt_park(o_setting); + uint8_t l_rtt_park = 0; + + static const std::vector< std::pair > RTT_PARK_MAP = + { + // {key byte, RTT PARK (ohms)} + {0b0000, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_PARK_DISABLE}, + {0b0001, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_PARK_OHM34}, + {0b0010, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_PARK_OHM40}, + {0b0011, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_PARK_OHM48}, + {0b0100, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_PARK_OHM60}, + {0b0101, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_PARK_OHM80}, + {0b0110, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_PARK_OHM120}, + {0b0111, fapi2::ENUM_ATTR_MEM_SI_DRAM_RTT_PARK_OHM240}, + // All others reserved + }; + const auto l_ocmb = i_efd_data->get_ocmb_target(); + + FAPI_TRY(i_efd_data->dram_rtt_park(l_rtt_park)); + // Map SPD value to desired setting + FAPI_TRY(lookup_table_check(l_ocmb, RTT_PARK_MAP, mss::SET_SI_DRAM_RTT_PARK, l_rtt_park, o_setting)); + + fapi_try_exit: + return fapi2::current_err; } }; @@ -1299,7 +1513,7 @@ struct attrEngineTraits { static const std::vector< std::pair > DRAM_DIC_MAP = { - // {key byte, capacity in GBs} + // {key byte, DRAM DIC (ohms)} {0, fapi2::ENUM_ATTR_MEM_SI_DRAM_DRV_IMP_DQ_DQS_DISABLE}, {1, fapi2::ENUM_ATTR_MEM_SI_DRAM_DRV_IMP_DQ_DQS_OHM34}, {2, fapi2::ENUM_ATTR_MEM_SI_DRAM_DRV_IMP_DQ_DQS_OHM48}, @@ -1364,7 +1578,6 @@ struct attrEngineTraits static fapi2::ReturnCode get_value_to_set(const std::shared_ptr& i_efd_data, attr_integral_type& o_setting) { - fapi2::buffer l_buffer; uint8_t l_value = 0; switch(i_efd_data->get_rank()) @@ -1735,7 +1948,7 @@ struct attrEngineTraits static const std::vector< std::pair > HEIGHT_3DS_MAP = { - // {key byte, device width (bits)} + // {key byte, 3DS HEIGHT} {1, fapi2::ENUM_ATTR_MEM_3DS_HEIGHT_PLANAR}, {2, fapi2::ENUM_ATTR_MEM_3DS_HEIGHT_H2}, {4, fapi2::ENUM_ATTR_MEM_3DS_HEIGHT_H4}, diff --git a/src/import/generic/memory/lib/mss_generic_attribute_getters.H b/src/import/generic/memory/lib/mss_generic_attribute_getters.H index ecc9af5ff..6051f7d39 100644 --- a/src/import/generic/memory/lib/mss_generic_attribute_getters.H +++ b/src/import/generic/memory/lib/mss_generic_attribute_getters.H @@ -3724,20 +3724,20 @@ fapi_try_exit: /// /// @brief ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN getter /// @param[in] const ref to the TARGET_TYPE_DIMM -/// @param[out] uint8_t&[] array reference to store the value +/// @param[out] uint16_t&[] array reference to store the value /// @note Generated by gen_accessors.pl generate_mc_port_params /// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK /// @note Array[DIMM][RANK] Memory Controller side Drive Impedance Pull Down for Data and /// Data Strobe Lines in Ohms. /// inline fapi2::ReturnCode get_si_mc_drv_imp_dq_dqs_pull_down(const fapi2::Target& i_target, - uint8_t (&o_array)[4]) + uint16_t (&o_array)[4]) { - uint8_t l_value[2][4] = {}; + uint16_t l_value[2][4] = {}; const auto l_port = i_target.getParent(); FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN, l_port, l_value) ); - memcpy(o_array, &(l_value[mss::index(i_target)][0]), 4); + memcpy(o_array, &(l_value[mss::index(i_target)][0]), 8); return fapi2::current_err; fapi_try_exit: @@ -3749,19 +3749,19 @@ fapi_try_exit: /// /// @brief ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN getter /// @param[in] const ref to the TARGET_TYPE_MEM_PORT -/// @param[out] uint8_t&[] array reference to store the value +/// @param[out] uint16_t&[] array reference to store the value /// @note Generated by gen_accessors.pl generate_mc_port_params /// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK /// @note Array[DIMM][RANK] Memory Controller side Drive Impedance Pull Down for Data and /// Data Strobe Lines in Ohms. /// inline fapi2::ReturnCode get_si_mc_drv_imp_dq_dqs_pull_down(const fapi2::Target& i_target, - uint8_t (&o_array)[2][4]) + uint16_t (&o_array)[2][4]) { - uint8_t l_value[2][4] = {}; + uint16_t l_value[2][4] = {}; FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN, i_target, l_value) ); - memcpy(o_array, &l_value, 8); + memcpy(o_array, &l_value, 16); return fapi2::current_err; fapi_try_exit: @@ -3773,20 +3773,20 @@ fapi_try_exit: /// /// @brief ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP getter /// @param[in] const ref to the TARGET_TYPE_DIMM -/// @param[out] uint8_t&[] array reference to store the value +/// @param[out] uint16_t&[] array reference to store the value /// @note Generated by gen_accessors.pl generate_mc_port_params /// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK /// @note Array[DIMM][RANK] Memory Controller side Drive Impedance Pull Up for Data and Data /// Strobe Lines in Ohms. /// inline fapi2::ReturnCode get_si_mc_drv_imp_dq_dqs_pull_up(const fapi2::Target& i_target, - uint8_t (&o_array)[4]) + uint16_t (&o_array)[4]) { - uint8_t l_value[2][4] = {}; + uint16_t l_value[2][4] = {}; const auto l_port = i_target.getParent(); FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP, l_port, l_value) ); - memcpy(o_array, &(l_value[mss::index(i_target)][0]), 4); + memcpy(o_array, &(l_value[mss::index(i_target)][0]), 8); return fapi2::current_err; fapi_try_exit: @@ -3798,19 +3798,19 @@ fapi_try_exit: /// /// @brief ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP getter /// @param[in] const ref to the TARGET_TYPE_MEM_PORT -/// @param[out] uint8_t&[] array reference to store the value +/// @param[out] uint16_t&[] array reference to store the value /// @note Generated by gen_accessors.pl generate_mc_port_params /// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK /// @note Array[DIMM][RANK] Memory Controller side Drive Impedance Pull Up for Data and Data /// Strobe Lines in Ohms. /// inline fapi2::ReturnCode get_si_mc_drv_imp_dq_dqs_pull_up(const fapi2::Target& i_target, - uint8_t (&o_array)[2][4]) + uint16_t (&o_array)[2][4]) { - uint8_t l_value[2][4] = {}; + uint16_t l_value[2][4] = {}; FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP, i_target, l_value) ); - memcpy(o_array, &l_value, 8); + memcpy(o_array, &l_value, 16); return fapi2::current_err; fapi_try_exit: diff --git a/src/import/generic/memory/lib/spd/ddimm/ddr4/efd_traits_ddr4.H b/src/import/generic/memory/lib/spd/ddimm/ddr4/efd_traits_ddr4.H index 1acdc554d..447e661dc 100644 --- a/src/import/generic/memory/lib/spd/ddimm/ddr4/efd_traits_ddr4.H +++ b/src/import/generic/memory/lib/spd/ddimm/ddr4/efd_traits_ddr4.H @@ -294,11 +294,11 @@ class readerTraits { public: - static constexpr size_t COMPARISON_VAL = 0x00; + static constexpr size_t COMPARISON_VAL = 0x0F; static constexpr const char* FIELD_STR = "PHY Slew Rate DQ_DQS"; template - using COMPARISON_OP = std::equal_to; + using COMPARISON_OP = std::less_equal; }; /// @@ -332,11 +332,11 @@ class readerTraits < fields< mss::spd::device_type::DDR4, mss::efd::id::DDR4_CUS { public: - static constexpr size_t COMPARISON_VAL = 0x00; + static constexpr size_t COMPARISON_VAL = 0x0E; static constexpr const char* FIELD_STR = "ATX Slew rate"; template - using COMPARISON_OP = std::equal_to; + using COMPARISON_OP = std::less_equal; }; /// @@ -370,11 +370,11 @@ class readerTraits < fields< mss::spd::device_type::DDR4, mss::efd::id::DDR4_CUS { public: - static constexpr size_t COMPARISON_VAL = 0x00; + static constexpr size_t COMPARISON_VAL = 0x0E; static constexpr const char* FIELD_STR = "CK Slew rate"; template - using COMPARISON_OP = std::equal_to; + using COMPARISON_OP = std::less_equal; }; /// @@ -408,11 +408,11 @@ class readerTraits < fields< mss::spd::device_type::DDR4, mss::efd::id::DDR4_CUS { public: - static constexpr size_t COMPARISON_VAL = 0x00; + static constexpr size_t COMPARISON_VAL = 0x07; static constexpr const char* FIELD_STR = "DRAM RTT Nom"; template - using COMPARISON_OP = std::equal_to; + using COMPARISON_OP = std::less_equal; }; /// @@ -503,11 +503,11 @@ class readerTraits < fields< mss::spd::device_type::DDR4, mss::efd::id::DDR4_CUS { public: - static constexpr size_t COMPARISON_VAL = 0x00; + static constexpr size_t COMPARISON_VAL = 0x04; static constexpr const char* FIELD_STR = "DRAM RTT WR"; template - using COMPARISON_OP = std::equal_to; + using COMPARISON_OP = std::less_equal; }; /// @@ -598,11 +598,11 @@ class readerTraits < fields< mss::spd::device_type::DDR4, mss::efd::id::DDR4_CUS { public: - static constexpr size_t COMPARISON_VAL = 0x00; + static constexpr size_t COMPARISON_VAL = 0x07; static constexpr const char* FIELD_STR = "DRAM RTT Park"; template - using COMPARISON_OP = std::equal_to; + using COMPARISON_OP = std::less_equal; }; /// diff --git a/src/import/generic/procedures/xml/attribute_info/generic_memory_si_attributes.xml b/src/import/generic/procedures/xml/attribute_info/generic_memory_si_attributes.xml index d8410a5a0..38eccdbe3 100644 --- a/src/import/generic/procedures/xml/attribute_info/generic_memory_si_attributes.xml +++ b/src/import/generic/procedures/xml/attribute_info/generic_memory_si_attributes.xml @@ -140,7 +140,7 @@ uint8 - DISABLE = 0, OHM34 = 34, OHM40 = 40, OHM48 = 48, OHM60 = 60, OHM80 = 80, OHM120 = 120, OHM240 = 240 + DISABLE = 0, OHM34 = 34, OHM40 = 40, OHM60 = 60, OHM80 = 80, OHM120 = 120, OHM240 = 240 ohm si_dram_rtt_nom 2 4 @@ -172,7 +172,7 @@ uint8 - DISABLE = 0, HIGHZ = 1, OHM80 = 80, OHM120 = 120, OHM240 = 240 + DISABLE = 0, OHM80 = 80, OHM120 = 120, OHM240 = 240 ohm si_dram_rtt_wr 2 4 @@ -249,7 +249,7 @@ uint8 - DISABLE = 0 + DISABLE = 0, OHM_20 = 20, OHM_24 = 24, OHM_30 = 30, OHM_40 = 40, OHM_60 = 60, OHM_120 = 120 ohm si_mc_drv_imp_clk 2 4 @@ -265,7 +265,7 @@ uint8 - DISABLE = 0 + DISABLE = 0, OHM_20 = 20, OHM_24 = 24, OHM_30 = 30, OHM_40 = 40, OHM_60 = 60, OHM_120 = 120 ohm si_mc_drv_imp_cmd_addr 2 4 @@ -311,9 +311,11 @@ Memory Controller side Drive Impedance Pull Down for Data and Data Strobe Lines in Ohms. - uint8 + uint16 - DISABLE = 0 + DISABLE = 0, OHM_28 = 28, OHM_30 = 30, OHM_32 = 32, OHM_34 = 34, OHM_36 = 36, OHM_40 = 40, OHM_43 = 43, + OHM_48 = 48, OHM_53 = 53, OHM_60 = 60, OHM_68 = 68, OHM_80 = 80, OHM_96 = 96, OHM_120 = 120, OHM_160 = 160, + OHM_240 = 240, OHM_480 = 480 ohm si_mc_drv_imp_dq_dqs_pull_down 2 4 @@ -327,9 +329,11 @@ Memory Controller side Drive Impedance Pull Up for Data and Data Strobe Lines in Ohms. - uint8 + uint16 - DISABLE = 0 + DISABLE = 0, OHM_28 = 28, OHM_30 = 30, OHM_32 = 32, OHM_34 = 34, OHM_36 = 36, OHM_40 = 40, OHM_43 = 43, + OHM_48 = 48, OHM_53 = 53, OHM_60 = 60, OHM_68 = 68, OHM_80 = 80, OHM_96 = 96, OHM_120 = 120, OHM_160 = 160, + OHM_240 = 240, OHM_480 = 480 ohm si_mc_drv_imp_dq_dqs_pull_up 2 4 @@ -424,7 +428,7 @@ uint8 - DISABLE = 0 + DISABLE = 0, OHM_40 = 40, OHM_48 = 48, OHM_60 = 60, OHM_80 = 80, OHM_120 = 120, OHM_240 = 240 ohm si_mc_rcv_imp_alert_n 2 4 @@ -440,7 +444,7 @@ uint8 - DISABLE = 0 + DISABLE = 0, OHM_40 = 40, OHM_60 = 60, OHM_80 = 80, OHM_120 = 120, OHM_240 = 240 ohm si_mc_rcv_imp_dq_dqs 2 4 -- cgit v1.2.1