summaryrefslogtreecommitdiffstats
path: root/src/import/generic/memory/lib
diff options
context:
space:
mode:
authorAndre Marin <aamarin@us.ibm.com>2017-03-27 23:52:06 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-04-02 14:56:58 -0400
commit6a9cd8f6f1156c592429c84eaf8d04438977e050 (patch)
tree75d87d47a526d38b24c98f0f59bd42f6c88a9656 /src/import/generic/memory/lib
parent3e8219fc02716052fd25528dd4541646bc5078ff (diff)
downloadtalos-hostboot-6a9cd8f6f1156c592429c84eaf8d04438977e050.tar.gz
talos-hostboot-6a9cd8f6f1156c592429c84eaf8d04438977e050.zip
Change base decoder, add ddr4 namespace, and common API btw modules
Change-Id: I78b8b929e3136e3edec646321e0d8bb32229911d Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38506 Reviewed-by: STEPHEN GLANCY <sglancy@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: Brian R. Silver <bsilver@us.ibm.com> Reviewed-by: JACOB L. HARVEY <jlharvey@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38507 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/generic/memory/lib')
-rw-r--r--src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4.H148
-rw-r--r--src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_0.C191
-rw-r--r--src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_1.C7
-rw-r--r--src/import/generic/memory/lib/spd/common/spd_decoder_base.H68
-rw-r--r--src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4.H18
-rw-r--r--src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_0.C5
-rw-r--r--src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_1.C3
-rw-r--r--src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_2.C4
-rw-r--r--src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4.H64
-rw-r--r--src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_0.C168
-rw-r--r--src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_1.C65
11 files changed, 364 insertions, 377 deletions
diff --git a/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4.H b/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4.H
index 65198a856..61d3eb476 100644
--- a/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4.H
+++ b/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4.H
@@ -60,122 +60,33 @@ namespace spd
enum sdram_package_type : uint8_t
{
- // Signal loading
- MONOLITHIC = 0,
- NON_MONOLITHIC = 1,
-
// Package Type
- UNSPECIFIED = MONOLITHIC,
- MULTI_LOAD_STACK = 1,
- SINGLE_LOAD_STACK = 2,
+ MONOLITHIC = 0, ///< Monolithic DRAM device
+ NON_MONOLITHIC = 1, ///< Non-Monolithic DRAM device (3DS, Dual/Quad Die, etc)
+
+ // Signal loading
+ UNSPECIFIED = MONOLITHIC, ///< Not specified
+ MULTI_LOAD_STACK = 1, ///< Multi laod stack
+ SINGLE_LOAD_STACK = 2, ///< Single load stack (3DS)
};
enum nominal_voltage : uint8_t
{
- NOT_OPERABLE = 0,
- OPERABLE = 1,
+ NOT_OPERABLE = 0, ///< Not operable at 1.2V
+ OPERABLE = 1, ///< Operable at 1.2V
- NOT_ENDURANT = 0,
- ENDURANT = 1
+ NOT_ENDURANT = 0, ///< Not endurant at 1.2V
+ ENDURANT = 1 ///< Endurant at 1.2 V
};
-enum factory_byte_extract
+namespace ddr4
{
- // Byte 1
- ENCODING_LEVEL_START = 0,
- ENCODING_LEVEL_LEN = 4,
-
- ADDITIONS_LEVEL_START = 4,
- ADDITIONS_LEVEL_LEN = 4,
-
- // Byte 3
- BASE_MODULE_START = 4,
- BASE_MODULE_LEN = 4,
-};
-
-///
-/// @brief Helper function to extract byte information
-/// @tparam I Byte index
-/// @tparam S Start bit
-/// @tparam L Bit length
-/// @param[in] i_target the dimm target
-/// @param[in] i_spd_data the SPD data
-/// @return extracted byte (right aligned)
-///
-template<size_t I, uint8_t S, uint8_t L>
-inline uint8_t extract_spd_field(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- const std::vector<uint8_t>& i_spd_data)
-{
- //TODO - RTC:159477
- FAPI_INF("%s SPD data at Byte %d: 0x%llX.",
- mss::c_str(i_target),
- I,
- i_spd_data[I]);
-
- fapi2::buffer<uint8_t> l_buffer(i_spd_data[I]);
-
- // Extracting desired bits
- uint8_t l_field_bits = 0;
- l_buffer.extractToRight<S, L>(l_field_bits);
-
- return l_field_bits;
-}
-
-///
-/// @brief Helper function to extract byte information
-/// @tparam F the SPD field to extract
-/// @param[in] i_target the dimm target
-/// @param[in] i_spd_data the SPD data
-/// @return extracted byte (right aligned)
-///
-template< const field_t& F >
-inline uint8_t extract_spd_field(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- const std::vector<uint8_t>& i_spd_data)
-{
- FAPI_INF("%s SPD data at Byte %d: 0x%llX.",
- mss::c_str(i_target),
- F.iv_byte,
- i_spd_data[F.iv_byte]);
-
- fapi2::buffer<uint8_t> l_buffer(i_spd_data[F.iv_byte]);
-
- // Extracting desired bits
- uint8_t l_field_bits = 0;
- l_buffer.extractToRight<F.iv_start, F.iv_length>(l_field_bits);
-
- return l_field_bits;
-}
-
-///
-/// @brief Helper function to extract byte information
-/// @param[in] i_target the dimm target
-/// @param[in] i_field the SPD field
-/// @param[in] i_spd_data the SPD data
-/// @return extracted byte (right aligned)
-///
-inline uint8_t extract_spd_field(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- const field_t& i_field,
- const std::vector<uint8_t>& i_spd_data)
-{
- FAPI_INF("%s SPD data at Byte %d: 0x%llX.",
- mss::c_str(i_target),
- i_field.iv_byte,
- i_spd_data[i_field.iv_byte]);
-
- fapi2::buffer<uint8_t> l_buffer(i_spd_data[i_field.iv_byte]);
-
- // Extracting desired bits
- uint8_t l_field_bits = 0;
- l_buffer.extractToRight( l_field_bits, i_field.iv_start, i_field.iv_length );
-
- return l_field_bits;
-}
///
/// @class decoder
/// @brief Base SPD DRAM decoder
///
-class decoder : public base_decoder
+class decoder_v1_0 : public decoder
{
protected:
enum
@@ -417,6 +328,15 @@ class decoder : public base_decoder
};
+ ///
+ /// @brief Helper function that turns Logical ranks in Primary SDRAM type
+ /// @param[out] o_logical_ranks number of logical ranks
+ /// @return fapi2::FAPI2_RC_SUCCESS if okay
+ ///
+ virtual fapi2::ReturnCode prim_sdram_logical_ranks( uint8_t& o_logical_ranks );
+
+ public:
+
// First field is byte index
// Second field is the decoding start bit
// Third field is the decoding bit length
@@ -472,17 +392,8 @@ class decoder : public base_decoder
static constexpr field_t CRC_MSB{127, CRC_MSB_START, CRC_MSB_LEN};
static constexpr field_t CRC_LSB{126, CRC_LSB_START, CRC_LSB_LEN};
- ///
- /// @brief Helper function that turns Logical ranks in Primary SDRAM type
- /// @param[out] o_logical_ranks number of logical ranks
- /// @return fapi2::FAPI2_RC_SUCCESS if okay
- ///
- virtual fapi2::ReturnCode prim_sdram_logical_ranks( uint8_t& o_logical_ranks );
-
- public:
-
// Default constructor deleted
- decoder() = delete;
+ decoder_v1_0() = delete;
///
/// @brief ctor
@@ -491,15 +402,15 @@ class decoder : public base_decoder
/// @param[in] i_module_decoder shared_ptr to dimm module decoder
/// @param[in] i_raw_card raw pointer to rcd data
///
- decoder(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- const std::vector<uint8_t>& i_spd_data,
- const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
- const rcw_settings& i_raw_card);
+ decoder_v1_0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+ const std::vector<uint8_t>& i_spd_data,
+ const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
+ const rcw_settings& i_raw_card);
///
/// @brief Default dtor
///
- virtual ~decoder() = default;
+ virtual ~decoder_v1_0() = default;
/////////////////////////
// Member Methods
@@ -1268,7 +1179,7 @@ class decoder : public base_decoder
/// @class decoder_v1_1
/// @brief Base SPD DRAM decoder, 1st addition to general section
///
-class decoder_v1_1 : public decoder
+class decoder_v1_1 : public decoder_v1_0
{
protected:
@@ -1464,6 +1375,7 @@ class decoder_v1_1 : public decoder
};// spd_decoder_v1_1
+}// ddr4
}// spd
}// mss
diff --git a/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_0.C b/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_0.C
index ff265a585..38ac4afe9 100644
--- a/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_0.C
+++ b/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_0.C
@@ -55,6 +55,8 @@ namespace mss
{
namespace spd
{
+namespace ddr4
+{
/////////////////////////
// Member Method implementation
@@ -67,11 +69,11 @@ namespace spd
/// @param[in] i_module_decoder shared_ptr to dimm module decoder
/// @param[in] i_raw_card raw card data structure
///
-decoder::decoder(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- const std::vector<uint8_t>& i_spd_data,
- const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
- const rcw_settings& i_raw_card)
- : base_decoder(i_target, i_spd_data, i_module_decoder, i_raw_card)
+decoder_v1_0::decoder_v1_0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+ const std::vector<uint8_t>& i_spd_data,
+ const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
+ const rcw_settings& i_raw_card)
+ : decoder(i_target, i_spd_data, i_module_decoder, i_raw_card)
{}
///
@@ -83,7 +85,7 @@ decoder::decoder(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
/// @note Page 14
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::number_of_used_bytes( uint16_t& o_value )
+fapi2::ReturnCode decoder_v1_0::number_of_used_bytes( uint16_t& o_value )
{
// =========================================================
// Byte 0 maps
@@ -106,7 +108,7 @@ fapi2::ReturnCode decoder::number_of_used_bytes( uint16_t& o_value )
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(BYTES_USED_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(BYTES_USED_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -131,7 +133,7 @@ fapi_try_exit:
/// @note Page 14
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::number_of_total_bytes( uint16_t& o_value )
+fapi2::ReturnCode decoder_v1_0::number_of_total_bytes( uint16_t& o_value )
{
// =========================================================
@@ -153,7 +155,7 @@ fapi2::ReturnCode decoder::number_of_total_bytes( uint16_t& o_value )
FAPI_DBG("Field_Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(BYTES_TOTAL_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(BYTES_TOTAL_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -178,7 +180,7 @@ fapi_try_exit:
/// @note Page 17
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::hybrid_media( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::hybrid_media( uint8_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// Decodes SPD Byte 3 (bits 4~6) were reserved
@@ -198,7 +200,7 @@ fapi2::ReturnCode decoder::hybrid_media( uint8_t& o_value)
/// @note Page 17
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::hybrid( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::hybrid( uint8_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// Decodes SPD Byte 3 (bit 7) were reserved
@@ -217,7 +219,7 @@ fapi2::ReturnCode decoder::hybrid( uint8_t& o_value)
/// @note Page 18
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::sdram_density( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::sdram_density( uint8_t& o_value)
{
// =========================================================
// Byte 4 maps
@@ -242,7 +244,7 @@ fapi2::ReturnCode decoder::sdram_density( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Check to assure SPD DRAM capacity (map) wont be at invalid values
- bool l_is_val_found = mss::find_value_from_key(SDRAM_DENSITY_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(SDRAM_DENSITY_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -267,7 +269,7 @@ fapi_try_exit:
/// @note Page 18
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::bank_bits( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::bank_bits( uint8_t& o_value)
{
// =========================================================
@@ -289,7 +291,7 @@ fapi2::ReturnCode decoder::bank_bits( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Check to assure SPD DRAM capacity (map) wont be at invalid values
- bool l_is_val_found = mss::find_value_from_key(BANK_ADDR_BITS_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(BANK_ADDR_BITS_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -314,7 +316,7 @@ fapi_try_exit:
/// @note Page 18
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::bank_group_bits( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::bank_group_bits( uint8_t& o_value)
{
// =========================================================
// Byte 4 maps
@@ -336,7 +338,7 @@ fapi2::ReturnCode decoder::bank_group_bits( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Check to assure SPD DRAM capacity (map) wont be at invalid values
- bool l_is_val_found = mss::find_value_from_key(BANK_GROUP_BITS_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(BANK_GROUP_BITS_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -361,7 +363,7 @@ fapi_try_exit:
/// @note Page 18
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::column_address_bits( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::column_address_bits( uint8_t& o_value)
{
// =========================================================
// Byte 5 maps
@@ -384,7 +386,7 @@ fapi2::ReturnCode decoder::column_address_bits( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Check to assure SPD DRAM capacity (map) wont be at invalid values
- bool l_is_val_found = mss::find_value_from_key(COLUMN_ADDRESS_BITS_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(COLUMN_ADDRESS_BITS_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -409,7 +411,7 @@ fapi_try_exit:
/// @note Page 18
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::row_address_bits( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::row_address_bits( uint8_t& o_value)
{
// =========================================================
// Byte 5 maps
@@ -435,7 +437,7 @@ fapi2::ReturnCode decoder::row_address_bits( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Check to assure SPD DRAM capacity (map) wont be at invalid values
- bool l_is_val_found = mss::find_value_from_key(ROW_ADDRESS_BITS_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(ROW_ADDRESS_BITS_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd:: fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -461,7 +463,7 @@ fapi_try_exit:
/// @note Page 19
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::prim_sdram_signal_loading( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::prim_sdram_signal_loading( uint8_t& o_value)
{
// =========================================================
// Byte 6 maps
@@ -483,7 +485,7 @@ fapi2::ReturnCode decoder::prim_sdram_signal_loading( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(PRIM_SIGNAL_LOADING_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(PRIM_SIGNAL_LOADING_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd:: fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -508,7 +510,7 @@ fapi_try_exit:
/// @note Page 19
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::prim_sdram_die_count( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::prim_sdram_die_count( uint8_t& o_value)
{
// =========================================================
// Byte 6 maps
@@ -535,7 +537,7 @@ fapi2::ReturnCode decoder::prim_sdram_die_count( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(PRIM_DIE_COUNT_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(PRIM_DIE_COUNT_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd:: fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -560,7 +562,7 @@ fapi_try_exit:
/// @note Page 19
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::prim_sdram_package_type( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::prim_sdram_package_type( uint8_t& o_value)
{
// =========================================================
// Byte 6 maps
@@ -581,7 +583,7 @@ fapi2::ReturnCode decoder::prim_sdram_package_type( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(PRIM_PACKAGE_TYPE_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(PRIM_PACKAGE_TYPE_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -607,7 +609,7 @@ fapi_try_exit:
/// @note Page 20
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::maximum_activate_count( uint32_t& o_value )
+fapi2::ReturnCode decoder_v1_0::maximum_activate_count( uint32_t& o_value )
{
// =========================================================
// Byte 7 maps
@@ -634,7 +636,7 @@ fapi2::ReturnCode decoder::maximum_activate_count( uint32_t& o_value )
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(MAC_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(MAC_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -659,7 +661,7 @@ fapi_try_exit:
/// @note Page 20
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::maximum_activate_window_multiplier( uint32_t& o_value )
+fapi2::ReturnCode decoder_v1_0::maximum_activate_window_multiplier( uint32_t& o_value )
{
// =========================================================
// Byte 7 maps
@@ -682,7 +684,7 @@ fapi2::ReturnCode decoder::maximum_activate_window_multiplier( uint32_t& o_value
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(TMAW_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(TMAW_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -707,7 +709,7 @@ fapi_try_exit:
/// @note Page 21
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::post_package_repair( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::post_package_repair( uint8_t& o_value)
{
// =========================================================
// Byte 9 maps
@@ -728,7 +730,7 @@ fapi2::ReturnCode decoder::post_package_repair( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(PPR_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(PPR_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -753,7 +755,7 @@ fapi_try_exit:
/// @note Page 22
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::sec_sdram_signal_loading( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::sec_sdram_signal_loading( uint8_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// SPD Byte 10 (bits 1~0) were reserved
@@ -773,7 +775,7 @@ fapi2::ReturnCode decoder::sec_sdram_signal_loading( uint8_t& o_value)
/// @note Page 21
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::soft_post_package_repair( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::soft_post_package_repair( uint8_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// SPD Byte 9 (bit 5) was reserved
@@ -792,7 +794,7 @@ fapi2::ReturnCode decoder::soft_post_package_repair( uint8_t& o_value)
/// @note Page 22
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::sec_dram_density_ratio( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::sec_dram_density_ratio( uint8_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// SPD Byte 10 (bits 3~2) were reserved
@@ -812,7 +814,7 @@ fapi2::ReturnCode decoder::sec_dram_density_ratio( uint8_t& o_value)
/// @note Page 22
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::sec_sdram_die_count( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::sec_sdram_die_count( uint8_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// SPD Byte 10 (bits 6~4) were reserved
@@ -832,7 +834,7 @@ fapi2::ReturnCode decoder::sec_sdram_die_count( uint8_t& o_value)
/// @note Page 22
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::sec_sdram_package_type( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::sec_sdram_package_type( uint8_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// SPD Byte 10 (bit 7) was reserved
@@ -852,7 +854,7 @@ fapi2::ReturnCode decoder::sec_sdram_package_type( uint8_t& o_value)
/// @note Page 23
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::operable_nominal_voltage( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::operable_nominal_voltage( uint8_t& o_value)
{
// =========================================================
// Byte 11 maps
@@ -873,7 +875,7 @@ fapi2::ReturnCode decoder::operable_nominal_voltage( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(OPERABLE_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(OPERABLE_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -898,7 +900,7 @@ fapi_try_exit:
/// @note Page 23
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::endurant_nominal_voltage( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::endurant_nominal_voltage( uint8_t& o_value)
{
// =========================================================
// Byte 11 maps
@@ -920,7 +922,7 @@ fapi2::ReturnCode decoder::endurant_nominal_voltage( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(ENDURANT_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(ENDURANT_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -945,7 +947,7 @@ fapi_try_exit:
/// @note Page 23
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::device_width( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::device_width( uint8_t& o_value)
{
// =========================================================
// Byte 12 maps
@@ -969,7 +971,7 @@ fapi2::ReturnCode decoder::device_width( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(DEVICE_WIDTH_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(DEVICE_WIDTH_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -995,7 +997,7 @@ fapi_try_exit:
/// @note Page 23
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::num_package_ranks_per_dimm( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::num_package_ranks_per_dimm( uint8_t& o_value)
{
// =========================================================
// Byte 12 maps
@@ -1019,7 +1021,7 @@ fapi2::ReturnCode decoder::num_package_ranks_per_dimm( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(NUM_PACKAGE_RANKS_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(NUM_PACKAGE_RANKS_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -1044,7 +1046,7 @@ fapi_try_exit:
/// @note Page 23
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::rank_mix( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::rank_mix( uint8_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// Decodes SPD Byte 3 (bits 4~6) were reserved
@@ -1064,7 +1066,7 @@ fapi2::ReturnCode decoder::rank_mix( uint8_t& o_value)
/// @note Page 27
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::prim_bus_width( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::prim_bus_width( uint8_t& o_value)
{
// =========================================================
// Byte 13 maps
@@ -1088,7 +1090,7 @@ fapi2::ReturnCode decoder::prim_bus_width( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(BUS_WIDTH_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(BUS_WIDTH_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -1113,7 +1115,7 @@ fapi_try_exit:
/// @note Page 28
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::bus_width_extension( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::bus_width_extension( uint8_t& o_value)
{
// =========================================================
// Byte 13 maps
@@ -1134,7 +1136,7 @@ fapi2::ReturnCode decoder::bus_width_extension( uint8_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(BUS_WIDTH_EXT_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(BUS_WIDTH_EXT_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -1160,7 +1162,7 @@ fapi_try_exit:
/// @note Page 28
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::thermal_sensor( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::thermal_sensor( uint8_t& o_value)
{
// Extracting desired bits
const uint8_t l_field_bits = extract_spd_field< THERM_SENSOR >(iv_target, iv_spd_data);
@@ -1194,7 +1196,7 @@ fapi_try_exit:
/// @note Page 28
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::extended_base_module_type( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::extended_base_module_type( uint8_t& o_value)
{
// Extracting desired bits
const uint8_t l_field_bits = extract_spd_field< EXTENDED_MODULE_TYPE >(iv_target, iv_spd_data);
@@ -1230,7 +1232,7 @@ fapi_try_exit:
/// @note Page 29
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_timebase( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::fine_timebase( int64_t& o_value)
{
// =========================================================
// Byte 17 maps
@@ -1252,7 +1254,7 @@ fapi2::ReturnCode decoder::fine_timebase( int64_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(FINE_TIMEBASE_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(FINE_TIMEBASE_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -1277,7 +1279,7 @@ fapi_try_exit:
/// @note Page 29
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::medium_timebase( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::medium_timebase( int64_t& o_value)
{
// =========================================================
// Byte 17 maps
@@ -1299,7 +1301,7 @@ fapi2::ReturnCode decoder::medium_timebase( int64_t& o_value)
FAPI_DBG("Field Bits value: %d", l_field_bits);
// Find map value
- bool l_is_val_found = mss::find_value_from_key(MEDIUM_TIMEBASE_MAP, l_field_bits, o_value);
+ const bool l_is_val_found = mss::find_value_from_key(MEDIUM_TIMEBASE_MAP, l_field_bits, o_value);
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_is_val_found,
@@ -1329,7 +1331,7 @@ fapi_try_exit:
/// integer and the Fine Offset for tCKmin (SPD byte 125)
/// used for correction to get the actual value.
///
-fapi2::ReturnCode decoder::min_tck( int64_t& o_value )
+fapi2::ReturnCode decoder_v1_0::min_tck( int64_t& o_value )
{
// Explicit conversion
constexpr size_t BYTE_INDEX = 18;
@@ -1376,7 +1378,7 @@ fapi_try_exit:
/// integer and the Fine Offset for tCKmax (SPD byte 124)
/// used for correction to get the actual value.
///
-fapi2::ReturnCode decoder::max_tck( int64_t& o_value )
+fapi2::ReturnCode decoder_v1_0::max_tck( int64_t& o_value )
{
// Explicit conversion
constexpr size_t BYTE_INDEX = 19;
@@ -1420,7 +1422,7 @@ fapi_try_exit:
/// @note Page 33-34
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::supported_cas_latencies( uint64_t& o_value )
+fapi2::ReturnCode decoder_v1_0::supported_cas_latencies( uint64_t& o_value )
{
// Trace print in the front assists w/ debug
constexpr size_t FIRST_BYTE = 20;
@@ -1497,7 +1499,7 @@ fapi_try_exit:
/// integer and the Fine Offset for tAAmin (SPD byte 123)
/// used for correction to get the actual value.
///
-fapi2::ReturnCode decoder::min_taa( int64_t& o_value )
+fapi2::ReturnCode decoder_v1_0::min_taa( int64_t& o_value )
{
// Explicit conversion
constexpr size_t BYTE_INDEX = 24;
@@ -1544,7 +1546,7 @@ fapi_try_exit:
/// integer and the Fine Offset for tRCDmin (SPD byte 122)
/// used for correction to get the actual value
///
-fapi2::ReturnCode decoder::min_trcd( int64_t& o_value )
+fapi2::ReturnCode decoder_v1_0::min_trcd( int64_t& o_value )
{
// Explicit conversion
constexpr size_t BYTE_INDEX = 25;
@@ -1591,7 +1593,7 @@ fapi_try_exit:
/// integer and the Fine Offset for tRPmin (SPD byte 121)
/// used for correction to get the actual value
///
-fapi2::ReturnCode decoder::min_trp( int64_t& o_value )
+fapi2::ReturnCode decoder_v1_0::min_trp( int64_t& o_value )
{
// Explicit conversion
constexpr size_t BYTE_INDEX = 26;
@@ -1635,7 +1637,7 @@ fapi_try_exit:
/// @note Page 38
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::min_tras( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_tras( int64_t& o_value)
{
uint8_t tRASmin_MSN = extract_spd_field< TRASMIN_MSN >(iv_target, iv_spd_data);
FAPI_INF("MSN Field Bits value: %lu", tRASmin_MSN);
@@ -1698,7 +1700,7 @@ fapi_try_exit:
/// integer and the Fine Offset for tRCmin (SPD byte 120)
/// used for correction to get the actual value.
///
-fapi2::ReturnCode decoder::min_trc( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_trc( int64_t& o_value)
{
uint8_t tRCmin_MSN = extract_spd_field< TRCMIN_MSN >(iv_target, iv_spd_data);
FAPI_INF("MSN Field Bits value: %lu", tRCmin_MSN);
@@ -1756,7 +1758,7 @@ fapi_try_exit:
/// @note Page 39-40
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::min_trfc1( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_trfc1( int64_t& o_value)
{
uint8_t tRFC1min_MSB = extract_spd_field< TRFC1MIN_MSB >(iv_target, iv_spd_data);
FAPI_INF("MSB Field Bits value: %lu", tRFC1min_MSB);
@@ -1814,7 +1816,7 @@ fapi_try_exit:
/// @note Page 40
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::min_trfc2( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_trfc2( int64_t& o_value)
{
uint8_t tRFC2min_MSB = extract_spd_field< TRFC2MIN_MSB >(iv_target, iv_spd_data);
FAPI_INF("MSB Field Bits value: %lu", tRFC2min_MSB);
@@ -1872,7 +1874,7 @@ fapi_try_exit:
/// @note Page 40
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::min_trfc4( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_trfc4( int64_t& o_value)
{
uint8_t tRFC4min_MSB = extract_spd_field< TRFC4MIN_MSB >(iv_target, iv_spd_data);
FAPI_INF("MSB Field Bits value: %lu", tRFC4min_MSB);
@@ -1930,7 +1932,7 @@ fapi_try_exit:
/// @note Page 42
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::min_tfaw( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_tfaw( int64_t& o_value)
{
uint8_t tFAWmin_MSN = extract_spd_field< TFAWMIN_MSN >(iv_target, iv_spd_data);
FAPI_INF("MSN Field Bits value: %lu", tFAWmin_MSN);
@@ -1992,7 +1994,7 @@ fapi_try_exit:
/// integer and the Fine Offset for tRRD_Smin (SPD byte 119)
/// used for correction to get the actual value.
///
-fapi2::ReturnCode decoder::min_trrd_s( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_trrd_s( int64_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 38;
@@ -2041,7 +2043,7 @@ fapi_try_exit:
/// integer and the Fine Offset for tRRD_Lmin (SPD byte 118)
/// used for correction to get the actual value.
///
-fapi2::ReturnCode decoder::min_trrd_l( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_trrd_l( int64_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 39;
@@ -2090,7 +2092,7 @@ fapi_try_exit:
/// integer and the Fine Offset for tCCD_Lmin (SPD byte 117)
/// used for correction to get the actual value.
///
-fapi2::ReturnCode decoder::min_tccd_l( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_tccd_l( int64_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 40;
@@ -2135,7 +2137,7 @@ fapi_try_exit:
/// @note Page 40
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::min_twr( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_twr( int64_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// SPD Byte 41 (bits 3~0) & Byte 42 (bits 7~0) were reserved
@@ -2157,7 +2159,7 @@ fapi2::ReturnCode decoder::min_twr( int64_t& o_value)
/// @note Page 40
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::min_twtr_s( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_twtr_s( int64_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// SPD Byte 43 (bits 3~0) & Byte 44 (bits 7~0) were reserved
@@ -2178,7 +2180,7 @@ fapi2::ReturnCode decoder::min_twtr_s( int64_t& o_value)
/// @note Page 46
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::min_twtr_l( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::min_twtr_l( int64_t& o_value)
{
// For General Section rev 1.0 of the SPD,
// SPD Byte 43 (bits 7~4) & Byte 45 (bits 7~0) were reserved
@@ -2200,7 +2202,7 @@ fapi2::ReturnCode decoder::min_twtr_l( int64_t& o_value)
/// @note Page 52
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_offset_min_tccd_l( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::fine_offset_min_tccd_l( int64_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 117;
@@ -2246,7 +2248,7 @@ fapi_try_exit:
/// @note Page 52
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_offset_min_trrd_l( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::fine_offset_min_trrd_l( int64_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 118;
@@ -2292,7 +2294,7 @@ fapi_try_exit:
/// @note Page 52
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_offset_min_trrd_s( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::fine_offset_min_trrd_s( int64_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 119;
@@ -2338,7 +2340,7 @@ fapi_try_exit:
/// @note Page 52
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_offset_min_trc( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::fine_offset_min_trc( int64_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 120;
@@ -2384,7 +2386,7 @@ fapi_try_exit:
/// @note Page 52
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_offset_min_trp( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::fine_offset_min_trp( int64_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 121;
@@ -2429,7 +2431,7 @@ fapi_try_exit:
/// @note Page 52
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_offset_min_trcd( int64_t& o_value)
+fapi2::ReturnCode decoder_v1_0::fine_offset_min_trcd( int64_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 122;
@@ -2475,7 +2477,7 @@ fapi_try_exit:
/// @note Page 52
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_offset_min_taa( int64_t& o_value )
+fapi2::ReturnCode decoder_v1_0::fine_offset_min_taa( int64_t& o_value )
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 123;
@@ -2521,7 +2523,7 @@ fapi_try_exit:
/// @note Page 52
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_offset_max_tck( int64_t& o_value )
+fapi2::ReturnCode decoder_v1_0::fine_offset_max_tck( int64_t& o_value )
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 124;
@@ -2568,7 +2570,7 @@ fapi_try_exit:
/// @note Page 52
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::fine_offset_min_tck( int64_t& o_value )
+fapi2::ReturnCode decoder_v1_0::fine_offset_min_tck( int64_t& o_value )
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 125;
@@ -2615,7 +2617,7 @@ fapi_try_exit:
/// @note Page 53
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::cyclical_redundancy_code( uint16_t& o_value )
+fapi2::ReturnCode decoder_v1_0::cyclical_redundancy_code( uint16_t& o_value )
{
uint8_t crc_MSB = extract_spd_field< CRC_MSB >(iv_target, iv_spd_data);
FAPI_INF("MSB Field Bits value: %lu", crc_MSB);
@@ -2653,7 +2655,7 @@ fapi2::ReturnCode decoder::cyclical_redundancy_code( uint16_t& o_value )
/// @note DDR4 SPD Document Release 3
/// @note Page 4.1.2.12 - 54
///
-fapi2::ReturnCode decoder::module_manufacturer_id_code( uint16_t& o_value )
+fapi2::ReturnCode decoder_v1_0::module_manufacturer_id_code( uint16_t& o_value )
{
constexpr size_t BYTE_INDEX_MSB = 320;
@@ -2690,7 +2692,7 @@ fapi2::ReturnCode decoder::module_manufacturer_id_code( uint16_t& o_value )
/// @note Page 55
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::module_manufacturing_location( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::module_manufacturing_location( uint8_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 322;
@@ -2720,7 +2722,7 @@ fapi2::ReturnCode decoder::module_manufacturing_location( uint8_t& o_value)
/// @note in Binary Coded Decimal (BCD)
/// @note MSB = year, LSB = week
///
-fapi2::ReturnCode decoder::module_manufacturing_date( uint16_t& o_value )
+fapi2::ReturnCode decoder_v1_0::module_manufacturing_date( uint16_t& o_value )
{
constexpr size_t BYTE_INDEX_MSB = 323;
@@ -2759,7 +2761,7 @@ fapi2::ReturnCode decoder::module_manufacturing_date( uint16_t& o_value )
/// @note Page 4.1.2.12 - 54
/// @note in Binary Coded Decimal (BCD)
///
-fapi2::ReturnCode decoder::module_serial_number( uint32_t& o_value )
+fapi2::ReturnCode decoder_v1_0::module_serial_number( uint32_t& o_value )
{
constexpr size_t BYTE_INDEX_0 = 325;
uint8_t sn_byte_0 = iv_spd_data[BYTE_INDEX_0];
@@ -2808,7 +2810,7 @@ fapi2::ReturnCode decoder::module_serial_number( uint32_t& o_value )
/// @note Page 55
/// @note DDR4 SPD Document Release 3
///
-fapi2::ReturnCode decoder::module_revision_code( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::module_revision_code( uint8_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 349;
@@ -2836,7 +2838,7 @@ fapi2::ReturnCode decoder::module_revision_code( uint8_t& o_value)
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 54
///
-fapi2::ReturnCode decoder::dram_manufacturer_id_code( uint16_t& o_value )
+fapi2::ReturnCode decoder_v1_0::dram_manufacturer_id_code( uint16_t& o_value )
{
constexpr size_t BYTE_INDEX_MSB = 350;
uint8_t mfgid_MSB = iv_spd_data[BYTE_INDEX_MSB];
@@ -2873,7 +2875,7 @@ fapi2::ReturnCode decoder::dram_manufacturer_id_code( uint16_t& o_value )
/// @note DDR4 SPD Document Release 3
/// @note also called die revision level
///
-fapi2::ReturnCode decoder::dram_stepping( uint8_t& o_value)
+fapi2::ReturnCode decoder_v1_0::dram_stepping( uint8_t& o_value)
{
// Trace in the front assists w/ debug
constexpr size_t BYTE_INDEX = 352;
@@ -2896,7 +2898,7 @@ fapi2::ReturnCode decoder::dram_stepping( uint8_t& o_value)
/// @param[out] o_logical_ranks number of logical ranks
/// @return fapi2::FAPI2_RC_SUCCESS if okay
///
-fapi2::ReturnCode decoder::prim_sdram_logical_ranks( uint8_t& o_logical_ranks )
+fapi2::ReturnCode decoder_v1_0::prim_sdram_logical_ranks( uint8_t& o_logical_ranks )
{
uint8_t l_signal_loading = 0;
uint8_t l_ranks_per_dimm = 0;
@@ -2930,7 +2932,7 @@ fapi_try_exit:
/// @param[out] o_logical_ranks number of logical ranks
/// @return fapi2::FAPI2_RC_SUCCESS if okay
///
-fapi2::ReturnCode decoder::logical_ranks_per_dimm( uint8_t& o_logical_rank_per_dimm )
+fapi2::ReturnCode decoder_v1_0::logical_ranks_per_dimm( uint8_t& o_logical_rank_per_dimm )
{
FAPI_TRY( prim_sdram_logical_ranks(o_logical_rank_per_dimm) );
@@ -2938,5 +2940,6 @@ fapi_try_exit:
return fapi2::current_err;
}
+}// ddr4
}//spd
}// mss
diff --git a/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_1.C b/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_1.C
index ea72b7615..9845a5b46 100644
--- a/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_1.C
+++ b/src/import/generic/memory/lib/spd/common/ddr4/spd_decoder_ddr4_v1_1.C
@@ -49,6 +49,8 @@ namespace mss
{
namespace spd
{
+namespace ddr4
+{
/////////////////////////
// Member method definitions
@@ -65,7 +67,7 @@ decoder_v1_1::decoder_v1_1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_targe
const std::vector<uint8_t>& i_spd_data,
const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
const rcw_settings& i_raw_card)
- : decoder(i_target, i_spd_data, i_module_decoder, i_raw_card)
+ : decoder_v1_0(i_target, i_spd_data, i_module_decoder, i_raw_card)
{}
///
@@ -846,5 +848,6 @@ fapi_try_exit:
return fapi2::current_err;
}
-}//spd
+}// ddr4
+}// spd
}// mss
diff --git a/src/import/generic/memory/lib/spd/common/spd_decoder_base.H b/src/import/generic/memory/lib/spd/common/spd_decoder_base.H
index a1aee784e..ed67c42ac 100644
--- a/src/import/generic/memory/lib/spd/common/spd_decoder_base.H
+++ b/src/import/generic/memory/lib/spd/common/spd_decoder_base.H
@@ -49,10 +49,60 @@ namespace spd
{
///
+/// @brief Helper function to extract byte information
+/// @tparam F the SPD field to extract
+/// @param[in] i_target the dimm target
+/// @param[in] i_spd_data the SPD data
+/// @return extracted byte (right aligned)
+///
+template< const field_t& F >
+inline uint8_t extract_spd_field(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+ const std::vector<uint8_t>& i_spd_data)
+{
+ FAPI_INF("%s SPD data at Byte %d: 0x%llX.",
+ mss::c_str(i_target),
+ F.iv_byte,
+ i_spd_data[F.iv_byte]);
+
+ fapi2::buffer<uint8_t> l_buffer(i_spd_data[F.iv_byte]);
+
+ // Extracting desired bits
+ uint8_t l_field_bits = 0;
+ l_buffer.extractToRight<F.iv_start, F.iv_length>(l_field_bits);
+
+ return l_field_bits;
+}
+
+///
+/// @brief Helper function to extract byte information
+/// @param[in] i_target the dimm target
+/// @param[in] i_field the SPD field
+/// @param[in] i_spd_data the SPD data
+/// @return extracted byte (right aligned)
+///
+inline uint8_t extract_spd_field(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+ const field_t& i_field,
+ const std::vector<uint8_t>& i_spd_data)
+{
+ FAPI_INF("%s SPD data at Byte %d: 0x%llX.",
+ mss::c_str(i_target),
+ i_field.iv_byte,
+ i_spd_data[i_field.iv_byte]);
+
+ fapi2::buffer<uint8_t> l_buffer(i_spd_data[i_field.iv_byte]);
+
+ // Extracting desired bits
+ uint8_t l_field_bits = 0;
+ l_buffer.extractToRight( l_field_bits, i_field.iv_start, i_field.iv_length );
+
+ return l_field_bits;
+}
+
+///
/// @class decoder
/// @brief Base SPD DRAM decoder
///
-class base_decoder
+class decoder
{
protected:
@@ -84,8 +134,10 @@ class base_decoder
std::vector<uint8_t> iv_spd_data;
rcw_settings iv_raw_card;
- // Default constructor deleted
- base_decoder() = delete;
+ ///
+ /// @brief default ctor
+ ///
+ decoder() = default;
///
/// @brief ctor
@@ -94,10 +146,10 @@ class base_decoder
/// @param[in] i_module_decoder shared_ptr to dimm module decoder
/// @param[in] i_raw_card raw pointer to rcd data
///
- base_decoder(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- const std::vector<uint8_t>& i_spd_data,
- const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
- const rcw_settings& i_raw_card)
+ decoder(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+ const std::vector<uint8_t>& i_spd_data,
+ const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
+ const rcw_settings& i_raw_card)
: iv_target(i_target),
iv_module_decoder(i_module_decoder),
iv_spd_data(i_spd_data),
@@ -107,7 +159,7 @@ class base_decoder
///
/// @brief Default dtor
///
- virtual ~base_decoder() = default;
+ virtual ~decoder() = default;
/////////////////////////
// Member Methods
diff --git a/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4.H b/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4.H
index 32d4c6245..5f85c7105 100644
--- a/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4.H
+++ b/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4.H
@@ -24,7 +24,7 @@
/* IBM_PROLOG_END_TAG */
///
-/// @file lrdimm_decoder.H
+/// @file lrdimm_decoder_ddr4.H
/// @brief LRDIMM module SPD decoder declarations
///
// *HWP HWP Owner: Andre Marin <aamarin@us.ibm.com>
@@ -34,8 +34,8 @@
// *HWP Consumed by: HB:FSP
-#ifndef _MSS_LRDIMM_DECODER_H_
-#define _MSS_LRDIMM_DECODER_H_
+#ifndef _MSS_LRDIMM_DECODER_DDR4_H_
+#define _MSS_LRDIMM_DECODER_DDR4_H_
#include <fapi2.H>
#include <vector>
@@ -45,6 +45,8 @@ namespace mss
{
namespace spd
{
+namespace ddr4
+{
namespace lrdimm
{
@@ -57,6 +59,11 @@ class decoder_v1_0 : public dimm_module_decoder
const fapi2::Target<fapi2::TARGET_TYPE_DIMM> iv_target;
+ public:
+
+ // First field - SPD byte
+ // Second field - start bit
+ // Third field - bit length
constexpr static field_t MODULE_NOMINAL_HEIGHT{128, 3, 5};
constexpr static field_t RAW_CARD_EXTENSION{128, 0, 3};
@@ -97,7 +104,6 @@ class decoder_v1_0 : public dimm_module_decoder
constexpr static field_t DATA_BUFFER_GAIN_ADJUST{156, 7, 1};
constexpr static field_t DATA_BUFFER_DFE{156, 6, 1};
- public:
// Allows injection of errors for testing
// TK - Consider API change to use setter/getters
// for this instance variable, RDIMM decoder
@@ -664,7 +670,9 @@ class decoder_v1_2 : public decoder_v1_1
};
}// lrdimm
+}// ddr4
}// spd
}// mss
-#endif //_MSS_LRDIMM_DECODER_H_
+
+#endif //_MSS_LRDIMM_DECODER_DDR4_H_
diff --git a/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_0.C b/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_0.C
index 00192a229..3e3601a93 100644
--- a/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_0.C
+++ b/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_0.C
@@ -55,6 +55,8 @@ namespace mss
{
namespace spd
{
+namespace ddr4
+{
namespace lrdimm
{
@@ -1363,5 +1365,6 @@ fapi_try_exit:
}
}// lrdimm
-}//spd
+}// ddr4
+}// spd
}// mss
diff --git a/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_1.C b/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_1.C
index 32bc97940..2f235620c 100644
--- a/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_1.C
+++ b/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_1.C
@@ -54,6 +54,8 @@ namespace mss
{
namespace spd
{
+namespace ddr4
+{
namespace lrdimm
{
@@ -269,5 +271,6 @@ fapi_try_exit:
}
}// lrdimm
+}// ddr4
}// spd
}// mss
diff --git a/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_2.C b/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_2.C
index 4e223cb19..55b8708a8 100644
--- a/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_2.C
+++ b/src/import/generic/memory/lib/spd/lrdimm/ddr4/lrdimm_decoder_ddr4_v1_2.C
@@ -54,8 +54,11 @@ namespace mss
{
namespace spd
{
+namespace ddr4
+{
namespace lrdimm
{
+
///
/// @brief Decodes register output drive strength for data buffer control (BCOM, BODT, BKCE)
/// @param[out] o_output encoded drive strength
@@ -302,5 +305,6 @@ fapi_try_exit:
}
}// lrdimm
+}// ddr4
}// spd
}// mss
diff --git a/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4.H b/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4.H
index effc7f983..9d62ea4b3 100644
--- a/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4.H
+++ b/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4.H
@@ -24,7 +24,7 @@
/* IBM_PROLOG_END_TAG */
///
-/// @file rdimm_decoder.H
+/// @file rdimm_decoder_ddr4.H
/// @brief RDIMM module SPD decoder declarations
///
// *HWP HWP Owner: Andre Marin <aamarin@us.ibm.com>
@@ -33,8 +33,8 @@
// *HWP Level: 2
// *HWP Consumed by: HB:FSP
-#ifndef _MSS_RDIMM_DECODER_H_
-#define _MSS_RDIMM_DECODER_H_
+#ifndef _MSS_RDIMM_DECODER_DDR4_H_
+#define _MSS_RDIMM_DECODER_DDR4_H_
#include <fapi2.H>
#include <generic/memory/lib/spd/common/dimm_module_decoder.H>
@@ -43,12 +43,16 @@ namespace mss
{
namespace spd
{
+namespace ddr4
+{
+namespace rdimm
+{
///
/// @class decoder
/// @brief RDIMM module SPD DRAM decoder for rev 1.0
///
-class rdimm_decoder_v1_0 : public dimm_module_decoder
+class decoder_v1_0 : public dimm_module_decoder
{
protected:
enum
@@ -122,22 +126,47 @@ class rdimm_decoder_v1_0 : public dimm_module_decoder
};
public:
+
+ // First field - SPD byte
+ // Second field - start bit
+ // Third field - bit length
+ static constexpr field_t MODULE_NOMINAL_HEIGHT{128, MODULE_NOM_HEIGHT_START, MODULE_NOM_HEIGHT_LEN};
+ static constexpr field_t RAW_CARD_EXTENSION{128, RAW_CARD_EXT_START, RAW_CARD_EXT_LEN};
+ static constexpr field_t FRONT_MODULE_THICKNESS{129, FRONT_MODULE_THICKNESS_START, FRONT_MODULE_THICKNESS_LEN};
+ static constexpr field_t BACK_MODULE_THICKNESS{129, BACK_MODULE_THICKNESS_START, BACK_MODULE_THICKNESS_LEN};
+ static constexpr field_t REF_RAW_CARD{130, REF_RAW_CARD_START, REF_RAW_CARD_LEN};
+ static constexpr field_t REF_RAW_CARD_REV{130, REF_RAW_CARD_REV_START, REF_RAW_CARD_REV_LEN};
+ static constexpr field_t REF_RAW_CARD_EXT{130, REF_RAW_CARD_EXT_START, REF_RAW_CARD_EXT_LEN};
+ static constexpr field_t NUM_REGS_USED{131, REGS_USED_START, REGS_USED_LEN};
+ static constexpr field_t ROWS_OF_DRAMS{131, ROWS_OF_DRAMS_START, ROWS_OF_DRAMS_LEN};
+ static constexpr field_t REGISTER_TYPE{131, REGISTER_TYPE_START, REGISTER_TYPE_LEN};
+ static constexpr field_t HEAT_SPREADER_CHAR{132, HEAT_SPREADER_CHAR_START, HEAT_SPREADER_CHAR_LEN};
+ static constexpr field_t HEAT_SPREADER_SOL{132, HEAT_SPREADER_SOL_START, HEAT_SPREADER_SOL_LEN};
+ static constexpr field_t CONTINUATION_CODES{133, CONTINUATION_CODES_START, CONTINUATION_CODES_LEN};
+ static constexpr field_t ADDR_MAPPING{136, ADDR_MAPPING_START, ADDR_MAPPING_LEN};
+ static constexpr field_t CKE_DRIVER{137, CKE_DRIVER_START, CKE_DRIVER_LEN};
+ static constexpr field_t ODT_DRIVER{137, ODT_DRIVER_START, ODT_DRIVER_LEN};
+ static constexpr field_t CA_DRIVER{137, CA_DRIVER_START, CA_DRIVER_LEN};
+ static constexpr field_t CS_DRIVER{137, CS_DRIVER_START, CS_DRIVER_LEN};
+ static constexpr field_t YO_Y2_DRIVER{138, YO_Y2_DRIVER_START, YO_Y2_DRIVER_LEN};
+ static constexpr field_t Y1_Y3_DRIVER{138, Y1_Y3_DRIVER_START, Y1_Y3_DRIVER_LEN};
+
// deleted default ctor
- rdimm_decoder_v1_0() = delete;
+ decoder_v1_0() = delete;
///
/// @brief ctor
/// @param[in] i_target dimm target
/// @param[in] i_spd_data vector DIMM SPD data
///
- rdimm_decoder_v1_0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- const std::vector<uint8_t>& i_spd_data): iv_target(i_target), iv_spd_data(i_spd_data)
+ decoder_v1_0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+ const std::vector<uint8_t>& i_spd_data): iv_target(i_target), iv_spd_data(i_spd_data)
{}
///
/// @brief default dtor
///
- virtual ~rdimm_decoder_v1_0() = default;
+ virtual ~decoder_v1_0() = default;
///
/// @brief Decodes module nominal height max, in mm
@@ -330,32 +359,33 @@ class rdimm_decoder_v1_0 : public dimm_module_decoder
const fapi2::Target<fapi2::TARGET_TYPE_DIMM> iv_target;
const std::vector<uint8_t> iv_spd_data;
-};// rdimm_decoder_v1_0
+};// decoder_v1_0
///
/// @class decoder
/// @brief RDIMM module SPD DRAM decoder for rev 1.1
///
-class rdimm_decoder_v1_1 : public rdimm_decoder_v1_0
+class decoder_v1_1 : public decoder_v1_0
{
public:
// deleted default ctor
- rdimm_decoder_v1_1() = delete;
+ decoder_v1_1() = delete;
///
/// @brief ctor
/// @param[in] i_target dimm target
/// @param[in] i_spd_data vector DIMM SPD data
///
- rdimm_decoder_v1_1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- const std::vector<uint8_t>& i_spd_data): rdimm_decoder_v1_0(i_target, i_spd_data)
+ decoder_v1_1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+ const std::vector<uint8_t>& i_spd_data):
+ decoder_v1_0(i_target, i_spd_data)
{}
///
/// @brief default dtor
///
- virtual ~rdimm_decoder_v1_1() = default;
+ virtual ~decoder_v1_1() = default;
///
/// @brief Decodes register types
@@ -423,9 +453,11 @@ class rdimm_decoder_v1_1 : public rdimm_decoder_v1_0
///
virtual fapi2::ReturnCode a_side_clk_output_driver(uint8_t& o_output) override;
-};//rdimm_decoder_v1_1
+};//decoder_v1_1
+}// rdimm
+}// ddr4
}// spd
}// mss
-#endif //_MSS_RDIMM_DECODER_H_
+#endif //_MSS_RDIMM_DECODER_DDR4_H_
diff --git a/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_0.C b/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_0.C
index 43eb08c51..25ace3e70 100644
--- a/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_0.C
+++ b/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_0.C
@@ -55,6 +55,10 @@ namespace mss
{
namespace spd
{
+namespace ddr4
+{
+namespace rdimm
+{
/////////////////////////
// Member Method implementation
@@ -70,20 +74,17 @@ namespace spd
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 48
///
-fapi2::ReturnCode rdimm_decoder_v1_0::max_module_nominal_height(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::max_module_nominal_height(uint8_t& o_output)
{
- constexpr size_t BYTE_INDEX = 128;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, MODULE_NOM_HEIGHT_START, MODULE_NOM_HEIGHT_LEN>(iv_target,
- iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<MODULE_NOMINAL_HEIGHT>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t MAX_VALID_VALUE = 0b11111;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits <= MAX_VALID_VALUE,
- BYTE_INDEX,
+ MODULE_NOMINAL_HEIGHT.iv_byte,
l_field_bits,
"Failed bound check for module nominal height max") );
@@ -106,21 +107,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 48
///
-fapi2::ReturnCode rdimm_decoder_v1_0::front_module_max_thickness(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::front_module_max_thickness(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 129;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, FRONT_MODULE_THICKNESS_START, FRONT_MODULE_THICKNESS_LEN>
- (iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<FRONT_MODULE_THICKNESS>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t MAX_VALID_VALUE = 0b1111;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits <= MAX_VALID_VALUE,
- BYTE_INDEX,
+ FRONT_MODULE_THICKNESS.iv_byte,
l_field_bits,
"Failed bound check for front module max thickness") );
@@ -144,20 +142,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 48
///
-fapi2::ReturnCode rdimm_decoder_v1_0::back_module_max_thickness(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::back_module_max_thickness(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 129;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, BACK_MODULE_THICKNESS_START, BACK_MODULE_THICKNESS_LEN>(iv_target,
- iv_spd_data);
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<BACK_MODULE_THICKNESS>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t MAX_VALID_VALUE = 0b1111;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits <= MAX_VALID_VALUE,
- BYTE_INDEX,
+ BACK_MODULE_THICKNESS.iv_byte,
l_field_bits,
"Failed bound check for back module max thickness") );
@@ -181,20 +177,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 50
///
-fapi2::ReturnCode rdimm_decoder_v1_0::num_registers_used(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::num_registers_used(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 131;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, REGS_USED_START, REGS_USED_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<NUM_REGS_USED>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t MAX_VALID_VALUE = 0b11;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits <= MAX_VALID_VALUE,
- BYTE_INDEX,
+ NUM_REGS_USED.iv_byte,
l_field_bits,
"Failed bound check for number of registers used on RDIMM ") );
@@ -218,20 +212,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 50
///
-fapi2::ReturnCode rdimm_decoder_v1_0::num_rows_of_drams(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::num_rows_of_drams(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 131;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, ROWS_OF_DRAMS_START, ROWS_OF_DRAMS_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<ROWS_OF_DRAMS>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t MAX_VALID_VALUE = 0b11;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits <= MAX_VALID_VALUE,
- BYTE_INDEX,
+ ROWS_OF_DRAMS.iv_byte,
l_field_bits,
"Failed bound check for number of rows of DRAMs on RDIMM ") );
@@ -255,20 +247,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 51
///
-fapi2::ReturnCode rdimm_decoder_v1_0::heat_spreader_thermal_char(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::heat_spreader_thermal_char(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 132;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, HEAT_SPREADER_CHAR_START, HEAT_SPREADER_CHAR_LEN>(iv_target,
- iv_spd_data);
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<HEAT_SPREADER_CHAR>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t MAX_VALID_VALUE = 1;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits <= MAX_VALID_VALUE,
- BYTE_INDEX,
+ HEAT_SPREADER_CHAR.iv_byte,
l_field_bits,
"Failed bound check for heat spreader thermal characteristics") );
@@ -291,21 +281,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 51
///
-fapi2::ReturnCode rdimm_decoder_v1_0::heat_spreader_solution(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::heat_spreader_solution(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 132;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, HEAT_SPREADER_SOL_START, HEAT_SPREADER_SOL_LEN>(iv_target,
- iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<HEAT_SPREADER_SOL>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t MAX_VALID_VALUE = 1;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits <= MAX_VALID_VALUE,
- BYTE_INDEX,
+ HEAT_SPREADER_SOL.iv_byte,
l_field_bits,
"Failed bound check for heat spreader solution") );
@@ -329,21 +316,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 51
///
-fapi2::ReturnCode rdimm_decoder_v1_0::num_continuation_codes(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::num_continuation_codes(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 133;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, CONTINUATION_CODES_START, CONTINUATION_CODES_LEN>(iv_target,
- iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<CONTINUATION_CODES>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t MAX_VALID_VALUE = 10; // JEP106AS
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits <= MAX_VALID_VALUE,
- BYTE_INDEX,
+ CONTINUATION_CODES.iv_byte,
l_field_bits,
"Failed bound check for number of continuation codes") );
@@ -367,7 +351,7 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 51
///
-fapi2::ReturnCode rdimm_decoder_v1_0::reg_manufacturer_id_code(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::reg_manufacturer_id_code(uint8_t& o_output)
{
constexpr size_t BYTE_INDEX = 134;
uint8_t l_raw_byte = iv_spd_data[BYTE_INDEX];
@@ -396,7 +380,7 @@ fapi2::ReturnCode rdimm_decoder_v1_0::reg_manufacturer_id_code(uint8_t& o_output
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 51
///
-fapi2::ReturnCode rdimm_decoder_v1_0::register_rev_num(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::register_rev_num(uint8_t& o_output)
{
constexpr size_t BYTE_INDEX = 135;
uint8_t l_raw_byte = iv_spd_data[BYTE_INDEX];
@@ -425,20 +409,18 @@ fapi2::ReturnCode rdimm_decoder_v1_0::register_rev_num(uint8_t& o_output)
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 52
///
-fapi2::ReturnCode rdimm_decoder_v1_0::register_to_dram_addr_mapping(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::register_to_dram_addr_mapping(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 136;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, ADDR_MAPPING_START, ADDR_MAPPING_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<ADDR_MAPPING>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t RESERVED = 0b11;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits < RESERVED, // extract sanity check
- BYTE_INDEX,
+ ADDR_MAPPING.iv_byte,
l_field_bits,
"Failed bound check for to register to dram addr mapping") );
@@ -461,20 +443,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 53
///
-fapi2::ReturnCode rdimm_decoder_v1_0::cke_signal_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::cke_signal_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 137;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, CKE_DRIVER_START, CKE_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<CKE_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t RESERVED = 2;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits < RESERVED, // extract sanity check
- BYTE_INDEX,
+ CKE_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for CKE") );
@@ -497,20 +477,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 53
///
-fapi2::ReturnCode rdimm_decoder_v1_0::odt_signal_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::odt_signal_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 137;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, ODT_DRIVER_START, ODT_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<ODT_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t RESERVED = 2;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits < RESERVED, // extract sanity check
- BYTE_INDEX,
+ ODT_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for ODT") );
@@ -533,20 +511,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 53
///
-fapi2::ReturnCode rdimm_decoder_v1_0::ca_signal_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::ca_signal_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 137;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, CA_DRIVER_START, CA_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<CA_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t INVALID_VAL = 3;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits < INVALID_VAL, // extract sanity check
- BYTE_INDEX,
+ CA_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for CA") );
@@ -569,20 +545,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 53
///
-fapi2::ReturnCode rdimm_decoder_v1_0::cs_signal_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::cs_signal_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 137;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, CS_DRIVER_START, CS_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<CS_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t RESERVED = 2;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits < RESERVED, // extract sanity check
- BYTE_INDEX,
+ CS_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for CS") );
@@ -605,18 +579,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 53
///
-fapi2::ReturnCode rdimm_decoder_v1_0::b_side_clk_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::b_side_clk_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE_INDEX = 138;
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, YO_Y2_DRIVER_START, YO_Y2_DRIVER_LEN>(iv_target, iv_spd_data);
+ const uint8_t l_field_bits = extract_spd_field<YO_Y2_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t RESERVED = 2;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits < RESERVED, // extract sanity check
- BYTE_INDEX,
+ YO_Y2_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for clock (Y0,Y2)") );
@@ -639,22 +613,18 @@ fapi_try_exit:
/// @note DDR4 SPD Document Release 2
/// @note Page 4.1.2.12 - 53
///
-fapi2::ReturnCode rdimm_decoder_v1_0::a_side_clk_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_0::a_side_clk_output_driver(uint8_t& o_output)
{
- // Trace in the front assists w/ debug
- constexpr size_t BYTE_INDEX = 138;
-
// Extracting desired bits
- uint8_t l_field_bits = extract_spd_field<BYTE_INDEX, Y1_Y3_DRIVER_START, Y1_Y3_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<Y1_Y3_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field_Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
constexpr size_t RESERVED = 2;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
l_field_bits < RESERVED,
- BYTE_INDEX,
+ Y1_Y3_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for clock (Y1,Y3)") );
@@ -668,5 +638,7 @@ fapi_try_exit:
return fapi2::current_err;
}
-}//spd namespace
-}// mss namespace
+}// rdimm
+}// ddr4
+}// spd
+}// mss
diff --git a/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_1.C b/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_1.C
index 4517de0a7..753750fb9 100644
--- a/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_1.C
+++ b/src/import/generic/memory/lib/spd/rdimm/ddr4/rdimm_decoder_ddr4_v1_1.C
@@ -46,6 +46,10 @@ namespace mss
{
namespace spd
{
+namespace ddr4
+{
+namespace rdimm
+{
/////////////////////////
// Member Method implementation
@@ -61,11 +65,10 @@ namespace spd
/// @note DDR4 SPD Document Release 3
/// @note Page 4.1.2.12.3 - 63
///
-fapi2::ReturnCode rdimm_decoder_v1_1::register_and_buffer_type(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_1::register_and_buffer_type(uint8_t& o_output)
{
- constexpr size_t BYTE = 131;
// Extracting desired bits
- uint8_t l_field_bits = extract_spd_field<BYTE, REGISTER_TYPE_START, REGISTER_TYPE_LEN>(iv_target, iv_spd_data);
+ const uint8_t l_field_bits = extract_spd_field<REGISTER_TYPE>(iv_target, iv_spd_data);
FAPI_INF("Field Bits value: %d", l_field_bits);
// This checks my extracting params returns a value within bound
@@ -73,7 +76,7 @@ fapi2::ReturnCode rdimm_decoder_v1_1::register_and_buffer_type(uint8_t& o_output
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
(l_field_bits < RESERVED), // extract sanity check
- BYTE,
+ REGISTER_TYPE.iv_byte,
l_field_bits,
"Failed bounds check for Register and Data Buffer Types") );
@@ -98,20 +101,18 @@ fapi_try_exit:
/// @note Page 76
/// @note DDR4 SPD Document Release 4
///
-fapi2::ReturnCode rdimm_decoder_v1_1::cke_signal_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_1::cke_signal_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE = 137;
- uint8_t l_field_bits = extract_spd_field<BYTE, CKE_DRIVER_START, CKE_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<CKE_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field Bits value: %d", l_field_bits);
// This really just checks my extract gives me a valid value
constexpr size_t MAX_VALID_VALUE = 0b11;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
(l_field_bits <= MAX_VALID_VALUE), // extract sanity check
- BYTE,
+ CKE_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for CKE") );
@@ -134,20 +135,18 @@ fapi_try_exit:
/// @note Page 76
/// @note DDR4 SPD Document Release 4
///
-fapi2::ReturnCode rdimm_decoder_v1_1::odt_signal_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_1::odt_signal_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE = 137;
- uint8_t l_field_bits = extract_spd_field<BYTE, ODT_DRIVER_START, ODT_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<ODT_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field Bits value: %d", l_field_bits);
// This really just checks my extract gives me a valid value
constexpr size_t MAX_VALID_VALUE = 0b11;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
(l_field_bits <= MAX_VALID_VALUE), // extract sanity check
- BYTE,
+ ODT_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for ODT") );
@@ -170,20 +169,18 @@ fapi_try_exit:
/// @note Page 76
/// @note DDR4 SPD Document Release 4
///
-fapi2::ReturnCode rdimm_decoder_v1_1::cs_signal_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_1::cs_signal_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE = 137;
- uint8_t l_field_bits = extract_spd_field<BYTE, CS_DRIVER_START, CS_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<CS_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field Bits value: %d", l_field_bits);
// This really just checks my extract gives me a valid value
constexpr size_t MAX_VALID_VALUE = 0b11;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
(l_field_bits <= MAX_VALID_VALUE), // extract sanity check
- BYTE,
+ CS_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for chip select") );
@@ -206,20 +203,18 @@ fapi_try_exit:
/// @note Page 76
/// @note DDR4 SPD Document Release 4
///
-fapi2::ReturnCode rdimm_decoder_v1_1::b_side_clk_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_1::b_side_clk_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE = 138;
- uint8_t l_field_bits = extract_spd_field<BYTE, YO_Y2_DRIVER_START, YO_Y2_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<YO_Y2_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field Bits value: %d", l_field_bits);
// This really just checks my extract gives me a valid value
constexpr size_t MAX_VALID_VAL = 2;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
(l_field_bits <= MAX_VALID_VAL), // extract sanity check
- BYTE,
+ YO_Y2_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for clock (Y0,Y2)") );
@@ -242,20 +237,18 @@ fapi_try_exit:
/// @note Page 76
/// @note DDR4 SPD Document Release 4
///
-fapi2::ReturnCode rdimm_decoder_v1_1::a_side_clk_output_driver(uint8_t& o_output)
+fapi2::ReturnCode decoder_v1_1::a_side_clk_output_driver(uint8_t& o_output)
{
// Extracting desired bits
- constexpr size_t BYTE = 138;
- uint8_t l_field_bits = extract_spd_field<BYTE, Y1_Y3_DRIVER_START, Y1_Y3_DRIVER_LEN>(iv_target, iv_spd_data);
-
- FAPI_INF("Field_Bits value: %d", l_field_bits);
+ const uint8_t l_field_bits = extract_spd_field<Y1_Y3_DRIVER>(iv_target, iv_spd_data);
+ FAPI_DBG("Field Bits value: %d", l_field_bits);
// This really just checks my extract gives me a valid value
constexpr size_t MAX_VALID_VAL = 2;
FAPI_TRY( mss::check::spd::fail_for_invalid_value(iv_target,
(l_field_bits <= MAX_VALID_VAL), // extract sanity check
- BYTE,
+ Y1_Y3_DRIVER.iv_byte,
l_field_bits,
"Failed bounds check for Register Output Driver for clock (Y1,Y3)") );
@@ -269,5 +262,7 @@ fapi_try_exit:
return fapi2::current_err;
}
-}//spd
+}// rdimm
+}// ddr4
+}// spd
}// mss
OpenPOWER on IntegriCloud