diff options
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/dimm')
-rwxr-xr-x | src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C | 25 | ||||
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H | 23 |
2 files changed, 46 insertions, 2 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C index 4181e791e..1968516fc 100755 --- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C @@ -4578,7 +4578,30 @@ fapi_try_exit: return fapi2::current_err; } -// TK:LRDIMM Update and/or verify all bc## steps below +/// +/// @brief Sets the LRDIMM training pattern +/// @return fapi2::FAPI2_RC_SUCCESS if okay +/// +fapi2::ReturnCode eff_lrdimm::lrdimm_training_pattern() +{ + // Default patterns are taken from experiments + // Patterns were selected for having a good balance of transitions + // We need the temporary variable due to how FAPI_ATTR_SET works + uint8_t l_default_patterns[NUM_LRDIMM_TRAINING_PATTERNS] = + { + 0x2b, + 0x3c, + 0x96, + 0x35, + 0x6a, + }; + + FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_LRDIMM_TRAINING_PATTERN, iv_mcs, l_default_patterns) ); + +fapi_try_exit: + return fapi2::current_err; +} + /// /// @brief Determines & sets effective config for DIMM BC00 /// @return fapi2::FAPI2_RC_SUCCESS if okay diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H index 693e14a8b..656a061c5 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2018 */ +/* Contributors Listed Below - COPYRIGHT 2016,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -873,6 +873,12 @@ class eff_dimm virtual fapi2::ReturnCode dram_rtt_park() = 0; /// + /// @brief Sets the LRDIMM training pattern + /// @return fapi2::FAPI2_RC_SUCCESS if okay + /// + virtual fapi2::ReturnCode lrdimm_training_pattern() = 0; + + /// /// @brief Determines and sets DIMM BC00 /// @return fapi2::FAPI2_RC_SUCCESS if okay /// @@ -1123,6 +1129,12 @@ class eff_lrdimm : public eff_dimm virtual fapi2::ReturnCode dram_odic() final; /// + /// @brief Sets the LRDIMM training pattern + /// @return fapi2::FAPI2_RC_SUCCESS if okay + /// + virtual fapi2::ReturnCode lrdimm_training_pattern() final; + + /// /// @brief Determines and sets DIMM BC00 /// @return fapi2::FAPI2_RC_SUCCESS if okay /// @@ -1437,6 +1449,15 @@ class eff_rdimm : public eff_dimm virtual fapi2::ReturnCode dram_odic() final; /// + /// @brief Sets the LRDIMM training pattern + /// @return fapi2::FAPI2_RC_SUCCESS if okay + /// + fapi2::ReturnCode lrdimm_training_pattern() + { + return fapi2::FAPI2_RC_SUCCESS; + } + + /// /// @brief Determines and sets DIMM BC00 /// @return fapi2::FAPI2_RC_SUCCESS if okay /// |