summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/spd_accessors/getSpdAttrAccessor.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/hwpf/hwp/spd_accessors/getSpdAttrAccessor.C')
-rw-r--r--src/usr/hwpf/hwp/spd_accessors/getSpdAttrAccessor.C590
1 files changed, 0 insertions, 590 deletions
diff --git a/src/usr/hwpf/hwp/spd_accessors/getSpdAttrAccessor.C b/src/usr/hwpf/hwp/spd_accessors/getSpdAttrAccessor.C
deleted file mode 100644
index 998941e2e..000000000
--- a/src/usr/hwpf/hwp/spd_accessors/getSpdAttrAccessor.C
+++ /dev/null
@@ -1,590 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/usr/hwpf/hwp/spd_accessors/getSpdAttrAccessor.C $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2014 */
-/* [+] 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 */
-// $Id: getSpdAttrAccessor.C,v 1.3 2014/08/05 15:04:52 kahnevan Exp $
-/**
- * @file getSpdAttrAccessor.C
- *
- * @brief Accessor HWP that gets DDR neutral DIMM SPD FAPI Attribute data
- *
- */
-
-#include <stdint.h>
-#include <fapi.H>
-#include <getSpdAttrAccessor.H>
-
-namespace fapi
-{
- namespace getSpdAttr
- {
- enum DdrType
- {
- DDR3 = 1,
- DDR4 = 2,
- };
- }
-}
-
-extern "C"
-{
-
-/**
- * @brief Checks the user's buffer size
- *
- * @param[in] i_attr Attribute ID (just used for tracing)
- * @param[in] i_actualSize Actual buffer size
- * @param[in] i_expectedSize Expected buffer size
- *
- * @return fapi::ReturnCode Indicating success or error
- */
-fapi::ReturnCode checkSize(const fapi::getSpdAttr::Attr i_attr,
- const size_t i_actualSize,
- const size_t i_expectedSize)
-{
- fapi::ReturnCode l_rc;
-
- if (i_actualSize != i_expectedSize)
- {
- FAPI_ERR("getSpdAttrAccessor: Incorrect Attribute output buffer size %d:%zd:%zd",
- i_attr, i_actualSize, i_expectedSize);
- const fapi::getSpdAttr::Attr & ATTR_ID = i_attr;
- const size_t & ACTUAL_SIZE = i_actualSize;
- const size_t & EXPECTED_SIZE = i_expectedSize;
- FAPI_SET_HWP_ERROR(l_rc, RC_GET_SPD_ACCESSOR_INVALID_OUTPUT_SIZE);
- }
-
- return l_rc;
-}
-
-/**
- * @brief Returns the DIMM DDR Type
- *
- * This function only supports DDR3 and DDR4
- *
- * @param[in] i_dimm Reference to DIMM fapi target.
- * @param[out] o_type Filled in with the DIMM DDR Type.
- *
- * @return fapi::ReturnCode Indicating success or error
- */
-fapi::ReturnCode getDdrType(const fapi::Target & i_dimm,
- fapi::ATTR_SPD_DRAM_DEVICE_TYPE_Type & o_type)
-{
- fapi::ReturnCode l_rc = FAPI_ATTR_GET(ATTR_SPD_DRAM_DEVICE_TYPE, &i_dimm,
- o_type);
- if (l_rc)
- {
- FAPI_ERR("getSpdAttrAccessor: Error querying DDR type");
- }
- else if ((o_type != fapi::ENUM_ATTR_SPD_DRAM_DEVICE_TYPE_DDR3) &&
- (o_type != fapi::ENUM_ATTR_SPD_DRAM_DEVICE_TYPE_DDR4))
- {
- FAPI_ERR("getSpdAttrAccessor: Invalid DIMM DDR Type 0x%02x", o_type);
- const fapi::Target & DIMM = i_dimm;
- const fapi::ATTR_SPD_DRAM_DEVICE_TYPE_Type & TYPE = o_type;
- FAPI_SET_HWP_ERROR(l_rc, RC_GET_SPD_ACCESSOR_INVALID_DDR_TYPE);
- }
-
- return l_rc;
-}
-
-/**
- * @brief Returns SPD_SDRAM_BANKS data
- *
- * The raw data has different meanings for DDR3 and DDR4, this HWP translates
- * each to the enumeration in the common FAPI Attribute
- *
- * @param[in] i_dimm Reference to DIMM fapi target
- * @param[in] i_attr The Attribute to get
- * @param[out] o_pVal Pointer to data buffer filled in with attribute data
- * @param[in] i_len Size of o_pVal
- * @param[in] i_type DDR Type
- *
- * @return fapi::ReturnCode Indicating success or error
- */
-fapi::ReturnCode get_SPD_SDRAM_BANKS(const fapi::Target & i_dimm,
- const fapi::getSpdAttr::Attr i_attr,
- void * o_pVal,
- const size_t i_len,
- const fapi::ATTR_SPD_DRAM_DEVICE_TYPE_Type i_type)
-{
- fapi::ATTR_SPD_SDRAM_BANKS_Type & o_val =
- *(reinterpret_cast<fapi::ATTR_SPD_SDRAM_BANKS_Type *>(o_pVal));
- o_val = 0;
-
- fapi::ReturnCode l_rc = checkSize(i_attr, i_len, sizeof(o_val));
-
- if (!l_rc)
- {
- if (i_type == fapi::ENUM_ATTR_SPD_DRAM_DEVICE_TYPE_DDR3)
- {
- fapi::ATTR_SPD_SDRAM_BANKS_DDR3_Type l_banks = 0;
- l_rc = FAPI_ATTR_GET(ATTR_SPD_SDRAM_BANKS_DDR3, &i_dimm, l_banks);
-
- if (l_rc)
- {
- FAPI_ERR("get_SPD_SDRAM_BANKS: Error getting DDR3 attr");
- }
- else
- {
- switch (l_banks)
- {
- case fapi::ENUM_ATTR_SPD_SDRAM_BANKS_DDR3_B8:
- o_val = fapi::ENUM_ATTR_SPD_SDRAM_BANKS_B8;
- break;
- case fapi::ENUM_ATTR_SPD_SDRAM_BANKS_DDR3_B16:
- o_val = fapi::ENUM_ATTR_SPD_SDRAM_BANKS_B16;
- break;
- case fapi::ENUM_ATTR_SPD_SDRAM_BANKS_DDR3_B32:
- o_val = fapi::ENUM_ATTR_SPD_SDRAM_BANKS_B32;
- break;
- case fapi::ENUM_ATTR_SPD_SDRAM_BANKS_DDR3_B64:
- o_val = fapi::ENUM_ATTR_SPD_SDRAM_BANKS_B64;
- break;
- default:
- FAPI_ERR("get_SPD_SDRAM_BANKS: Unrecognized DDR3 attr 0x%x",
- l_banks);
- o_val = fapi::ENUM_ATTR_SPD_SDRAM_BANKS_UNKNOWN;
- }
- }
- }
- else
- {
- fapi::ATTR_SPD_SDRAM_BANKS_DDR4_Type l_banks = 0;
- l_rc = FAPI_ATTR_GET(ATTR_SPD_SDRAM_BANKS_DDR4, &i_dimm, l_banks);
-
- if (l_rc)
- {
- FAPI_ERR("get_SPD_SDRAM_BANKS: Error getting DDR4 attr");
- }
- else
- {
- switch (l_banks)
- {
- case fapi::ENUM_ATTR_SPD_SDRAM_BANKS_DDR4_B4:
- o_val = fapi::ENUM_ATTR_SPD_SDRAM_BANKS_B4;
- break;
- case fapi::ENUM_ATTR_SPD_SDRAM_BANKS_DDR4_B8:
- o_val = fapi::ENUM_ATTR_SPD_SDRAM_BANKS_B8;
- break;
- FAPI_ERR("get_SPD_SDRAM_BANKS: Unrecognized DDR4 attr 0x%x",
- l_banks);
- o_val = fapi::ENUM_ATTR_SPD_SDRAM_BANKS_UNKNOWN;
- }
- }
- }
- }
-
- return l_rc;
-}
-
-/**
- * @brief Returns SPD_MODULE_NOMINAL_VOLTAGE data
- *
- * The raw data has different meanings for DDR3 and DDR4, this HWP translates
- * each to the enumeration in the common FAPI Attribute
- *
- * @param[in] i_dimm Reference to DIMM fapi target
- * @param[in] i_attr The Attribute to get
- * @param[out] o_pVal Pointer to data buffer filled in with attribute data
- * @param[in] i_len Size of o_pVal
- * @param[in] i_type DDR Type
- *
- * @return fapi::ReturnCode Indicating success or error
- */
-fapi::ReturnCode get_SPD_MODULE_NOMINAL_VOLTAGE(const fapi::Target & i_dimm,
- const fapi::getSpdAttr::Attr i_attr,
- void * o_pVal,
- const size_t i_len,
- const fapi::ATTR_SPD_DRAM_DEVICE_TYPE_Type i_type)
-{
- fapi::ATTR_SPD_MODULE_NOMINAL_VOLTAGE_Type & o_val =
- *(reinterpret_cast<fapi::ATTR_SPD_MODULE_NOMINAL_VOLTAGE_Type *>(
- o_pVal));
- o_val = 0;
-
- fapi::ReturnCode l_rc = checkSize(i_attr, i_len, sizeof(o_val));
-
- if (!l_rc)
- {
- if (i_type == fapi::ENUM_ATTR_SPD_DRAM_DEVICE_TYPE_DDR3)
- {
- fapi::ATTR_SPD_MODULE_NOMINAL_VOLTAGE_DDR3_Type l_voltage = 0;
- l_rc = FAPI_ATTR_GET(ATTR_SPD_MODULE_NOMINAL_VOLTAGE_DDR3, &i_dimm,
- l_voltage);
-
- if (l_rc)
- {
- FAPI_ERR("get_SPD_MODULE_NOMINAL_VOLTAGE: Error getting DDR3 attr");
- }
- else
- {
- if (l_voltage &
- fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_DDR3_NOTOP1_5)
- {
- o_val |=
- fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_NOTOP1_5;
- }
- if (l_voltage &
- fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_DDR3_OP1_35)
- {
- o_val |= fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_OP1_35;
- }
- if (l_voltage &
- fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_DDR3_OP1_2X)
- {
- o_val |= fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_OP1_2X;
- }
- }
- }
- else
- {
- fapi::ATTR_SPD_MODULE_NOMINAL_VOLTAGE_DDR4_Type l_voltage = 0;
- l_rc = FAPI_ATTR_GET(ATTR_SPD_MODULE_NOMINAL_VOLTAGE_DDR4, &i_dimm,
- l_voltage);
-
- if (l_rc)
- {
- FAPI_ERR("get_SPD_MODULE_NOMINAL_VOLTAGE: Error getting DDR4 attr");
- }
- else
- {
- if (l_voltage &
- fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_DDR4_OP1_2V)
- {
- o_val |= fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_OP1_2V;
- }
- if (l_voltage &
- fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_DDR4_END1_2V)
- {
- o_val |= fapi::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_END1_2V;
- }
- }
- }
- }
-
- return l_rc;
-}
-
-/**
- * @brief Returns SPD_CAS_LATENCIES_SUPPORTED data
- *
- * The raw data has different meanings for DDR3 and DDR4, this HWP translates
- * each to the enumeration in the common FAPI Attribute
- *
- * @param[in] i_dimm Reference to DIMM fapi target
- * @param[in] i_attr The Attribute to get
- * @param[out] o_pVal Pointer to data buffer filled in with attribute data
- * @param[in] i_len Size of o_pVal
- * @param[in] i_type DDR Type
- *
- * @return fapi::ReturnCode Indicating success or error
- */
-fapi::ReturnCode get_SPD_CAS_LATENCIES_SUPPORTED(const fapi::Target & i_dimm,
- const fapi::getSpdAttr::Attr i_attr,
- void * o_pVal,
- const size_t i_len,
- const fapi::ATTR_SPD_DRAM_DEVICE_TYPE_Type i_type)
-{
- fapi::ATTR_SPD_CAS_LATENCIES_SUPPORTED_Type & o_val =
- *(reinterpret_cast<fapi::ATTR_SPD_CAS_LATENCIES_SUPPORTED_Type *>(
- o_pVal));
- o_val = 0;
-
- fapi::ReturnCode l_rc = checkSize(i_attr, i_len, sizeof(o_val));
-
- if (!l_rc)
- {
- if (i_type == fapi::ENUM_ATTR_SPD_DRAM_DEVICE_TYPE_DDR3)
- {
- fapi::ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_Type cl = 0;
- l_rc = FAPI_ATTR_GET(ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3, &i_dimm,
- cl);
- if (l_rc)
- {
- FAPI_ERR("get_SPD_CAS_LATENCIES_SUPPORTED: Error getting DDR3 attr");
- }
- else
- {
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_4)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_4;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_5)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_5;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_6)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_6;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_7)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_7;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_8)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_8;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_9)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_9;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_10)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_10;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_11)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_11;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_12)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_12;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_13)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_13;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_14)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_14;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_15)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_15;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_16)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_16;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_17)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_17;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR3_CL_18)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_18;
- }
- }
- }
- else
- {
- fapi::ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_Type cl = 0;
- l_rc = FAPI_ATTR_GET(ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4, &i_dimm,
- cl);
- if (l_rc)
- {
- FAPI_ERR("get_SPD_CAS_LATENCIES_SUPPORTED: Error getting DDR4 attr");
- }
- else
- {
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_7)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_7;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_8)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_8;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_9)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_9;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_10)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_10;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_11)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_11;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_12)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_12;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_13)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_13;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_14)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_14;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_15)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_15;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_16)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_16;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_17)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_17;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_18)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_18;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_19)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_19;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_20)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_20;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_21)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_21;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_22)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_22;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_23)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_23;
- }
- if (cl & fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_DDR4_CL_24)
- {
- o_val |= fapi::ENUM_ATTR_SPD_CAS_LATENCIES_SUPPORTED_CL_24;
- }
- }
- }
- }
-
- return l_rc;
-}
-
-/**
- * @brief Returns SPD_MODULE_REVISION_CODE data
- *
- * The fields are different sizes for DDR3 and DDR4, this HWP copies the value
- * to the attribute size in the common FAPI Attribute
- *
- * @param[in] i_dimm Reference to DIMM fapi target
- * @param[in] i_attr The Attribute to get
- * @param[out] o_pVal Pointer to data buffer filled in with attribute data
- * @param[in] i_len Size of o_pVal
- * @param[in] i_type DDR Type
- *
- * @return fapi::ReturnCode Indicating success or error
- */
-fapi::ReturnCode get_SPD_MODULE_REVISION_CODE(const fapi::Target & i_dimm,
- const fapi::getSpdAttr::Attr i_attr,
- void * o_pVal,
- const size_t i_len,
- const fapi::ATTR_SPD_DRAM_DEVICE_TYPE_Type i_type)
-{
- fapi::ATTR_SPD_MODULE_REVISION_CODE_Type & o_val =
- *(reinterpret_cast<fapi::ATTR_SPD_MODULE_REVISION_CODE_Type *>(o_pVal));
- o_val = 0;
-
- fapi::ReturnCode l_rc = checkSize(i_attr, i_len, sizeof(o_val));
-
- if (!l_rc)
- {
- if (i_type == fapi::ENUM_ATTR_SPD_DRAM_DEVICE_TYPE_DDR3)
- {
- // Size of DDR3 data matches DDR neutral attribute (uint32_t)
- l_rc = FAPI_ATTR_GET(ATTR_SPD_MODULE_REVISION_CODE_DDR3, &i_dimm,
- o_val);
-
- if (l_rc)
- {
- FAPI_ERR("get_SPD_MODULE_REVISION_CODE: Error getting DDR3 attr");
- }
- }
- else
- {
- // Size of DDR4 data (uint8_t) is smaller than the DDR neutral
- // attribute (uint32_t)
- fapi::ATTR_SPD_MODULE_REVISION_CODE_DDR4_Type l_code = 0;
- l_rc = FAPI_ATTR_GET(ATTR_SPD_MODULE_REVISION_CODE_DDR4, &i_dimm,
- l_code);
-
- if (l_rc)
- {
- FAPI_ERR("get_SPD_MODULE_NOMINAL_VOLTAGE: Error getting DDR4 attr");
- }
- else
- {
- o_val = static_cast<fapi::ATTR_SPD_MODULE_REVISION_CODE_Type>(
- l_code);
- }
- }
- }
-
- return l_rc;
-}
-
-//-----------------------------------------------------------------------------
-// getSpdAttrAccessor HWP - See header file for details
-//-----------------------------------------------------------------------------
-fapi::ReturnCode getSpdAttrAccessor(const fapi::Target & i_dimm,
- const fapi::getSpdAttr::Attr i_attr,
- void * o_pVal,
- const size_t i_len)
-{
- fapi::ReturnCode l_rc;
-
- fapi::ATTR_SPD_DRAM_DEVICE_TYPE_Type l_type = 0;
- l_rc = getDdrType(i_dimm, l_type);
-
- if (l_rc)
- {
- FAPI_ERR("getSpdAttrAccessor: Error from getDdrType for Attr ID 0x%02x",
- i_attr);
- }
- else
- {
- switch (i_attr)
- {
- case fapi::getSpdAttr::SPD_SDRAM_BANKS:
- l_rc = get_SPD_SDRAM_BANKS(i_dimm, i_attr, o_pVal, i_len, l_type);
- break;
- case fapi::getSpdAttr::SPD_MODULE_NOMINAL_VOLTAGE:
- l_rc = get_SPD_MODULE_NOMINAL_VOLTAGE(i_dimm, i_attr,o_pVal, i_len,
- l_type);
- break;
- case fapi::getSpdAttr::SPD_CAS_LATENCIES_SUPPORTED:
- l_rc = get_SPD_CAS_LATENCIES_SUPPORTED(i_dimm, i_attr, o_pVal,
- i_len, l_type);
- break;
- case fapi::getSpdAttr::SPD_MODULE_REVISION_CODE:
- l_rc = get_SPD_MODULE_REVISION_CODE(i_dimm, i_attr, o_pVal, i_len,
- l_type);
- break;
- default:
- FAPI_ERR("getSpdAttrAccessor: Invalid Attribute ID 0x%02x", i_attr);
- const fapi::getSpdAttr::Attr & ATTR_ID = i_attr;
- FAPI_SET_HWP_ERROR(l_rc, RC_GET_SPD_ACCESSOR_INVALID_ATTRIBUTE_ID);
- }
- }
-
- return l_rc;
-}
-
-}
OpenPOWER on IntegriCloud