diff options
author | Mark Pizzutillo <Mark.Pizzutillo@ibm.com> | 2019-09-16 17:08:27 -0400 |
---|---|---|
committer | Daniel M Crowell <dcrowell@us.ibm.com> | 2019-10-17 15:27:03 -0500 |
commit | 8f549e7548fb45819fc4fd8637448f428f14eec1 (patch) | |
tree | 0bd9d8d0361ba7e511794ff4b6e1ea75f2b0ccde /src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C | |
parent | 70b54e6ae12665ccc0070e896039faadd52333f7 (diff) | |
download | talos-hostboot-8f549e7548fb45819fc4fd8637448f428f14eec1.tar.gz talos-hostboot-8f549e7548fb45819fc4fd8637448f428f14eec1.zip |
Add code and workarounds for *_omi_setup and *_omi_train for Swift
Change-Id: I139357a553e621b25b46bee6303357c712b67be2
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83848
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Dev-Ready: Steven B Janssen <janssens@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: Christian R Geddes <crgeddes@us.ibm.com>
Reviewed-by: Louis Stermole <stermole@us.ibm.com>
Reviewed-by: Jennifer A Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83905
Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Tested-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C')
-rw-r--r-- | src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C b/src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C index 5913df90d..2075dfc5a 100644 --- a/src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C +++ b/src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C @@ -62,15 +62,8 @@ fapi2::ReturnCode p9a_omi_train( const fapi2::Target<fapi2::TARGET_TYPE_OMI>& i_ FAPI_INF("%s Start p9a_omi_train", mss::c_str(i_target)); - const auto& l_mc = mss::find_target<fapi2::TARGET_TYPE_MC>(i_target); const auto& l_ocmbs = mss::find_targets<fapi2::TARGET_TYPE_OCMB_CHIP>(i_target); - FAPI_TRY(mss::mc::setup_mc_mcn_config(l_mc)); - FAPI_TRY(mss::mc::setup_mc_config1(i_target)); - FAPI_TRY(mss::mc::setup_mc_cya_bits(i_target)); - FAPI_TRY(mss::mc::setup_mc_error_action(i_target)); - FAPI_TRY(mss::mc::setup_mc_rmt_config(i_target)); - if(l_ocmbs.empty()) { // No ocmbs, no training needed @@ -82,18 +75,32 @@ fapi2::ReturnCode p9a_omi_train( const fapi2::Target<fapi2::TARGET_TYPE_OMI>& i_ const auto& l_ocmb = l_ocmbs[0]; const auto& l_proc = mss::find_target<fapi2::TARGET_TYPE_PROC_CHIP>(l_ocmb); uint8_t l_dl_x4_backoff_en = 0; - bool l_workaround_required = false; + bool l_gem_or_non_axone_workaround = false; + bool l_axone_workarounds_required = false; + uint8_t l_proc_type = 0; + uint8_t l_ocmb_type = 0; // Get BACKOFF_ENABLE CHIP_EC attribute FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_OMI_DL_X4_BACKOFF_ENABLE, l_ocmb, l_dl_x4_backoff_en), "Error getting ATTR_CHIP_EC_FEATURE_OMI_DL_X4_BACKOFF_ENABLE"); - // Determine if workaround will be performed, if so, perform it - FAPI_TRY(mss::workarounds::mc::is_prbs_omi_required(l_ocmb, l_proc, l_workaround_required)); + // Determine if workarounds will be performed, if so, perform them + FAPI_TRY(mss::workarounds::mc::get_ocmb_proc_types(l_ocmb, l_proc, l_ocmb_type, l_proc_type)); + l_gem_or_non_axone_workaround = mss::workarounds::mc::is_prbs_omi_required(l_ocmb_type, l_proc_type); + l_axone_workarounds_required = mss::workarounds::mc::is_prbs_omi_axone_required(l_ocmb_type, l_proc_type); - if (l_workaround_required) + if (l_axone_workarounds_required) + { + // TX_PATTERN_A + FAPI_TRY(mss::workarounds::mc::omi_training_prbs(i_target, l_dl_x4_backoff_en)); + } + else if (l_gem_or_non_axone_workaround) { - FAPI_TRY(mss::workarounds::mc::prbs_omi(i_target, l_dl_x4_backoff_en)); + // TX_TRAINING_STATE_3, TX_PATTERN_A + FAPI_TRY(mss::workarounds::mc::omi_training_prbs_gem(i_target, l_dl_x4_backoff_en)); + + // 2 second delay for gemini + FAPI_TRY(fapi2::delay(2 * mss::common_timings::DELAY_1S, mss::common_timings::DELAY_1MS)); } // Enable auto training |