diff options
author | Brian Silver <bsilver@us.ibm.com> | 2016-09-03 21:19:03 -0500 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2016-09-12 13:50:55 -0400 |
commit | 0f29aac88c66f0e5c36756b8fdafe2bf2fbd3dd1 (patch) | |
tree | 70d476c4074efa3ffcf323cc975d4738197338dc /src/import/chips/p9/procedures/hwp/memory/lib/eff_config | |
parent | 5a162834cb4e2fce195c169ece26eef87577f17f (diff) | |
download | talos-hostboot-0f29aac88c66f0e5c36756b8fdafe2bf2fbd3dd1.tar.gz talos-hostboot-0f29aac88c66f0e5c36756b8fdafe2bf2fbd3dd1.zip |
Add VPD decode and attributes for DQ and CKE maps
Fix include path in raw_card.C
Change-Id: I1d02ed92d11667e639e832be72a86cdec5035a90
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29222
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com>
Reviewed-by: Matt K. Light <mklight@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29224
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/eff_config')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C index aeab68657..6a5c4a1b0 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C @@ -3491,6 +3491,8 @@ fapi_try_exit: fapi2::ReturnCode eff_config::decode_vpd(const fapi2::Target<TARGET_TYPE_MCS>& i_target) { uint8_t l_mr_blob[mss::VPD_KEYWORD_MAX] = {0}; + uint8_t l_cke_blob[mss::VPD_KEYWORD_MAX] = {0}; + uint8_t l_dq_blob[mss::VPD_KEYWORD_MAX] = {0}; std::vector<uint8_t*> l_mt_blobs(PORTS_PER_MCS, nullptr); // For sanity. Not sure this will break us, but we're certainly making assumptions below. @@ -3580,7 +3582,39 @@ fapi2::ReturnCode eff_config::decode_vpd(const fapi2::Target<TARGET_TYPE_MCS>& i } } - FAPI_TRY( mss::eff_decode(i_target, l_mt_blobs, l_mr_blob) ); + // Get CKE data + { + fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS> l_vpd_info(fapi2::MemVpdData::CK); + + // Check the max for giggles. Programming bug so we should assert. + FAPI_TRY( mss::getVPD(i_target, l_vpd_info, nullptr) ); + + if (l_vpd_info.iv_size > mss::VPD_KEYWORD_MAX) + { + FAPI_ERR("VPD MR keyword is too big for our array"); + fapi2::Assert(false); + } + + FAPI_TRY( mss::getVPD(i_target, l_vpd_info, &(l_cke_blob[0])) ); + } + + // Get DQ data + { + fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS> l_vpd_info(fapi2::MemVpdData::DQ); + + // Check the max for giggles. Programming bug so we should assert. + FAPI_TRY( mss::getVPD(i_target, l_vpd_info, nullptr) ); + + if (l_vpd_info.iv_size > mss::VPD_KEYWORD_MAX) + { + FAPI_ERR("VPD MR keyword is too big for our array"); + fapi2::Assert(false); + } + + FAPI_TRY( mss::getVPD(i_target, l_vpd_info, &(l_dq_blob[0])) ); + } + + FAPI_TRY( mss::eff_decode(i_target, l_mt_blobs, l_mr_blob, l_cke_blob, l_dq_blob) ); fapi_try_exit: |