summaryrefslogtreecommitdiffstats
path: root/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_setup.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_setup.C')
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_setup.C55
1 files changed, 30 insertions, 25 deletions
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_setup.C b/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_setup.C
index 0581cb8cf..2eb53635e 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_setup.C
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/exp_omi_setup.C
@@ -34,6 +34,7 @@
// *HWP Consumed by: Memory
#include <fapi2.H>
+#include <exp_omi_setup.H>
#include <generic/memory/lib/utils/c_str.H>
#include <lib/exp_attribute_accessors_manual.H>
#include <lib/omi/exp_omi_utils.H>
@@ -42,6 +43,7 @@
#include <generic/memory/mss_git_data_helper.H>
#include <generic/memory/lib/mss_generic_attribute_getters.H>
#include <generic/memory/lib/mss_generic_system_attribute_getters.H>
+#include <generic/memory/lib/utils/shared/mss_generic_consts.H>
extern "C"
{
@@ -54,17 +56,14 @@ extern "C"
fapi2::ReturnCode exp_omi_setup( const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target)
{
mss::display_git_commit_info("exp_omi_setup");
+ uint8_t l_gem_menterp_workaround = 0;
// Declares variables
- fapi2::buffer<uint64_t> l_data;
- fapi2::buffer<uint64_t> dlx_config1_data;
- uint8_t l_edpl_disable = 0;
- bool l_is_enterprise = false;
- bool l_is_half_dimm = false;
- bool l_workaround_required = false;
std::vector<uint8_t> l_boot_config_data;
+
+ // BOOT CONFIG 0
uint8_t l_dl_layer_boot_mode = fapi2::ENUM_ATTR_MSS_OCMB_EXP_BOOT_CONFIG_DL_LAYER_BOOT_MODE_NON_DL_TRAINING;
- uint8_t l_gem_menterp_workaround = 0;
+
// Gets the data setup
FAPI_TRY(mss::exp::omi::train::setup_fw_boot_config(i_target, l_boot_config_data));
@@ -75,12 +74,27 @@ extern "C"
// Note: This does not kick off OMI training
FAPI_TRY(mss::exp::i2c::boot_config(i_target, l_boot_config_data));
+ // Check FW status for success
+ FAPI_TRY(mss::exp::i2c::fw_status(i_target, mss::DELAY_1MS, 100));
+
FAPI_TRY(mss::exp::workarounds::omi::gem_menterp(i_target, l_gem_menterp_workaround));
- // If no workaround, we can perform menterp reads/writes (explorer)
- // If workaround (gem). we need to bypass menterp. Can also bypass dlx_config1 since it's a noop
- if (!l_gem_menterp_workaround)
+ // If no workaround (explorer), we can perform menterp reads/writes
+ // If workaround (gemini). we need to bypass menterp. Can also bypass dlx_config1 too since it's a noop
+ if (l_gem_menterp_workaround)
+ {
+ return fapi2::FAPI2_RC_SUCCESS;
+ }
+
+ // Set up DLX_CONFIG1
{
+ fapi2::buffer<uint64_t> l_data;
+ fapi2::buffer<uint64_t> l_dlx_config1_data;
+
+ uint8_t l_edpl_disable = 0;
+ bool l_is_enterprise = false;
+ bool l_is_half_dimm = false;
+
// Gets the configuration information from attributes
FAPI_TRY(mss::enterprise_mode(i_target, l_is_enterprise));
FAPI_TRY(mss::half_dimm_mode(i_target, l_is_half_dimm));
@@ -102,24 +116,15 @@ extern "C"
FAPI_TRY(mss::exp::omi::check_enterprise_mode(i_target, l_is_enterprise, l_data));
// Set the EDPL according the attribute
- FAPI_TRY(mss::exp::omi::read_dlx_config1(i_target, dlx_config1_data));
- mss::exp::omi::set_edpl_enable_bit(dlx_config1_data, l_edpl_disable);
- FAPI_TRY(mss::exp::omi::write_dlx_config1(i_target, dlx_config1_data));
+ FAPI_TRY(mss::exp::omi::read_dlx_config1(i_target, l_dlx_config1_data));
+ mss::exp::omi::set_edpl_enable_bit(l_dlx_config1_data, !l_edpl_disable);
+ FAPI_TRY(mss::exp::omi::write_dlx_config1(i_target, l_dlx_config1_data));
FAPI_INF("%s EDPL enable: %s", mss::c_str(i_target), l_edpl_disable ? "false" : "true");
}
- // Run the workaround if it's needed
- FAPI_TRY(mss::exp::workarounds::omi::is_prbs_ocmb_required(i_target, l_workaround_required));
-
- if (l_workaround_required)
- {
- uint8_t l_dl_x4_backoff_en = 0;
-
- FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_OMI_DL_X4_BACKOFF_ENABLE, i_target, l_dl_x4_backoff_en),
- "Error getting ATTR_CHIP_EC_FEATURE_OMI_DL_X4_BACKOFF_ENABLE");
-
- FAPI_TRY(mss::exp::workarounds::omi::prbs_ocmb(i_target, l_dl_x4_backoff_en));
- }
+ // Perform p9a workaround
+ // Train mode 6 (state 3)
+ FAPI_TRY(mss::exp::workarounds::omi::pre_training_prbs(i_target));
fapi_try_exit:
return fapi2::current_err;
OpenPOWER on IntegriCloud