diff options
author | Jacob Harvey <jlharvey@us.ibm.com> | 2017-06-19 18:40:43 -0500 |
---|---|---|
committer | Dean Sanner <dsanner@us.ibm.com> | 2017-07-11 06:29:39 -0400 |
commit | f353e9afcfff4de5bec4b646bc435cee252458aa (patch) | |
tree | 3ebe335125796535019c24406ff07450fe139300 /src/import/chips/p9 | |
parent | ad62efb318aebf528b12a2ec934b9f86c33e1572 (diff) | |
download | talos-hostboot-f353e9afcfff4de5bec4b646bc435cee252458aa.tar.gz talos-hostboot-f353e9afcfff4de5bec4b646bc435cee252458aa.zip |
Add in RCD attributes for DD2 debug
Change-Id: Ibd8e3bf3d75982fd14584fbd47b74979d515ea39
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42090
Reviewed-by: STEPHEN GLANCY <sglancy@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>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: Brent Wieman <bwieman@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42133
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
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: Dean Sanner <dsanner@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9')
5 files changed, 429 insertions, 7 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C index f3d7e761f..76e167e35 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C @@ -368,10 +368,93 @@ fapi_try_exit: return fapi2::current_err; } +/// +/// @brief Determines & sets effective config for eff_rcd_mfg_id from SPD +/// @return fapi2::FAPI2_RC_SUCCESS if okay +/// +fapi2::ReturnCode eff_dimm::rcd_mfg_id() +{ + uint16_t l_decoder_val = 0; + uint16_t l_mcs_attrs[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {}; -///////////////////////// -// Member Method implementation -///////////////////////// + // Get & update MCS attribute + FAPI_TRY( eff_rcd_mfg_id(iv_mcs, &l_mcs_attrs[0][0]), "Failed accessing ATTR_MSS_EFF_RCD_MFG_ID" ); + FAPI_TRY( iv_pDecoder->reg_manufacturer_id_code(l_decoder_val), "Failed getting rcd id code from SPD %s", + mss::c_str(iv_dimm) ); + + switch (l_decoder_val) + { + case fapi2::ENUM_ATTR_EFF_RCD_MFG_ID_IDT: + FAPI_INF("%s Register Manufacturer is %s", mss::c_str(iv_dimm), "IDT"); + break; + + case fapi2::ENUM_ATTR_EFF_RCD_MFG_ID_INPHI: + FAPI_INF("%s Register Manufacturer is %s", mss::c_str(iv_dimm), "INPHI"); + break; + + case fapi2::ENUM_ATTR_EFF_RCD_MFG_ID_MONTAGE: + FAPI_INF("%s Register Manufacturer is %s", mss::c_str(iv_dimm), "MONTAGE"); + break; + + default: + FAPI_INF("%s Register Manufacturer is 0x%04x", mss::c_str(iv_dimm), l_decoder_val); + break; + } + + l_mcs_attrs[iv_port_index][iv_dimm_index] = l_decoder_val; + FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_RCD_MFG_ID, iv_mcs, l_mcs_attrs), "Failed to set ATTR_EFF_RCD_MFG_ID" ); + +fapi_try_exit: + return fapi2::current_err; + +} + +/// +/// @brief Determines & sets effective config for eff_register_type from SPD +/// @return fapi2::FAPI2_RC_SUCCESS if okay +/// +fapi2::ReturnCode eff_dimm::register_type() +{ + uint8_t l_decoder_val = 0; + uint8_t l_mcs_attrs[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {}; + + // Get & update MCS attribute + FAPI_TRY( eff_register_type(iv_mcs, &l_mcs_attrs[0][0]), "Failed accessing ATTR_MSS_REGISTER_TYPE" ); + FAPI_TRY( iv_pDecoder->iv_module_decoder->register_and_buffer_type(l_decoder_val), + "Failed getting register_type code from SPD %s", + mss::c_str(iv_dimm) ); + + FAPI_INF("%s Register type is %s", mss::c_str(iv_dimm), l_decoder_val ? "RCD01" : "RCD02"); + + l_mcs_attrs[iv_port_index][iv_dimm_index] = l_decoder_val; + FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_REGISTER_TYPE, iv_mcs, l_mcs_attrs), "Failed to set ATTR_EFF_REGISTER_TYPE" ); + +fapi_try_exit: + return fapi2::current_err; +} + +/// +/// @brief Determines & sets effective config for eff_register_rev type from SPD +/// @return fapi2::FAPI2_RC_SUCCESS if okay +/// +fapi2::ReturnCode eff_dimm::register_rev() +{ + uint8_t l_decoder_val = 0; + uint8_t l_mcs_attrs[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {}; + + // Get & update MCS attribute + FAPI_TRY( eff_register_rev(iv_mcs, &l_mcs_attrs[0][0]), "Failed accessing ATTR_MSS_REGISTER_REV" ); + FAPI_TRY( iv_pDecoder->register_rev_num(l_decoder_val), "Failed getting register_rev code from SPD %s", + mss::c_str(iv_dimm) ); + + FAPI_INF("%s Register rev is 0x%02x", mss::c_str(iv_dimm), l_decoder_val); + l_mcs_attrs[iv_port_index][iv_dimm_index] = l_decoder_val; + FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_REGISTER_REV, iv_mcs, l_mcs_attrs), "Failed to set ATTR_EFF_REGISTER_REV" ); + +fapi_try_exit: + return fapi2::current_err; + +} /// /// @brief Determines & sets effective config for eff_dram_mfg_id type from SPD @@ -387,6 +470,25 @@ fapi2::ReturnCode eff_dimm::dram_mfg_id() FAPI_TRY( iv_pDecoder->dram_manufacturer_id_code(l_decoder_val), "Failed getting dram id code from SPD %s", mss::c_str(iv_dimm) ); + switch (l_decoder_val) + { + case fapi2::ENUM_ATTR_EFF_DRAM_MFG_ID_MICRON: + FAPI_INF("%s Dram Manufacturer is %s", mss::c_str(iv_dimm), "MICRON"); + break; + + case fapi2::ENUM_ATTR_EFF_DRAM_MFG_ID_HYNIX: + FAPI_INF("%s Dram Manufacturer is %s", mss::c_str(iv_dimm), "HYNIX"); + break; + + case fapi2::ENUM_ATTR_EFF_DRAM_MFG_ID_SAMSUNG: + FAPI_INF("%s Dram Manufacturer is %s", mss::c_str(iv_dimm), "SAMSUNG"); + break; + + default: + FAPI_INF("%s Dram Manufacturer is 0x%04x", mss::c_str(iv_dimm), l_decoder_val); + break; + } + l_mcs_attrs[iv_port_index][iv_dimm_index] = l_decoder_val; FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DRAM_MFG_ID, iv_mcs, l_mcs_attrs), "Failed to set ATTR_EFF_DRAM_MFG_ID" ); @@ -423,7 +525,6 @@ fapi2::ReturnCode eff_dimm::dram_width() fapi_try_exit: return fapi2::current_err; - } /// diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H index 4e047e540..7daa12437 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H @@ -154,6 +154,24 @@ class eff_dimm fapi2::ReturnCode dram_mfg_id(); /// + /// @brief Determines & sets effective config for eff_rcd_mfg_id type from SPD + /// @return fapi2::FAPI2_RC_SUCCESS if okay + /// + fapi2::ReturnCode rcd_mfg_id(); + + /// + /// @brief Determines & sets effective config for eff_register_type from SPD + /// @return fapi2::FAPI2_RC_SUCCESS if okay + /// + fapi2::ReturnCode register_type(); + + /// + /// @brief Determines & sets effective config for eff_register_rev type from SPD + /// @return fapi2::FAPI2_RC_SUCCESS if okay + /// + fapi2::ReturnCode register_rev(); + + /// /// @brief Determines & sets effective config for primary stack type /// @return fapi2::FAPI2_RC_SUCCESS if okay /// @@ -190,7 +208,6 @@ class eff_dimm fapi2::ReturnCode dram_density(); /// - /// @brief Determines & sets effective config for dram width /// @return fapi2::FAPI2_RC_SUCCESS if okay /// diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H index 2378ccbd7..cfda1ab5f 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H @@ -19714,6 +19714,90 @@ fapi_try_exit: } /// +/// @brief ATTR_EFF_REGISTER_TYPE getter +/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM> +/// @param[out] ref to the value uint8_t +/// @note Generated by gen_accessors.pl generateParameters (F) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Register Type Decodes SPD Byte 131 creator: mss_eff_cnfg consumer: +/// eff_dimm +/// +inline fapi2::ReturnCode eff_register_type(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value) +{ + uint8_t l_value[2][2]; + auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>(); + auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>(); + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_REGISTER_TYPE, l_mcs, l_value) ); + o_value = l_value[mss::index(l_mca)][mss::index(i_target)]; + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EFF_REGISTER_TYPE: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_EFF_REGISTER_TYPE getter +/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA> +/// @param[out] uint8_t* memory to store the value +/// @note Generated by gen_accessors.pl generateParameters (G) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Register Type Decodes SPD Byte 131 creator: mss_eff_cnfg consumer: +/// eff_dimm +/// +inline fapi2::ReturnCode eff_register_type(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array) +{ + if (o_array == nullptr) + { + FAPI_ERR("nullptr passed to attribute accessor %s", __func__); + return fapi2::FAPI2_RC_INVALID_PARAMETER; + } + + uint8_t l_value[2][2]; + auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>(); + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_REGISTER_TYPE, l_mcs, l_value) ); + memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EFF_REGISTER_TYPE: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_EFF_REGISTER_TYPE getter +/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS> +/// @param[out] uint8_t* memory to store the value +/// @note Generated by gen_accessors.pl generateParameters (H) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Register Type Decodes SPD Byte 131 creator: mss_eff_cnfg consumer: +/// eff_dimm +/// +inline fapi2::ReturnCode eff_register_type(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array) +{ + if (o_array == nullptr) + { + FAPI_ERR("nullptr passed to attribute accessor %s", __func__); + return fapi2::FAPI2_RC_INVALID_PARAMETER; + } + + uint8_t l_value[2][2]; + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_REGISTER_TYPE, i_target, l_value) ); + memcpy(o_array, &l_value, 4); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EFF_REGISTER_TYPE: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// /// @brief ATTR_EFF_DRAM_MFG_ID getter /// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM> /// @param[out] ref to the value uint16_t @@ -19800,6 +19884,174 @@ fapi_try_exit: return fapi2::current_err; } +/// +/// @brief ATTR_EFF_RCD_MFG_ID getter +/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM> +/// @param[out] ref to the value uint16_t +/// @note Generated by gen_accessors.pl generateParameters (F) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Register Manufacturer ID Code Decodes SPD Byte 133 and 134 creator: +/// mss_eff_cnfg +/// +inline fapi2::ReturnCode eff_rcd_mfg_id(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint16_t& o_value) +{ + uint16_t l_value[2][2]; + auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>(); + auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>(); + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_RCD_MFG_ID, l_mcs, l_value) ); + o_value = l_value[mss::index(l_mca)][mss::index(i_target)]; + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EFF_RCD_MFG_ID: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_EFF_RCD_MFG_ID getter +/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA> +/// @param[out] uint16_t* memory to store the value +/// @note Generated by gen_accessors.pl generateParameters (G) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Register Manufacturer ID Code Decodes SPD Byte 133 and 134 creator: +/// mss_eff_cnfg +/// +inline fapi2::ReturnCode eff_rcd_mfg_id(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint16_t* o_array) +{ + if (o_array == nullptr) + { + FAPI_ERR("nullptr passed to attribute accessor %s", __func__); + return fapi2::FAPI2_RC_INVALID_PARAMETER; + } + + uint16_t l_value[2][2]; + auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>(); + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_RCD_MFG_ID, l_mcs, l_value) ); + memcpy(o_array, &(l_value[mss::index(i_target)][0]), 4); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EFF_RCD_MFG_ID: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_EFF_RCD_MFG_ID getter +/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS> +/// @param[out] uint16_t* memory to store the value +/// @note Generated by gen_accessors.pl generateParameters (H) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Register Manufacturer ID Code Decodes SPD Byte 133 and 134 creator: +/// mss_eff_cnfg +/// +inline fapi2::ReturnCode eff_rcd_mfg_id(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint16_t* o_array) +{ + if (o_array == nullptr) + { + FAPI_ERR("nullptr passed to attribute accessor %s", __func__); + return fapi2::FAPI2_RC_INVALID_PARAMETER; + } + + uint16_t l_value[2][2]; + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_RCD_MFG_ID, i_target, l_value) ); + memcpy(o_array, &l_value, 8); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EFF_RCD_MFG_ID: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_EFF_REGISTER_REV getter +/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM> +/// @param[out] ref to the value uint8_t +/// @note Generated by gen_accessors.pl generateParameters (F) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Register Revision Number Decodes SPD Byte 135 creator: +/// mss_eff_cnfg +/// +inline fapi2::ReturnCode eff_register_rev(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value) +{ + uint8_t l_value[2][2]; + auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>(); + auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>(); + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_REGISTER_REV, l_mcs, l_value) ); + o_value = l_value[mss::index(l_mca)][mss::index(i_target)]; + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EFF_REGISTER_REV: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_EFF_REGISTER_REV getter +/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA> +/// @param[out] uint8_t* memory to store the value +/// @note Generated by gen_accessors.pl generateParameters (G) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Register Revision Number Decodes SPD Byte 135 creator: +/// mss_eff_cnfg +/// +inline fapi2::ReturnCode eff_register_rev(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array) +{ + if (o_array == nullptr) + { + FAPI_ERR("nullptr passed to attribute accessor %s", __func__); + return fapi2::FAPI2_RC_INVALID_PARAMETER; + } + + uint8_t l_value[2][2]; + auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>(); + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_REGISTER_REV, l_mcs, l_value) ); + memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EFF_REGISTER_REV: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_EFF_REGISTER_REV getter +/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS> +/// @param[out] uint8_t* memory to store the value +/// @note Generated by gen_accessors.pl generateParameters (H) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Register Revision Number Decodes SPD Byte 135 creator: +/// mss_eff_cnfg +/// +inline fapi2::ReturnCode eff_register_rev(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array) +{ + if (o_array == nullptr) + { + FAPI_ERR("nullptr passed to attribute accessor %s", __func__); + return fapi2::FAPI2_RC_INVALID_PARAMETER; + } + + uint8_t l_value[2][2]; + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_REGISTER_REV, i_target, l_value) ); + memcpy(o_array, &l_value, 4); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EFF_REGISTER_REV: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + /// /// @brief ATTR_MSS_MRW_SAFEMODE_MEM_THROTTLED_N_COMMANDS_PER_PORT getter diff --git a/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C b/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C index 725844974..40ccd52b0 100644 --- a/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C +++ b/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C @@ -84,10 +84,16 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS> for( const auto& l_cache : l_factory_caches ) { + + std::shared_ptr<mss::eff_dimm> l_eff_dimm; FAPI_TRY( mss::eff_dimm::eff_dimm_factory( l_cache, l_eff_dimm)); + FAPI_INF("%s Running eff_config", mss::c_str(l_cache->iv_target) ); + FAPI_TRY( l_eff_dimm->rcd_mfg_id() ); + FAPI_TRY( l_eff_dimm->register_type() ); + FAPI_TRY( l_eff_dimm->register_rev() ); FAPI_TRY( l_eff_dimm->dram_mfg_id() ); FAPI_TRY( l_eff_dimm->dram_width() ); FAPI_TRY( l_eff_dimm->dram_density() ); diff --git a/src/import/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml index 03e92966a..c80160d5e 100755 --- a/src/import/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml +++ b/src/import/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml @@ -5,7 +5,7 @@ <!-- --> <!-- OpenPOWER HostBoot Project --> <!-- --> -<!-- Contributors Listed Below - COPYRIGHT 2016 --> +<!-- Contributors Listed Below - COPYRIGHT 2016,2017 --> <!-- [+] International Business Machines Corp. --> <!-- --> <!-- --> @@ -595,6 +595,23 @@ </attribute> <attribute> + <id>ATTR_EFF_REGISTER_TYPE</id> + <targetType>TARGET_TYPE_MCS</targetType> + <description> + Register Type + Decodes SPD Byte 131 + creator: mss_eff_cnfg + consumer: eff_dimm + </description> + <enum>RCD01 = 0x0, RCD02 = 0x1</enum> + <initToZero></initToZero> + <valueType>uint8</valueType> + <writeable/> + <array>2 2</array> + <mssAccessorName>eff_register_type</mssAccessorName> + </attribute> + + <attribute> <id>ATTR_EFF_DRAM_MFG_ID</id> <targetType>TARGET_TYPE_MCS</targetType> <description> @@ -607,9 +624,38 @@ <initToZero></initToZero> <valueType>uint16</valueType> <writeable/> - <array> 2 2</array> + <array>2 2</array> <mssAccessorName>eff_dram_mfg_id</mssAccessorName> </attribute> + <attribute> + <id>ATTR_EFF_RCD_MFG_ID</id> + <targetType>TARGET_TYPE_MCS</targetType> + <description> + Register Manufacturer ID Code + Decodes SPD Byte 133 and 134 + creator: mss_eff_cnfg + </description> + <enum>INPHI = 0xB304, MONTAGE = 0x3286, IDT = 0xB380 </enum> + <initToZero></initToZero> + <valueType>uint16</valueType> + <writeable/> + <array>2 2</array> + <mssAccessorName>eff_rcd_mfg_id</mssAccessorName> + </attribute> + <attribute> + <id>ATTR_EFF_REGISTER_REV</id> + <targetType>TARGET_TYPE_MCS</targetType> + <description> + Register Revision Number + Decodes SPD Byte 135 + creator: mss_eff_cnfg + </description> + <initToZero></initToZero> + <valueType>uint8</valueType> + <writeable/> + <array>2 2</array> + <mssAccessorName>eff_register_rev</mssAccessorName> + </attribute> </attributes> |