summaryrefslogtreecommitdiffstats
path: root/src/import
diff options
context:
space:
mode:
authorLouis Stermole <stermole@us.ibm.com>2019-05-06 21:04:22 -0400
committerChristian R. Geddes <crgeddes@us.ibm.com>2019-05-29 14:46:56 -0500
commit8bde2e5cb164f08a25aa45dc9d3e991b3d66d9f5 (patch)
tree6641359845ff0c686ba3515d1ac6cd472f15a745 /src/import
parent6bb5c0eda3181e4114b07c39f02b63fc55c177df (diff)
downloadtalos-hostboot-8bde2e5cb164f08a25aa45dc9d3e991b3d66d9f5.tar.gz
talos-hostboot-8bde2e5cb164f08a25aa45dc9d3e991b3d66d9f5.zip
Update exp_omi_train for testing
Change BOOT_MODE param to DFE_DISABLE to match new spec Change SERDES_FREQ to be based on ATTR_FREQ_OMI_MHZ Change-Id: I06bd4a395b378a1493e5445578c3eb89d1b05886 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/77014 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Mark Pizzutillo <mark.pizzutillo@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: Thi N. Tran <thi@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/77548 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')
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.C48
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.H45
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/omi/exp_omi_utils.C17
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H1
-rw-r--r--src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_omi_train.xml13
5 files changed, 85 insertions, 39 deletions
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.C b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.C
index 822c518d3..c1c9c31a9 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.C
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2018 */
+/* Contributors Listed Below - COPYRIGHT 2018,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -23,6 +23,7 @@
/* */
/* IBM_PROLOG_END_TAG */
#include <lib/i2c/exp_i2c_fields.H>
+#include <generic/memory/lib/utils/find.H>
namespace mss
{
@@ -33,7 +34,7 @@ namespace i2c
// If a constexpr static data member (since C++11) is odr-used,
// a definition at namespace scope is still required, but it cannot have an initializer.
-constexpr mss::field_t<mss::endian::BIG> fields::BOOT_MODE;
+constexpr mss::field_t<mss::endian::BIG> fields::DFE_DISABLE;
constexpr mss::field_t<mss::endian::BIG> fields::LANE_MODE;
constexpr mss::field_t<mss::endian::BIG> fields::SERDES_FREQ;
constexpr mss::field_t<mss::endian::BIG> fields::FW_MODE;
@@ -44,6 +45,49 @@ constexpr mss::field_t<mss::endian::BIG> fields::CMD_ID;
constexpr mss::field_t<mss::endian::BIG> fields::STATUS_CODE;
constexpr mss::field_t<mss::endian::BIG> fields::BOOT_STAGE;
+namespace boot_cfg
+{
+
+///
+/// @brief SERDES_FREQ setter
+/// @param[in] i_target the OCMB target
+/// @param[in,out] io_data the buffer as a reference to a vector
+/// @param[in] i_freq frequency to set
+/// @return FAPI2_RC_SUCCESS iff okay
+///
+fapi2::ReturnCode set_serdes_freq(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
+ std::vector<uint8_t>& io_data,
+ const uint32_t i_freq)
+{
+ static const std::vector< std::pair<uint32_t, uint8_t> > OMI_FREQ_MAP =
+ {
+ {fapi2::ENUM_ATTR_FREQ_OMI_MHZ_21330, 1},
+ {fapi2::ENUM_ATTR_FREQ_OMI_MHZ_23460, 2},
+ {fapi2::ENUM_ATTR_FREQ_OMI_MHZ_25600, 3},
+ // All others reserved or not supported
+ };
+
+ uint8_t l_setting = 0;
+ const bool l_is_val_found = mss::find_value_from_key(OMI_FREQ_MAP, i_freq, l_setting);
+
+ FAPI_ASSERT( l_is_val_found,
+ fapi2::MSS_LOOKUP_FAILED()
+ .set_KEY(i_freq)
+ .set_DATA(l_setting)
+ .set_FUNCTION(SET_SERDES_FREQ)
+ .set_TARGET(i_target),
+ "Failed to find a BOOT_CONFIG setting for OMI value %d on %s",
+ i_freq,
+ mss::c_str(i_target) );
+
+ return set_field<fields::SERDES_FREQ>(i_target, io_data, l_setting);
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
+
+}// boot_cfg
+
}// i2c
}// exp
}// mss
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.H b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.H
index 3098e9e28..02ab0fc98 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.H
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/i2c/exp_i2c_fields.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2018 */
+/* Contributors Listed Below - COPYRIGHT 2018,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -57,10 +57,10 @@ struct fields
// First value is byte index, then buffer extract start bit, and extract data length
// Part of EXP_FW_BOOT_CONFIG
- static constexpr mss::field_t<mss::endian::BIG> BOOT_MODE{0, 0, 1};
+ static constexpr mss::field_t<mss::endian::BIG> DFE_DISABLE{0, 0, 1};
static constexpr mss::field_t<mss::endian::BIG> LANE_MODE{0, 1, 3};
static constexpr mss::field_t<mss::endian::BIG> SERDES_FREQ{0, 4, 4};
- static constexpr mss::field_t<mss::endian::BIG> FW_MODE{1, 2, 1};
+ static constexpr mss::field_t<mss::endian::BIG> FW_MODE{1, 1, 2};
static constexpr mss::field_t<mss::endian::BIG> LOOPBACK_TEST{1, 3, 1};
static constexpr mss::field_t<mss::endian::BIG> TRANSPORT_LAYER{1, 4, 2};
static constexpr mss::field_t<mss::endian::BIG> DL_LAYER_BOOT_MODE{1, 6, 2};
@@ -108,14 +108,14 @@ struct fieldTraits<fields::LANE_MODE>
};
///
-/// @class fieldTraits - BOOT_MODE specialization
+/// @class fieldTraits - DFE_DISABLE specialization
/// @brief Traits assoiated with the Explorer I2C commands
///
template <>
-struct fieldTraits<fields::BOOT_MODE>
+struct fieldTraits<fields::DFE_DISABLE>
{
static constexpr uint8_t COMPARISON_VAL = 0x01;
- static constexpr const char* FIELD_STR = "Boot mode";
+ static constexpr const char* FIELD_STR = "DFE Disable";
template <typename T>
using COMPARISON_OP = std::less_equal<T>;
@@ -170,7 +170,7 @@ struct fieldTraits<fields::LOOPBACK_TEST>
template <>
struct fieldTraits<fields::FW_MODE>
{
- static constexpr uint8_t COMPARISON_VAL = 0x01;
+ static constexpr uint8_t COMPARISON_VAL = 0x02;
static constexpr const char* FIELD_STR = "FW Mode";
template <typename T>
@@ -284,15 +284,12 @@ inline fapi2::ReturnCode get_serdes_freq(const fapi2::Target<fapi2::TARGET_TYPE_
/// @brief SERDES_FREQ setter
/// @param[in] i_target the OCMB target
/// @param[in,out] io_data the buffer as a reference to a vector
-/// @param[in] i_setting the value to set
+/// @param[in] i_freq frequency to set
/// @return FAPI2_RC_SUCCESS iff okay
///
-inline fapi2::ReturnCode set_serdes_freq(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
- std::vector<uint8_t>& io_data,
- const uint8_t i_setting)
-{
- return set_field<fields::SERDES_FREQ>(i_target, io_data, i_setting);
-}
+fapi2::ReturnCode set_serdes_freq(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
+ std::vector<uint8_t>& io_data,
+ const uint32_t i_freq);
///
/// @brief LANE_MODE getter
@@ -323,31 +320,31 @@ inline fapi2::ReturnCode set_lane_mode(const fapi2::Target<fapi2::TARGET_TYPE_OC
}
///
-/// @brief BOOT_MODE getter
+/// @brief DFE_DISABLE getter
/// @param[in] i_target the OCMB target
/// @param[in] i_data the buffer as a reference to a vector
/// @param[out] o_setting
/// @return FAPI2_RC_SUCCESS iff okay
///
-inline fapi2::ReturnCode get_boot_mode(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
- const std::vector<uint8_t>& i_data,
- uint8_t& o_setting)
+inline fapi2::ReturnCode get_dfe_disable(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
+ const std::vector<uint8_t>& i_data,
+ uint8_t& o_setting)
{
- return get_field<fields::BOOT_MODE>(i_target, i_data, o_setting);
+ return get_field<fields::DFE_DISABLE>(i_target, i_data, o_setting);
}
///
-/// @brief BOOT_MODE setter
+/// @brief DFE_DISABLE setter
/// @param[in] i_target the OCMB target
/// @param[in,out] io_data the buffer as a reference to a vector
/// @param[in] i_setting the value to set
/// @return FAPI2_RC_SUCCESS iff okay
///
-inline fapi2::ReturnCode set_boot_mode(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
- std::vector<uint8_t>& io_data,
- const uint8_t i_setting)
+inline fapi2::ReturnCode set_dfe_disable(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
+ std::vector<uint8_t>& io_data,
+ const uint8_t i_setting)
{
- return set_field<fields::BOOT_MODE>(i_target, io_data, i_setting);
+ return set_field<fields::DFE_DISABLE>(i_target, io_data, i_setting);
}
/// @brief DL_LAYER_BOOT_MODE getter
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/omi/exp_omi_utils.C b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/omi/exp_omi_utils.C
index e58f134cb..5c5372851 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/omi/exp_omi_utils.C
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/omi/exp_omi_utils.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2018 */
+/* Contributors Listed Below - COPYRIGHT 2018,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -33,6 +33,7 @@
// *HWP Level: 3
// *HWP Consumed by: Memory
+#include <generic/memory/lib/utils/find.H>
#include <lib/omi/exp_omi_utils.H>
#include <lib/shared/exp_consts.H>
#include <lib/i2c/exp_i2c_fields.H>
@@ -61,9 +62,11 @@ fapi2::ReturnCode setup_fw_boot_config( const fapi2::Target<fapi2::TARGET_TYPE_O
uint8_t l_loopback_test = 0;
uint8_t l_transport_layer = 0;
uint8_t l_dl_layer_boot_mode = 0;
- uint8_t l_boot_mode = 0;
+ uint8_t l_dfe_disable = 0;
uint8_t l_lane_mode = 0;
- uint8_t l_serdes_freq = 0;
+ uint32_t l_omi_freq = 0;
+
+ const auto& l_proc = mss::find_target<fapi2::TARGET_TYPE_PROC_CHIP>(i_target);
// Read the EXP_FW_BOOT_CONFIG from the attributes
FAPI_TRY(mss::attr::get_ocmb_exp_boot_config_fw_mode(i_target, l_fw_mode));
@@ -74,20 +77,20 @@ fapi2::ReturnCode setup_fw_boot_config( const fapi2::Target<fapi2::TARGET_TYPE_O
FAPI_TRY(mss::attr::get_ocmb_exp_boot_config_dl_layer_boot_mode(i_target, l_dl_layer_boot_mode));
- FAPI_TRY(mss::attr::get_ocmb_exp_boot_config_boot_mode(i_target, l_boot_mode));
+ FAPI_TRY(mss::attr::get_ocmb_exp_boot_config_dfe_disable(i_target, l_dfe_disable));
FAPI_TRY(mss::attr::get_ocmb_exp_boot_config_lane_mode(i_target, l_lane_mode));
- FAPI_TRY(mss::attr::get_ocmb_exp_boot_config_serdes_frequency(i_target, l_serdes_freq));
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_OMI_MHZ, l_proc, l_omi_freq) );
// Clears o_data, just in case
o_data.clear();
o_data.assign(mss::exp::i2c::FW_BOOT_CONFIG_BYTE_LEN, 0);
- FAPI_TRY(mss::exp::i2c::boot_cfg::set_serdes_freq( i_target, o_data, l_serdes_freq ));
+ FAPI_TRY(mss::exp::i2c::boot_cfg::set_serdes_freq( i_target, o_data, l_omi_freq ));
FAPI_TRY(mss::exp::i2c::boot_cfg::set_lane_mode( i_target, o_data, l_lane_mode ));
- FAPI_TRY(mss::exp::i2c::boot_cfg::set_boot_mode( i_target, o_data, l_boot_mode ));
+ FAPI_TRY(mss::exp::i2c::boot_cfg::set_dfe_disable( i_target, o_data, l_dfe_disable ));
FAPI_TRY(mss::exp::i2c::boot_cfg::set_dl_layer_boot_mode( i_target, o_data, l_dl_layer_boot_mode ));
FAPI_TRY(mss::exp::i2c::boot_cfg::set_transport_layer( i_target, o_data, l_transport_layer ));
FAPI_TRY(mss::exp::i2c::boot_cfg::set_loopback_test( i_target, o_data, l_loopback_test ));
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H
index 37bad4942..a2b702bca 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H
@@ -147,6 +147,7 @@ enum ffdc_codes
SET_MRAM_SUPPORT = 0x1049,
SET_3DS_HEIGHT = 0x1050,
SET_SPD_CL_SUPPORTED = 0x1051,
+ SET_SERDES_FREQ = 0x1052,
};
///
diff --git a/src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_omi_train.xml b/src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_omi_train.xml
index fbb950259..e60696f2e 100644
--- a/src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_omi_train.xml
+++ b/src/import/chips/ocmb/explorer/procedures/xml/attribute_info/exp_omi_train.xml
@@ -44,7 +44,8 @@
<valueType>uint8</valueType>
<enum>
NORMAL_MODE = 0,
- MANUFACTURING_MODE = 1
+ MANUFACTURING_MODE = 1,
+ PRODUCT_QUALIFICATION_MODE = 2
</enum>
<initToZero/>
<platInit/>
@@ -106,20 +107,20 @@
</attribute>
<attribute>
- <id>ATTR_MSS_OCMB_EXP_BOOT_CONFIG_BOOT_MODE</id>
+ <id>ATTR_MSS_OCMB_EXP_BOOT_CONFIG_DFE_DISABLE</id>
<targetType>TARGET_TYPE_OCMB_CHIP</targetType>
<description>
- Indicates the full boot or step-by-step boot
+ Set to disable DFE
</description>
<valueType>uint8</valueType>
<enum>
- FULL_BOOT = 0,
- STEP_BY_STEP_BOOT = 1
+ DEFAULT = 0,
+ DISABLED = 1
</enum>
<initToZero/>
<platInit/>
<overrideOnly/>
- <mssAccessorName>ocmb_exp_boot_config_boot_mode</mssAccessorName>
+ <mssAccessorName>ocmb_exp_boot_config_dfe_disable</mssAccessorName>
</attribute>
<attribute>
OpenPOWER on IntegriCloud