diff options
| author | Andre Marin <aamarin@us.ibm.com> | 2019-02-27 13:58:49 -0600 |
|---|---|---|
| committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2019-03-20 09:36:15 -0500 |
| commit | e5a493e300da10cd6fe39ecb2e614d63dd11b9fb (patch) | |
| tree | b6a1b87872f58946999316a35dd70d604cb00a07 /src/import/generic/memory/lib/spd/ddimm | |
| parent | 6d28e5b524f23fb473a6eff52b37f08fbafaf641 (diff) | |
| download | talos-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')
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; } |

