summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C
diff options
context:
space:
mode:
authorAlvin Wang <wangat@tw.ibm.com>2019-01-14 00:18:01 -0600
committerChristian R. Geddes <crgeddes@us.ibm.com>2019-02-13 12:57:03 -0600
commit2206846076da737cb4f4a7e8ae66bf57d5d37bc3 (patch)
tree2fca8fbfb2f983ea19e98fa05b5608eb99f7ac27 /src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C
parentc1549db07fe83367f558aff0fa75fdbc3a14dee8 (diff)
downloadtalos-hostboot-2206846076da737cb4f4a7e8ae66bf57d5d37bc3.tar.gz
talos-hostboot-2206846076da737cb4f4a7e8ae66bf57d5d37bc3.zip
Adds p9a_omi_train procedure(START)
Change-Id: Iafa88363b862e9175982836f1686199e9366d555 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69721 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@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: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69872 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: Christian R. Geddes <crgeddes@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.C69
1 files changed, 23 insertions, 46 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 c70bf77a1..2ade12916 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
@@ -38,61 +38,38 @@
#include <fapi2.H>
#include <p9a_mc_scom_addresses.H>
#include <p9a_mc_scom_addresses_fld.H>
+#include <p9a_mc_scom_addresses_fixes.H>
+#include <p9a_mc_scom_addresses_fld_fixes.H>
#include <generic/memory/lib/utils/c_str.H>
#include <generic/memory/lib/utils/scom.H>
#include <generic/memory/lib/utils/buffer_ops.H>
+#include <generic/memory/lib/utils/find.H>
+#include <generic/memory/lib/utils/shared/mss_generic_consts.H>
+#include <lib/mc/omi.H>
-extern "C"
+///
+/// @brief Turn on Axone config regs to enable training
+/// @param[in] i_target the OMI target to operate on
+/// @return FAPI2_RC_SUCCESS iff ok
+///
+fapi2::ReturnCode p9a_omi_train( const fapi2::Target<fapi2::TARGET_TYPE_OMI>& i_target)
{
+ FAPI_INF("%s Start p9a_omi_train", mss::c_str(i_target));
- ///
- /// @brief Check the omi status in Axone side
- /// @param[in] i_target the OMIC target to operate on
- /// @return FAPI2_RC_SUCCESS iff ok
- ///
- fapi2::ReturnCode p9a_omi_train( const fapi2::Target<fapi2::TARGET_TYPE_OMIC>& i_target)
- {
- FAPI_INF("%s Start p9a_omi_train", mss::c_str(i_target));
-
- // Const
- constexpr uint8_t STATE_MACHINE_SUCCESS = 0b111; // This value is from Lonny Lambrecht
-
- // Declares variables
- fapi2::buffer<uint64_t> l_omi_status;
- fapi2::buffer<uint64_t> l_omi_training_status;
- uint8_t l_state_machine_state = 0;
-
- // Check OMI training status
- FAPI_TRY(mss::getScom(i_target, P9A_OMI_REG0_DL0_STATUS, l_omi_status));
- FAPI_TRY(mss::getScom(i_target, P9A_OMI_REG0_DL0_TRAINING_STATUS, l_omi_training_status));
+ const auto l_mc = mss::find_target<fapi2::TARGET_TYPE_MC>(i_target);
- l_omi_status.extractToRight<P9A_OMI_REG0_DL0_STATUS_STS_TRAINING_STATE_MACHINE, P9A_OMI_REG0_DL0_STATUS_STS_TRAINING_STATE_MACHINE_LEN>
- (l_state_machine_state);
+ FAPI_TRY(mss::mc::setup_mc_mcn_config_helper(l_mc));
+ FAPI_TRY(mss::mc::setup_mc_config1_helper(i_target));
+ FAPI_TRY(mss::mc::setup_mc_cya_bits_helper(i_target));
+ FAPI_TRY(mss::mc::setup_mc_error_action_helper(i_target));
+ FAPI_TRY(mss::mc::setup_mc_rmt_config_helper(i_target));
- FAPI_ASSERT(l_state_machine_state == STATE_MACHINE_SUCCESS,
- fapi2::P9A_OMI_TRAIN_ERR()
- .set_TARGET(i_target)
- .set_EXPECTED_SM_STATE(STATE_MACHINE_SUCCESS)
- .set_ACTUAL_SM_STATE(l_state_machine_state)
- .set_DL0_STATUS(l_omi_status)
- .set_DL0_TRAINING_STATUS(l_omi_training_status),
- "%s OMI Training Failure, expected state:%d/actual state:%d",
- mss::c_str(i_target),
- STATE_MACHINE_SUCCESS,
- l_state_machine_state
- );
+ // *_CONFIG0 should be the last one written, since it starts the training.
+ FAPI_TRY(mss::mc::setup_mc_config0_helper(i_target));
- FAPI_INF("%s End p9a_omi_train, expected state:%d/actual state:%d, DL0_STATUS:%d, DL0_TRAINING_STATUS:%d",
- mss::c_str(i_target),
- STATE_MACHINE_SUCCESS,
- l_state_machine_state,
- l_omi_status,
- l_omi_training_status);
- return fapi2::FAPI2_RC_SUCCESS;
- fapi_try_exit:
- return fapi2::current_err;
+fapi_try_exit:
+ return fapi2::current_err;
- }// p9a_omi_train
-}// extern C
+}// p9a_omi_train
OpenPOWER on IntegriCloud