summaryrefslogtreecommitdiffstats
path: root/src/include/usr/hwpf
diff options
context:
space:
mode:
authorBill Schwartz <whs@us.ibm.com>2013-05-22 16:43:00 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-06-11 09:35:47 -0500
commit0e4d11615a5808b534ad7d0bbec53294c3f9f9f9 (patch)
treea7c4340225c41ae450b78df7e97ea4999b0ead18 /src/include/usr/hwpf
parent7ec31b5e01276eaf5cf765e6d33936e81b648fbb (diff)
downloadblackbird-hostboot-0e4d11615a5808b534ad7d0bbec53294c3f9f9f9.tar.gz
blackbird-hostboot-0e4d11615a5808b534ad7d0bbec53294c3f9f9f9.zip
Retrieve attributes from VSPD MT Centaur VPD fields
Create a HWP accessor to retrieve Termination Data attributes from cvpd record VSPD keyword MT. Change-Id: I1277ceb22345bfef9d743bfef5c3ff81f36b34c4 RTC: 50574 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4661 Tested-by: Jenkins Server Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/usr/hwpf')
-rw-r--r--src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.H190
-rw-r--r--src/include/usr/hwpf/plat/fapiPlatAttributeService.H187
2 files changed, 376 insertions, 1 deletions
diff --git a/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.H b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.H
new file mode 100644
index 000000000..57a6f111f
--- /dev/null
+++ b/src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.H
@@ -0,0 +1,190 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/hwpf/hwp/mvpd_accessors/getMBvpdTermData.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
+// $Id: getMBvpdTermData.H,v 1.1 2013/05/28 11:17:29 whs Exp $
+
+/**
+ * @file getMBvpdTermData.H
+ *
+ * @brief Prototype for getMBvpdTermData() -
+ * get Termination Data from MBvpd
+ */
+
+#ifndef _HWP_MBVPDTERMDATA_
+#define _HWP_MBVPDTERMDATA_
+
+#include <fapi.H>
+
+namespace fapi
+{
+
+// Values match offset into MT keyword cvpd data
+// There are multiple types of output values. The type is shown in the comment
+ enum MBvpdTermData
+ {
+ TERM_DATA_DRAM_RON = 0x00, //uint8_t [2][2]
+ TERM_DATA_DRAM_RTT_NOM = 0x02, //uint8_t [2][2][4]
+ TERM_DATA_DRAM_RTT_WR = 0x0a, //uint8_t [2][2][4]
+ TERM_DATA_ODT_RD = 0x12, //uint8_t [2][2][4]
+ TERM_DATA_ODT_WR = 0x1a, //uint8_t [2][2][4]
+ TERM_DATA_CEN_RD_VREF = 0x22, //uint32_t [2]
+ TERM_DATA_DRAM_WR_VREF = 0x26, //uint32_t [2]
+ TERM_DATA_DRAM_WRDDR4_VREF = 0x2a, //uint8_t [2]
+ TERM_DATA_CEN_RCV_IMP_DQ_DQS = 0x2b, //uint8_t [2]
+ TERM_DATA_CEN_DRV_IMP_DQ_DQS = 0x2c, //uint8_t [2]
+ TERM_DATA_CEN_DRV_IMP_CNTL = 0x2d, //uint8_t [2]
+ TERM_DATA_CEN_DRV_IMP_ADDR = 0x2e, //uint8_t [2]
+ TERM_DATA_CEN_DRV_IMP_CLK = 0x2f, //uint8_t [2]
+ TERM_DATA_CEN_DRV_IMP_SPCKE = 0x30, //uint8_t [2]
+ TERM_DATA_CEN_SLEW_RATE_DQ_DQS = 0x31, //uint8_t [2]
+ TERM_DATA_CEN_SLEW_RATE_CNTL = 0x32, //uint8_t [2]
+ TERM_DATA_CEN_SLEW_RATE_ADDR = 0x33, //uint8_t [2]
+ TERM_DATA_CEN_SLEW_RATE_CLK = 0x34, //uint8_t [2]
+ TERM_DATA_CEN_SLEW_RATE_SPCKE = 0x35, //uint8_t [2]
+// The max value is 0x3e. The MT keyword is 255 bytes divided into four
+// 64 byte sections, but the last one is 1 byte short. There is only room for
+// 63 bytes of attributes per section.
+ };
+}
+
+// Template class that is specialized for each attribute specifying it's type
+template<const fapi::MBvpdTermData A>
+ class MBvpdTermDataSize { };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_DRAM_RON>
+ { public: typedef uint8_t Type[2][2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_DRAM_RTT_NOM>
+ { public: typedef uint8_t Type[2][2][4]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_DRAM_RTT_WR>
+ { public: typedef uint8_t Type[2][2][4]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_ODT_RD>
+ { public: typedef uint8_t Type[2][2][4]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_ODT_WR>
+ { public: typedef uint8_t Type[2][2][4]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_RD_VREF>
+ { public: typedef uint32_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_DRAM_WR_VREF>
+ { public: typedef uint32_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_DRAM_WRDDR4_VREF>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_RCV_IMP_DQ_DQS>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_DRV_IMP_DQ_DQS>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_DRV_IMP_CNTL>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_DRV_IMP_ADDR>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_DRV_IMP_CLK>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_DRV_IMP_SPCKE>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_SLEW_RATE_DQ_DQS>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_SLEW_RATE_CNTL>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_SLEW_RATE_ADDR>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_SLEW_RATE_CLK>
+ { public: typedef uint8_t Type[2]; };
+template<>class MBvpdTermDataSize<fapi::TERM_DATA_CEN_SLEW_RATE_SPCKE>
+ { public: typedef uint8_t Type[2]; };
+
+// Template function that checks that the type is as expected.
+// This can be optionally called before calling the main HWP in order
+// to check for the expected type at compile-time.
+template<const fapi::MBvpdTermData ATTR>
+ inline void checkTermDataType
+ (typename MBvpdTermDataSize<ATTR>::Type &) {}
+/* example
+#define ATTR_EFF_DRAM_RON_GETMACRO(ID, PTARGET, VAL)\
+ (checkTermDataType<fapi::TERM_DATA_DRAM_RON>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_DRAM_RON , VAL, sizeof(VAL)))
+*/
+// The complilation will fail unless the output variable matches the type
+// in the per attribute template specialization. The error messages will
+// include text related to template MBvpdTermDataSize not be able to convert
+// the incorrect output variable's type to the expected type.
+//
+// There will be an additonal error from the general attribute compliation
+// checks related to fapiCheckIdType if the output type does not match
+// any of the expected types
+//
+// The inline function checkTermData will be optimized out by the compiler.
+
+// function pointer typedef definition for HWP call support
+typedef fapi::ReturnCode (*getMBvpdTermData_FP_t)
+ (const fapi::Target &, const fapi::MBvpdTermData,
+ void *, const uint32_t);
+
+extern "C"
+{
+/**
+ * @brief get Termination Data from cvpd record VSPD keyword MT
+ *
+ * The Termination Data attributes are retrieved from cvpd record VSPD
+ * keyword MT.
+ * There are two mba per memory buffer: position 0 and position 1.
+ * There are two ports for each mba. There are 4 sets of Termination
+ * Data attributes.
+ *
+ * cpvd record VSPD keyword MT
+ * -----------------------------------
+ * | mba position 0 |
+ * | ----------------------------- |
+ * | | port 0 (Port A) 64 bytes | |
+ * | |---------------------------| |
+ * | | port 1 (Port B) 64 bytes | |
+ * | ----------------------------- |
+ * |---------------------------------|
+ * | mba postion 1 |
+ * | ----------------------------- |
+ * | | port 0 (Port C) 64 bytes | |
+ * | |---------------------------| |
+ * | | port 1 (Port D) 63 bytes | |
+ * | ----------------------------- |
+ * -----------------------------------
+ *
+ * The Termination Data attributes have multiple types. The output value
+ * is a general void * to handle the multiple attributes types. The expected
+ * output variable type is shown in the attribute enumeration comment and in
+ * the MBvpdTermDataSize template.
+ * An error will be returned if output size does not match the size of the
+ * expected output type's size.
+ *
+ * @param[in] i_mbaTarget - mba target
+ * @param[in] i_attr - Termination Data attribute enumerator
+ * @param[out] o_pVal - pointer to variable typed output variable
+ * @param[in] i_valSize - size of output variable
+ *
+ * @return fapi::ReturnCode - FAPI_RC_SUCCESS if success,
+ * relevant error code for failure.
+ */
+fapi::ReturnCode getMBvpdTermData(
+ const fapi::Target &i_mbaTarget,
+ const fapi::MBvpdTermData i_attr,
+ void * o_pVal,
+ const uint32_t i_valSize);
+
+}
+
+#endif
diff --git a/src/include/usr/hwpf/plat/fapiPlatAttributeService.H b/src/include/usr/hwpf/plat/fapiPlatAttributeService.H
index 0d423acdf..c45250917 100644
--- a/src/include/usr/hwpf/plat/fapiPlatAttributeService.H
+++ b/src/include/usr/hwpf/plat/fapiPlatAttributeService.H
@@ -55,6 +55,7 @@
#include <hwpf/plat/fapiPlatAttrOverrideSync.H>
#include <hwpf/hwp/mvpd_accessors/getMBvpdPhaseRotatorData.H>
#include <hwpf/hwp/mvpd_accessors/getMBvpdAddrMirrorData.H>
+#include <hwpf/hwp/mvpd_accessors/getMBvpdTermData.H>
#include <vpd/spdenums.H>
#include <dimmConsts.H>
#include <util/singleton.H>
@@ -453,6 +454,7 @@ fapi::ReturnCode fapiPlatGetPhaseRotatorData (
const fapi::Target * i_pTarget,
const fapi::MBvpdPhaseRotatorData i_attr,
uint8_t (&o_val) [2] );
+
/**
* @brief This function is called by the FAPI_ATTR_GET macro when getting
* the Address Mirroring Data attributes
@@ -466,7 +468,22 @@ fapi::ReturnCode fapiPlatGetAddrMirrorData (
const fapi::Target * i_pTarget,
uint8_t &o_val);
-
+/**
+ * @brief This function is called by the FAPI_ATTR_GET macro when getting
+ * the Termination Data attributes
+ * It should not be called directly.
+ *
+ * @param[in] i_pTarget Target pointer
+ * @param i_attr Termination Data attribute enumerator
+ * @param o_pVal Pointer to variable typed output values
+ * @param i_valSize Size of output variable
+ * @return ReturnCode. Zero on success, else platform specified error
+ */
+fapi::ReturnCode fapiPlatGetTermData (
+ const fapi::Target * i_pTarget,
+ const fapi::MBvpdTermData i_attr,
+ void * o_pVal,
+ const uint32_t i_valSize);
} // namespace platAttrSvc
} // namespace fapi
@@ -774,6 +791,8 @@ fapi::ReturnCode fapiPlatGetAddrMirrorData (
// MACROS to support MVPD attributes
//------------------------------------------------------------------------------
#define ATTR_EX_L2_SINGLE_MEMBER_ENABLE_GETMACRO( ID, PTARGET, VAL ) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
fapi::platAttrSvc::fapiPlatGetSingleMemberEnableAttr ( PTARGET, VAL )
// TODO: RTC 69935 complete Phase Rotator Data.
@@ -1086,4 +1105,170 @@ fapi::ReturnCode fapiPlatGetAddrMirrorData (
fapi::FAPI_RC_SUCCESS : fapi::platAttrSvc::fapiPlatGetAddrMirrorData\
(PTARGET, VAL)
+//------------------------------------------------------------------------------
+// MACROS to support MBVPD Termination Data attributes
+//------------------------------------------------------------------------------
+// TODO: RTC 69935 complete Termination Data.
+// Use this code to fully implements 50574.
+// Remove Termination Data attributes from attribute_types.xml
+// and target_types.xml then enable the following.
+// The "sets" are only needed to temporarily allow mss_eff_config_termination.C
+// to do FAPI_ATTR_SET, but need to be removed when fully complete.
+#if RTC69935
+#define ATTR_EFF_DRAM_RON_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_DRAM_RON>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_DRAM_RON , VAL, sizeof(VAL)))
+#define ATTR_EFF_DRAM_RTT_NOM_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_DRAM_RTT_NOM>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_DRAM_RTT_NOM , VAL, sizeof(VAL)))
+#define ATTR_EFF_DRAM_RTT_WR_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_DRAM_RTT_WR>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_DRAM_RTT_WR , VAL, sizeof(VAL)))
+#define ATTR_EFF_ODT_RD_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_ODT_RD>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_ODT_RD , VAL, sizeof(VAL)))
+#define ATTR_EFF_ODT_WR_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_ODT_WR>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_ODT_WR , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_RD_VREF_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_RD_VREF>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_RD_VREF , VAL, sizeof(VAL)))
+#define ATTR_EFF_DRAM_WR_VREF_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_DRAM_WR_VREF>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_DRAM_WR_VREF , VAL, sizeof(VAL)))
+#define ATTR_EFF_DRAM_WRDDR4_VREF_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_DRAM_WRDDR4_VREF>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_DRAM_WRDDR4_VREF , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_RCV_IMP_DQ_DQS_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_RCV_IMP_DQ_DQS>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_RCV_IMP_DQ_DQS , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_DRV_IMP_DQ_DQS_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_DRV_IMP_DQ_DQS>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_DRV_IMP_DQ_DQS , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_DRV_IMP_CNTL_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_DRV_IMP_CNTL>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_DRV_IMP_CNTL , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_DRV_IMP_ADDR_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_DRV_IMP_ADDR>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_DRV_IMP_ADDR , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_DRV_IMP_CLK_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_DRV_IMP_CLK>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_DRV_IMP_CLK , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_DRV_IMP_SPCKE_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_DRV_IMP_SPCKE>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_DRV_IMP_SPCKE , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_SLEW_RATE_DQ_DQS_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_SLEW_RATE_DQ_DQS>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_SLEW_RATE_DQ_DQS , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_SLEW_RATE_CNTL_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_SLEW_RATE_CNTL>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_SLEW_RATE_CNTL , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_SLEW_RATE_ADDR_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_SLEW_RATE_ADDR>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_SLEW_RATE_ADDR , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_SLEW_RATE_CLK_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_SLEW_RATE_CLK>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_SLEW_RATE_CLK , VAL, sizeof(VAL)))
+#define ATTR_EFF_CEN_SLEW_RATE_SPCKE_GETMACRO(ID, PTARGET, VAL)\
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ (checkTermDataType<fapi::TERM_DATA_CEN_SLEW_RATE_SPCKE>(VAL), \
+ fapi::platAttrSvc::fapiPlatGetTermData\
+ (PTARGET, fapi::TERM_DATA_CEN_SLEW_RATE_SPCKE , VAL, sizeof(VAL)))
+
+#define ATTR_EFF_DRAM_RON_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_DRAM_RTT_NOM_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_DRAM_RTT_WR_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_ODT_RD_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_ODT_WR_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_RD_VREF_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_DRAM_WR_VREF_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_DRAM_WRDDR4_VREF_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_RCV_IMP_DQ_DQS_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_DRV_IMP_DQ_DQS_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_DRV_IMP_CNTL_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_DRV_IMP_ADDR_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_DRV_IMP_CLK_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_DRV_IMP_SPCKE_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_SLEW_RATE_DQ_DQS_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_SLEW_RATE_CNTL_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_SLEW_RATE_ADDR_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_SLEW_RATE_CLK_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#define ATTR_EFF_CEN_SLEW_RATE_SPCKE_SETMACRO(ID, PTARGET, VAL)\
+ fapi::FAPI_RC_SUCCESS
+#endif
+
+
#endif // FAPIPLATATTRIBUTESERVICE_H_
OpenPOWER on IntegriCloud