summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C
diff options
context:
space:
mode:
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