diff options
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/phy')
3 files changed, 30 insertions, 92 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C b/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C index 5e127efcb..a9fed2834 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C @@ -48,6 +48,8 @@ #include <lib/ccs/ccs.H> #include <lib/mc/port.H> #include <lib/rosetta_map/rosetta_map.H> +#include <lib/workarounds/ccs_workarounds.H> +#include <lib/dimm/ddr4/pba.H> namespace mss { @@ -57,7 +59,6 @@ namespace training namespace lrdimm { - /// /// @brief Swizzles a DQ from the MC perspective to the DIMM perspective /// @param[in] i_target the MCA target on which to operate @@ -244,7 +245,7 @@ fapi_try_exit: /// @param[in] i_target - the MCA target on which to operate /// @return fapi2::ReturnCode fapi2::FAPI2_RC_SUCCESS if ok /// -fapi2::ReturnCode mrep::execute_nttm_mode_read(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target) const +fapi2::ReturnCode execute_nttm_mode_read(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target) { mss::ccs::program<fapi2::TARGET_TYPE_MCBIST> l_program; const auto& l_mcbist = mss::find_target<fapi2::TARGET_TYPE_MCBIST>(i_target); @@ -694,44 +695,6 @@ uint64_t mrep::calculate_cycles( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_ /// @param[in] i_abort_on_error - whether or not we are aborting on cal error /// @return fapi2::ReturnCode fapi2::FAPI2_RC_SUCCESS iff ok /// -fapi2::ReturnCode dwl::run( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, - const uint64_t i_rp, - const uint8_t i_abort_on_error ) const -{ - return fapi2::FAPI2_RC_SUCCESS; -} - -/// -/// @brief Executes a cal step with workarounds -/// @param[in] i_target - the MCA target on which to operate -/// @param[in] i_rp - the rank pair -/// @param[in] i_abort_on_error - whether or not we are aborting on cal error -/// @return fapi2::ReturnCode fapi2::FAPI2_RC_SUCCESS iff ok -/// -fapi2::ReturnCode dwl::execute( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, - const uint64_t i_rp, - const uint8_t i_abort_on_error ) const -{ - return fapi2::FAPI2_RC_SUCCESS; -} - -/// -/// @brief Calculates the number of cycles a given calibration step will take -/// @param[in] i_target - the MCA target on which to operate -/// @return l_cycles - the number of cycles a given calibration step wil take -/// -uint64_t dwl::calculate_cycles( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target ) const -{ - return 0; -} - -/// -/// @brief Sets up and runs the calibration step -/// @param[in] i_target - the MCA target on which to operate -/// @param[in] i_rp - the rank pair -/// @param[in] i_abort_on_error - whether or not we are aborting on cal error -/// @return fapi2::ReturnCode fapi2::FAPI2_RC_SUCCESS iff ok -/// fapi2::ReturnCode mrd::run( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, const uint64_t i_rp, const uint8_t i_abort_on_error ) const diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.H b/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.H index 7805a95d5..fafb498ae 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.H @@ -51,6 +51,11 @@ #include <lib/workarounds/ccs_workarounds.H> #include <lib/rosetta_map/rosetta_map.H> +// Disables LRDIMM support for HB +#ifndef __HOSTBOOT_MODULE + #define LRDIMM_CAPABLE 1 +#endif + namespace mss { @@ -464,13 +469,6 @@ class mrep : public step mss::ddr4::pba::commands& o_container) const; /// - ///// @brief Does a CCS NTTM mode read - ///// @param[in] i_target - the MCA target on which to operate - ///// @return fapi2::ReturnCode fapi2::FAPI2_RC_SUCCESS if ok - ///// - fapi2::ReturnCode execute_nttm_mode_read(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target) const; - - /// /// @brief analyze with each nibble /// @param[in] i_target the MCA target /// @param[in] i_result_nibble the result need to analyze @@ -610,51 +608,6 @@ class mrep : public step }; /// -/// @brief DWL training step -/// -class dwl : public step -{ - public: - dwl() : - step("DWL") - {} - - /// - /// @brief Default virtual destructor - /// - ~dwl() = default; - - /// - /// @brief Sets up and runs the calibration step - /// @param[in] i_target - the MCA target on which to operate - /// @param[in] i_rp - the rank pair - /// @param[in] i_abort_on_error - whether or not we are aborting on cal error - /// @return fapi2::ReturnCode fapi2::FAPI2_RC_SUCCESS iff ok - /// - fapi2::ReturnCode run( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, - const uint64_t i_rp, - const uint8_t i_abort_on_error ) const; - - /// - /// @brief Executes a cal step with workarounds - /// @param[in] i_target - the MCA target on which to operate - /// @param[in] i_rp - the rank pair - /// @param[in] i_abort_on_error - whether or not we are aborting on cal error - /// @return fapi2::ReturnCode fapi2::FAPI2_RC_SUCCESS iff ok - /// - fapi2::ReturnCode execute( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, - const uint64_t i_rp, - const uint8_t i_abort_on_error ) const; - - /// - /// @brief Calculates the number of cycles a given calibration step will take - /// @param[in] i_target - the MCA target on which to operate - /// @return l_cycles - the number of cycles a given calibration step wil take - /// - uint64_t calculate_cycles( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target ) const; -}; - -/// /// @brief MPR training step /// class mrd : public step @@ -833,6 +786,13 @@ void deconfigure_steps(const uint8_t i_dimm_type, const bool i_sim, fapi2::buffer<uint32_t>& io_cal_steps); +/// +/// @brief Does a CCS NTTM mode read +/// @param[in] i_target - the MCA target on which to operate +/// @return fapi2::ReturnCode fapi2::FAPI2_RC_SUCCESS if ok +/// +fapi2::ReturnCode execute_nttm_mode_read(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target); + } // ns training } // ns lrdimm diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_training.C b/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_training.C index d6e9d06ec..14e3c1780 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_training.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_training.C @@ -59,6 +59,10 @@ #include <lib/phy/seq.H> #include <lib/phy/read_cntrl.H> +#ifdef LRDIMM_CAPABLE + #include <lib/phy/mss_dwl.H> +#endif + namespace mss { @@ -1221,6 +1225,17 @@ std::vector<std::shared_ptr<step>> steps_factory(const fapi2::buffer<uint32_t>& l_steps.push_back(std::make_shared<mss::training::lrdimm::mrep>()); } +#ifdef LRDIMM_CAPABLE + + // DWL + if(i_cal_steps.getBit<mss::cal_steps::DWL>()) + { + FAPI_INF("LRDIMM: DWL is enabled"); + l_steps.push_back(std::make_shared<mss::training::lrdimm::dwl>()); + } + +#endif + // WR LVL if(i_cal_steps.getBit<mss::cal_steps::WR_LEVEL>()) { |