summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/memory/lib/phy
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/phy')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.C43
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_lrdimm_training.H64
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/phy/mss_training.C15
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>())
{
OpenPOWER on IntegriCloud