summaryrefslogtreecommitdiffstats
path: root/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_train.C
diff options
context:
space:
mode:
authorMark Pizzutillo <Mark.Pizzutillo@ibm.com>2019-09-16 17:08:27 -0400
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-10-17 15:27:03 -0500
commit8f549e7548fb45819fc4fd8637448f428f14eec1 (patch)
tree0bd9d8d0361ba7e511794ff4b6e1ea75f2b0ccde /src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_train.C
parent70b54e6ae12665ccc0070e896039faadd52333f7 (diff)
downloadtalos-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/ocmb/explorer/procedures/hwp/memory/exp_omi_train.C')
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_train.C45
1 files changed, 36 insertions, 9 deletions
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_train.C b/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_train.C
index 81b2a601a..0e21e87ef 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_train.C
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_train.C
@@ -37,8 +37,12 @@
#include <generic/memory/lib/utils/c_str.H>
#include <lib/omi/exp_omi_utils.H>
#include <lib/i2c/exp_i2c.H>
+#include <lib/exp_attribute_accessors_manual.H>
+#include <lib/workarounds/exp_omi_workarounds.H>
#include <exp_omi_train.H>
#include <generic/memory/mss_git_data_helper.H>
+#include <generic/memory/lib/mss_generic_attribute_getters.H>
+#include <generic/memory/lib/utils/shared/mss_generic_consts.H>
extern "C"
{
@@ -52,18 +56,41 @@ extern "C"
{
mss::display_git_commit_info("exp_omi_train");
- std::vector<uint8_t> l_data;
- uint8_t l_dl_layer_boot_mode = fapi2::ENUM_ATTR_MSS_OCMB_EXP_BOOT_CONFIG_DL_LAYER_BOOT_MODE_ONLY_DL_TRAINING;
+ // Perform p9a workaround
+ // Train mode 1 (PATTERN_A)
+ FAPI_TRY(mss::exp::workarounds::omi::training_prbs(i_target));
- // Gets the data setup
- FAPI_TRY(mss::exp::omi::train::setup_fw_boot_config(i_target, l_data));
+ // BOOT CONFIG 1
+ {
+ bool l_ocmb_is_explorer = false;
- // Sets DL_TRAIN field
- FAPI_TRY(mss::exp::i2c::boot_cfg::set_dl_layer_boot_mode( i_target, l_data, l_dl_layer_boot_mode ));
+ std::vector<uint8_t> l_data;
+ uint8_t l_dl_layer_boot_mode = fapi2::ENUM_ATTR_MSS_OCMB_EXP_BOOT_CONFIG_DL_LAYER_BOOT_MODE_ONLY_DL_TRAINING;
- // Issues the command and checks for completion
- // Note: the status check also checks for the OMI training completion, so after we run this command, we're good to go
- FAPI_TRY(mss::exp::i2c::boot_config(i_target, l_data));
+ // Gets the data setup
+ FAPI_TRY(mss::exp::omi::train::setup_fw_boot_config(i_target, l_data));
+
+ // Sets DL_TRAIN field
+ FAPI_TRY(mss::exp::i2c::boot_cfg::set_dl_layer_boot_mode( i_target, l_data, l_dl_layer_boot_mode ));
+
+ // Issues the command and checks for completion
+ FAPI_TRY(mss::exp::i2c::boot_config(i_target, l_data));
+
+ // Check for expected busy status (this won't work for gemini)
+ FAPI_TRY(mss::exp::workarounds::omi::ocmb_is_explorer(i_target, l_ocmb_is_explorer));
+
+ if (l_ocmb_is_explorer)
+ {
+ // Explorer & P9A environment should see a busy status until auto train is kicked off from both sides
+ FAPI_TRY(mss::exp::i2c::check_fw_status_busy(i_target));
+ }
+ else
+ {
+ // Gemini should return success code
+ FAPI_TRY(mss::exp::i2c::fw_status(i_target, mss::DELAY_1MS, 100));
+ }
+
+ }
fapi_try_exit:
return fapi2::current_err;
OpenPOWER on IntegriCloud