diff options
Diffstat (limited to 'src/import/chips/centaur')
-rw-r--r-- | src/import/chips/centaur/procedures/vpd_accessors/getMBvpdDram2NModeEnabled.C | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/import/chips/centaur/procedures/vpd_accessors/getMBvpdDram2NModeEnabled.C b/src/import/chips/centaur/procedures/vpd_accessors/getMBvpdDram2NModeEnabled.C new file mode 100644 index 000000000..c58b38099 --- /dev/null +++ b/src/import/chips/centaur/procedures/vpd_accessors/getMBvpdDram2NModeEnabled.C @@ -0,0 +1,106 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/import/chips/centaur/procedures/vpd_accessors/getMBvpdDram2NModeEnabled.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2017 */ +/* [+] 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 getMBvpdDram2NModeEnabled.C +/// @brief MBVPD Accessor for providing the ATTR_VPD_DRAM_2N_MODE_ENABLED attribute +/// +/// *HWP HWP Owner: Luke Mulkey <lwmulkey@us.ibm.com> +/// *HWP HWP Backup: Andre Marin <aamarin@us.ibm.com> +/// *HWP Team: Memory +/// *HWP Level: 2 +/// *HWP Consumed by: HB + +#include <stdint.h> + +// fapi support +#include <fapi2.H> +#include <getMBvpdDram2NModeEnabled.H> +#include <getMBvpdAttr.H> + +extern "C" +{ + +/// +/// @brief Get the ATTR_DRAM_2N_MODE_ENABLED FAPI attribute +/// +/// Return whether Dram 2N Mode is enabled based on the MR keyword +/// DRAM_2N_MODE value. The DRAM_2N_Mode values for both ports of the mba +/// must be equal, otherwise an error is returned. +/// +/// @param[in] i_mbaTarget - Reference to mba Target +/// @param[out] o_val - ATTR_VPD_DRAM_2N_MODE_ENABLED enumeration value +/// @return fapi::ReturnCode FAPI_RC_SUCCESS if success, else error code +/// + fapi2::ReturnCode getMBvpdDram2NModeEnabled( + const fapi2::Target<fapi2::TARGET_TYPE_MBA>& i_mbaTarget, + uint8_t& o_val) + { + fapi2::ReturnCode l_fapirc; + uint8_t l_dram2NMode [2] = {0, 0}; + const uint8_t DRAM_2N_MODE = 0x02; + + FAPI_DBG("getMBvpdDram2NModeEnabled: entry "); + + // Retrieve the Dram 2N Mode from the MR keyword + FAPI_EXEC_HWP(l_fapirc, + getMBvpdAttr, + i_mbaTarget, + fapi2::ATTR_CEN_VPD_DRAM_2N_MODE_ENABLED, + &l_dram2NMode, + sizeof(l_dram2NMode)); + + if (l_fapirc) + { + FAPI_ERR("getMBvpdDram2NModeEnabled: Read of VZ keyword failed"); + return l_fapirc; // break out with fapirc + } + + // ensure values match + FAPI_ASSERT(l_dram2NMode[0] == l_dram2NMode[1], + fapi2::CEN_MBVPD_DRAM_2N_MODE_NOT_EQUAL(). + set_PORT0(l_dram2NMode[0]). + set_PORT1(l_dram2NMode[1]). + set_MBA_TARGET(i_mbaTarget), + "getMBvpdDram2NModeEnabled:" + " ports should have same value 0x%02x != 0x%02x", + l_dram2NMode[0], l_dram2NMode[1]); + + // return value + if (DRAM_2N_MODE == l_dram2NMode[0] ) + { + o_val = fapi2::ENUM_ATTR_CEN_VPD_DRAM_2N_MODE_ENABLED_TRUE; + } + else + { + o_val = fapi2::ENUM_ATTR_CEN_VPD_DRAM_2N_MODE_ENABLED_FALSE; + } + + FAPI_DBG("getMBvpdDram2NModeEnabled: exit rc=0x%08x)", + static_cast<uint32_t>(l_fapirc)); + + fapi_try_exit: + return fapi2::current_err; + } + +} // extern "C" |