summaryrefslogtreecommitdiffstats
path: root/src/import/generic/memory/lib/spd/ddimm
diff options
context:
space:
mode:
authorAndre Marin <aamarin@us.ibm.com>2019-02-27 13:58:49 -0600
committerChristian R. Geddes <crgeddes@us.ibm.com>2019-03-20 09:36:15 -0500
commite5a493e300da10cd6fe39ecb2e614d63dd11b9fb (patch)
treeb6a1b87872f58946999316a35dd70d604cb00a07 /src/import/generic/memory/lib/spd/ddimm
parent6d28e5b524f23fb473a6eff52b37f08fbafaf641 (diff)
downloadtalos-hostboot-e5a493e300da10cd6fe39ecb2e614d63dd11b9fb.tar.gz
talos-hostboot-e5a493e300da10cd6fe39ecb2e614d63dd11b9fb.zip
Add attribute engine algorithm for eff_config and pre_eff_config
Change-Id: I8498c143109fa1d1a2c9ad5492476e72f51ba509 Original-Change-Id: I2c89e6da17511462afbc661680d19df18a4708f4 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/72962 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Louis Stermole <stermole@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/74689 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/generic/memory/lib/spd/ddimm')
-rw-r--r--src/import/generic/memory/lib/spd/ddimm/ddr4/ddimm_decoder_ddr4.H4
-rw-r--r--src/import/generic/memory/lib/spd/ddimm/ddr4/efd_ddr4_custom_microchip_decoder.H6
-rw-r--r--src/import/generic/memory/lib/spd/ddimm/efd_decoder.H19
-rw-r--r--src/import/generic/memory/lib/spd/ddimm/efd_factory.H8
4 files changed, 27 insertions, 10 deletions
diff --git a/src/import/generic/memory/lib/spd/ddimm/ddr4/ddimm_decoder_ddr4.H b/src/import/generic/memory/lib/spd/ddimm/ddr4/ddimm_decoder_ddr4.H
index 5e736cc76..2d1816ab3 100644
--- a/src/import/generic/memory/lib/spd/ddimm/ddr4/ddimm_decoder_ddr4.H
+++ b/src/import/generic/memory/lib/spd/ddimm/ddr4/ddimm_decoder_ddr4.H
@@ -452,7 +452,7 @@ class decoder<DDR4, DDIMM_MODULE, R > : public dimm_module_decoder
fapi2::buffer<uint16_t> l_buffer;
right_aligned_insert(l_buffer, l_byte1, l_byte0);
o_output = l_buffer;
- FAPI_INF("%s. Register Manufacturer ID Code: 0x%04x",
+ FAPI_INF("%s. Byte enables: 0x%04x",
spd::c_str(iv_target),
o_output);
}
@@ -484,7 +484,7 @@ class decoder<DDR4, DDIMM_MODULE, R > : public dimm_module_decoder
fapi2::buffer<uint32_t> l_buffer;
right_aligned_insert(l_buffer, l_byte3, l_byte2, l_byte1, l_byte0);
o_output = l_buffer;
- FAPI_INF("%s. Register Manufacturer ID Code: 0x%04x",
+ FAPI_INF("%s. Nibble Enables: 0x%04x",
spd::c_str(iv_target),
o_output);
}
diff --git a/src/import/generic/memory/lib/spd/ddimm/ddr4/efd_ddr4_custom_microchip_decoder.H b/src/import/generic/memory/lib/spd/ddimm/ddr4/efd_ddr4_custom_microchip_decoder.H
index 12a292b57..12acc87ef 100644
--- a/src/import/generic/memory/lib/spd/ddimm/ddr4/efd_ddr4_custom_microchip_decoder.H
+++ b/src/import/generic/memory/lib/spd/ddimm/ddr4/efd_ddr4_custom_microchip_decoder.H
@@ -68,10 +68,12 @@ class decoder<mss::spd::device_type::DDR4, DDR4_CUSTOM_MICROCHIP, R > : public b
/// @brief ctor
/// @param[in] i_target dimm target
/// @param[in] i_spd_data vector DIMM SPD data
+ /// @param[in] i_rank the current rank
///
decoder(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
- const std::vector<uint8_t>& i_spd_data):
- base_decoder(i_target, i_spd_data)
+ const std::vector<uint8_t>& i_spd_data,
+ const size_t i_rank):
+ base_decoder(i_target, i_spd_data, i_rank)
{
// Using the emulation value here
static_assert( R <= mss::spd::rev::DDIMM_MAX, " R > rev::DDIMM_MAX");
diff --git a/src/import/generic/memory/lib/spd/ddimm/efd_decoder.H b/src/import/generic/memory/lib/spd/ddimm/efd_decoder.H
index d3078c171..6ac30ab0f 100644
--- a/src/import/generic/memory/lib/spd/ddimm/efd_decoder.H
+++ b/src/import/generic/memory/lib/spd/ddimm/efd_decoder.H
@@ -86,6 +86,7 @@ class base_decoder
const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> iv_target;
std::vector<uint8_t> iv_data;
+ size_t iv_rank;
public:
@@ -98,11 +99,14 @@ class base_decoder
/// @brief ctor
/// @param[in] i_target DIMM target on which to operate
/// @param[in] i_target EFD data
+ /// @param[in] i_rank the current rank
///
base_decoder(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
- const std::vector<uint8_t>& i_data):
+ const std::vector<uint8_t>& i_data,
+ const size_t i_rank):
iv_target(i_target),
- iv_data(i_data)
+ iv_data(i_data),
+ iv_rank(i_rank)
{
}
@@ -115,12 +119,21 @@ class base_decoder
/// @brief Gets decoder target
/// @return fapi2::Target<fapi2::TARGET_TYPE_DIMM>
///
- virtual fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> get_dimm_target() const
+ virtual fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> get_ocmb_target() const
{
return iv_target;
}
///
+ /// @brief Gets rank tied to this decoder
+ /// @return size_t
+ ///
+ virtual size_t get_rank() const
+ {
+ return iv_rank;
+ }
+
+ ///
/// @brief Gets decoder SPD data
/// @return std::vector<uint8_t>
///
diff --git a/src/import/generic/memory/lib/spd/ddimm/efd_factory.H b/src/import/generic/memory/lib/spd/ddimm/efd_factory.H
index 6a85c86f8..540bb87b0 100644
--- a/src/import/generic/memory/lib/spd/ddimm/efd_factory.H
+++ b/src/import/generic/memory/lib/spd/ddimm/efd_factory.H
@@ -48,17 +48,19 @@ namespace efd
/// @brief Generates the EFD decoder based upon the EFD type
/// @param[in] i_target DIMM target
/// @param[in] i_data SPD data
+/// @param[in] i_rank the current rank
/// @param[out] o_decoder shared pointer to the decoder in question
/// @return fapi2::ReturnCode SUCCESS iff the procedure executes successfully
///
// TODO:update this for other types of EFD
inline fapi2::ReturnCode factory(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target,
const std::vector<uint8_t>& i_data,
+ const size_t i_rank,
std::shared_ptr<base_decoder>& o_decoder_ptr)
{
- o_decoder_ptr =
- std::make_shared<mss::efd::decoder<mss::spd::device_type::DDR4, DDR4_CUSTOM_MICROCHIP, mss::spd::rev::V0_0>>(i_target,
- i_data);
+ o_decoder_ptr = std::make_shared<mss::efd::decoder<mss::spd::device_type::DDR4,
+ DDR4_CUSTOM_MICROCHIP,
+ mss::spd::rev::V0_0>>(i_target, i_data, i_rank);
return fapi2::FAPI2_RC_SUCCESS;
}
OpenPOWER on IntegriCloud