diff options
| author | Bill Schwartz <whs@us.ibm.com> | 2013-05-22 16:43:00 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-06-11 09:35:47 -0500 |
| commit | 0e4d11615a5808b534ad7d0bbec53294c3f9f9f9 (patch) | |
| tree | a7c4340225c41ae450b78df7e97ea4999b0ead18 /src/include/usr/hwpf | |
| parent | 7ec31b5e01276eaf5cf765e6d33936e81b648fbb (diff) | |
| download | blackbird-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.H | 190 | ||||
| -rw-r--r-- | src/include/usr/hwpf/plat/fapiPlatAttributeService.H | 187 |
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_ |

