summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
diff options
context:
space:
mode:
authorJacob Harvey <jlharvey@us.ibm.com>2017-06-19 18:40:43 -0500
committerDean Sanner <dsanner@us.ibm.com>2017-07-11 06:29:39 -0400
commitf353e9afcfff4de5bec4b646bc435cee252458aa (patch)
tree3ebe335125796535019c24406ff07450fe139300 /src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
parentad62efb318aebf528b12a2ec934b9f86c33e1572 (diff)
downloadtalos-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/procedures/hwp/memory/lib/dimm/eff_dimm.C')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C109
1 files changed, 105 insertions, 4 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;
-
}
///
OpenPOWER on IntegriCloud