/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* $Source: src/import/chips/p9/procedures/hwp/memory/lib/workarounds/wr_vref_workarounds.H $ */ /* */ /* OpenPOWER HostBoot Project */ /* */ /* Contributors Listed Below - COPYRIGHT 2016,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ /* You may obtain a copy of the License at */ /* */ /* http://www.apache.org/licenses/LICENSE-2.0 */ /* */ /* Unless required by applicable law or agreed to in writing, software */ /* distributed under the License is distributed on an "AS IS" BASIS, */ /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ /* implied. See the License for the specific language governing */ /* permissions and limitations under the License. */ /* */ /* IBM_PROLOG_END_TAG */ /// /// @file wr_vref_workarounds.H /// @brief Workarounds for the WR VREF calibration logic /// Workarounds are very device specific, so there is no attempt to generalize /// this code in any way. /// // *HWP HWP Owner: Stephen Glancy // *HWP HWP Backup: Andre Marin // *HWP Team: Memory // *HWP Level: 3 // *HWP Consumed by: FSP:HB #ifndef _MSS_WORKAROUNDS_WR_VREF_H_ #define _MSS_WORKAROUNDS_WR_VREF_H_ #include namespace mss { namespace workarounds { namespace wr_vref { /// /// @brief Executes WR VREF workarounds /// @param[in] i_target the fapi2 target of the port /// @param[in] i_rp - the rank pair to execute the override on /// @param[in] i_wr_vref_enabled - true if WR VREF is enabled /// @param[out] o_vrefdq_train_range - training range value /// @param[out] o_vrefdq_train_value - training value value /// @return fapi2::ReturnCode FAPI2_RC_SUCCESS if ok /// // TODO RTC:166422 update training code to set cal step enable and consume it everywhere locally fapi2::ReturnCode execute( const fapi2::Target& i_target, const uint64_t i_rp, const bool i_wr_vref_enabled, uint8_t& o_vrefdq_train_range, uint8_t& o_vrefdq_train_value ); /// /// @brief Executes the nvdimm workaround /// @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 nvdimm_workaround( const fapi2::Target& i_target, const uint64_t i_rp, const uint8_t i_abort_on_error ); } // close namespace wr_vref } // close namespace workarounds } // close namespace mss #endif