From 2206846076da737cb4f4a7e8ae66bf57d5d37bc3 Mon Sep 17 00:00:00 2001 From: Alvin Wang Date: Mon, 14 Jan 2019 00:18:01 -0600 Subject: Adds p9a_omi_train procedure(START) Change-Id: Iafa88363b862e9175982836f1686199e9366d555 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69721 Tested-by: FSP CI Jenkins Tested-by: HWSV CI Tested-by: Jenkins Server Tested-by: Hostboot CI Reviewed-by: STEPHEN GLANCY Reviewed-by: Daniel M. Crowell Reviewed-by: Jennifer A. Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69872 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Christian R. Geddes --- .../p9a/procedures/hwp/memory/p9a_omi_train.C | 69 ++++++++-------------- 1 file changed, 23 insertions(+), 46 deletions(-) (limited to 'src/import/chips/p9a/procedures/hwp/memory/p9a_omi_train.C') 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 #include #include +#include +#include #include #include #include +#include +#include +#include -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& 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& 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 l_omi_status; - fapi2::buffer 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(i_target); - l_omi_status.extractToRight - (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 -- cgit v1.2.1