diff options
author | Bill Schwartz <whs@us.ibm.com> | 2013-11-15 17:23:29 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-12-09 12:07:20 -0600 |
commit | 5ec9d6332a0b9c91b133690ab356dc4052a5e291 (patch) | |
tree | 19e95ce95b075f371bbbdc79abca6571351fa962 /src/usr/hwpf/test/hwpMBvpdAccessorTest.H | |
parent | 8419ba440403c1b02b74ad89a91fccd85fa45ea9 (diff) | |
download | talos-hostboot-5ec9d6332a0b9c91b133690ab356dc4052a5e291.tar.gz talos-hostboot-5ec9d6332a0b9c91b133690ab356dc4052a5e291.zip |
Route ATTR_L4_BANK_DELETE_VPD to C-VPD
Create MBvpd accessor to access cvpd record VSPD keyword MX for get and set
for attribute ATTR_L4_BANK_DELETE_VPD.
Split and rename fapiwinkle test since its all hwp mvpd & mbvpd accessor tests
Change-Id: I3bae2e89b2ef7fd30a88c269d42223c00333bb72
RTC: 91431
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7278
Tested-by: Jenkins Server
Reviewed-by: Brian H. Horton <brianh@linux.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/test/hwpMBvpdAccessorTest.H')
-rw-r--r-- | src/usr/hwpf/test/hwpMBvpdAccessorTest.H | 1656 |
1 files changed, 1656 insertions, 0 deletions
diff --git a/src/usr/hwpf/test/hwpMBvpdAccessorTest.H b/src/usr/hwpf/test/hwpMBvpdAccessorTest.H new file mode 100644 index 000000000..eb0d54f64 --- /dev/null +++ b/src/usr/hwpf/test/hwpMBvpdAccessorTest.H @@ -0,0 +1,1656 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/hwpf/test/hwpmbvpdaccessortest.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 */ + +#ifndef __HWPMBVPDACCESSORTEST_H +#define __HWPMBVPDACCESSORTEST_H + +// set to 1 for doing unit tests, set to 0 for production +#define HWPMBVPDACCESSORTEST_UT0 0 // 0 = just one chip, 1 = all +#define HWPMBVPDACCESSORTEST_UT1 0 // 0 = the last keword added, 1 = all & dump +#define HWPMBVPDACCESSORTEST_UT2 0 // 0 = min slope intercept tests +#define HWPMBVPDACCESSORTEST_UT3 0 // 0 = min L4 Bank Delete tests +#define HWPMBVPDACCESSORTEST_UT4 0 // 0 = min term data tests +#define HWPMBVPDACCESSORTEST_UT5 0 // 0 = min phase rotator data tests +#define HWPMBVPDACCESSORTEST_UT6 0 // 0 = include those moved in v5.3 redefine +#define HWPMBVPDACCESSORTEST_UT7 0 // 0 = min sensor map tests + +/** + * @file hwpmbvpdaccessortest.H + * + * @brief Test cases for MBvpd HWP accessors. +*/ + +#include <cxxtest/TestSuite.H> + +#include <fapi.H> +#include <fapiPlatHwpInvoker.H> + +#include <targeting/common/commontargeting.H> +#include <targeting/common/utilFilter.H> + +#include <setMvpdRing.H> +#include <mvpd_accessors/getMBvpdPhaseRotatorData.H> +#include <mvpd_accessors/getMBvpdAddrMirrorData.H> +#include <mvpd_accessors/getMBvpdTermData.H> +#include <mvpd_accessors/getMBvpdSlopeInterceptData.H> +#include <mvpd_accessors/getMBvpdVersion.H> +#include <mvpd_accessors/getMBvpdDram2NModeEnabled.H> +#include <mvpd_accessors/getMBvpdSensorMap.H> +#include <mvpd_accessors/accessMBvpdL4BankDelete.H> + +#include <errl/errlmanager.H> +#include <errl/errlentry.H> +#include <devicefw/driverif.H> +#include <trace/interface.H> + + +using namespace fapi; +using namespace TARGETING; + +class hwpMBvpdAccessorTest : public CxxTest::TestSuite +{ +public: + + /** + * @brief call fapiGetMBvpdField to fetch memory buffer vpd records. + * + */ + void testGetMBvpd() + { + fapi::ReturnCode l_fapirc; + uint8_t *l_pRecord = NULL; + uint32_t l_len = 0; + + // list of MBVPD records to test + struct _testMBvpdRecords { + fapi::MBvpdRecord record; + fapi::MBvpdKeyword keyword; + } l_mbvpdRecords[] = { +#if HWPMBVPDACCESSORTEST_UT1 + { MBVPD_RECORD_VEIR, MBVPD_KEYWORD_PDI}, +// { MBVPD_RECORD_VER0, MBVPD_KEYWORD_PDI},//in spec, not supported + { MBVPD_RECORD_MER0, MBVPD_KEYWORD_PDI}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_PDI}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_MT}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_MR}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_PDA}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_EL}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_LM}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_MW}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_MV}, + { MBVPD_RECORD_VSPD, MBVPD_KEYWORD_AM}, +#endif + { MBVPD_RECORD_VINI, MBVPD_KEYWORD_VZ}, + }; + + TS_TRACE( "testGetMBvpd entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testGetMBvpd l_memBufList.size()= 0x%x ", + l_memBufList.size() ); + + // loop thru all the memory buffers + for (uint8_t l_mbNum=0; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + // make a local copy of the memory buffer target + TARGETING::Target* l_mb_target = l_memBufList[l_mbNum]; + + // dump physical path to target + EntityPath l_path; + l_path = l_mb_target->getAttr<ATTR_PHYS_PATH>(); + l_path.dump(); + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mb_target( + TARGET_TYPE_MEMBUF_CHIP, + (const_cast<TARGETING::Target*>(l_mb_target)) ); + + // loop through mvpd records of interest + const uint32_t numRecords = + sizeof(l_mbvpdRecords)/sizeof(l_mbvpdRecords[0]); + for (uint8_t i=0;i<numRecords;i++) { + + TS_TRACE( "record = 0x%x keyword = 0x%x", + l_mbvpdRecords[i].record, + l_mbvpdRecords[i].keyword); + + TS_TRACE( "call fapiGetMBvpdField with NULL pointer" ); + + // call fapiGetMvpdField once with a NULL pointer to get the + // buffer size should return no error now. + l_fapirc = fapiGetMBvpdField(l_mbvpdRecords[i].record, + l_mbvpdRecords[i].keyword, + l_fapi_mb_target, + NULL, + l_len ); + if ( l_fapirc != fapi::FAPI_RC_SUCCESS ) + { + TS_FAIL( "fapiGetMBvpdField: expected FAPI_RC_SUCCESS" ); + fapiLogError(l_fapirc); + return; + } + + TS_TRACE( "fapiGetMBvpdField: size of record = 0x%x", + l_len ); + + // do a malloc instead of a new just for variety + l_pRecord = reinterpret_cast<uint8_t *>(malloc(l_len) ); + + // call fapiGetMvpdField once with a valid pointer + l_fapirc = fapiGetMBvpdField(l_mbvpdRecords[i].record, + l_mbvpdRecords[i].keyword, + l_fapi_mb_target, + l_pRecord, + l_len ); + if ( l_fapirc != fapi::FAPI_RC_SUCCESS ) + { + TS_FAIL( "fapiGetMBvpdField: expected FAPI_RC_SUCCESS" ); + fapiLogError(l_fapirc); + free( l_pRecord ); + return; + } +#if HWPMBVPDACCESSORTEST_UT1 + TRACFCOMP(g_trac_test,"testMBvpd:Record=%d,Keyword=%d", + l_mbvpdRecords[i].record, + l_mbvpdRecords[i].keyword); + TRACFBIN(g_trac_test,"testMBvpd:DumpRecord:", + l_pRecord, + l_len ); +#endif + // call fapiSetMvpdField + l_fapirc = fapiSetMBvpdField(l_mbvpdRecords[i].record, + l_mbvpdRecords[i].keyword, + l_fapi_mb_target, + l_pRecord, + l_len ); + if ( l_fapirc != fapi::FAPI_RC_SUCCESS ) + { + TS_FAIL( "fapiSetMBvpdField: expected FAPI_RC_SUCCESS" ); + fapiLogError(l_fapirc); + free( l_pRecord ); + return; + } + + // clean up memory + free( l_pRecord ); + } + } + + TS_TRACE( "testGetMBvpd exit" ); + + } + + /** + * @brief call getMBvpdSlopeInterceptData to fetch power slope and intercept + * attributes from the MW and MV keywords + * + */ + void testGetSlopeInterceptData() + { + fapi::ReturnCode l_fapirc; + getMBvpdSlopeInterceptData_FP_t (l_getMBvpdSlopeInterceptData) + = &getMBvpdSlopeInterceptData; + uint32_t l_val = 0xFFFFFFFF; + + TS_TRACE( "testGetSlopeInterceptData entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testGetSlopeInterceptData l_memBufList.size()=%d", + l_memBufList.size() ); + // loop thru memory buffers +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbNum = 0; // check them all in unit test +#else + uint8_t l_mbNum = (l_memBufList.size() > 0) ? l_memBufList.size()-1 : 0; +#endif + for (; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + // make a local copy of the memory buffer target + TARGETING::Target* l_mb_target = l_memBufList[l_mbNum]; + + // dump physical path to target + EntityPath l_path; + l_path = l_mb_target->getAttr<ATTR_PHYS_PATH>(); + l_path.dump(); + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mb_target( + TARGET_TYPE_MEMBUF_CHIP, + (const_cast<TARGETING::Target*>(l_mb_target)) ); + + // MASTER_POWER_SLOPE + l_fapirc = (*l_getMBvpdSlopeInterceptData)(l_fapi_mb_target, + fapi::MASTER_POWER_SLOPE, l_val); + if (l_fapirc) break; + TS_TRACE( "testSlopeInterceptData accessor " + "MASTER_POWER_SLOPE=0x%08x", l_val); +#if HWPMBVPDACCESSORTEST_UT2 + + // MASTER_POWER_INTERCEPT + l_fapirc = (*l_getMBvpdSlopeInterceptData)(l_fapi_mb_target, + fapi::MASTER_POWER_INTERCEPT, l_val); + if (l_fapirc) break; + TS_TRACE( "testSlopeInterceptData accessor " + "MASTER_POWER_INTERCEPT=0x%08x", l_val); + + // SUPPLIER_POWER_SLOPE + l_fapirc = (*l_getMBvpdSlopeInterceptData)(l_fapi_mb_target, + fapi::SUPPLIER_POWER_SLOPE, l_val); + if (l_fapirc) break; + TS_TRACE( "testSlopeInterceptData accessor " + "SUPPLIER_POWER_SLOPE=0x%08x", l_val); +#endif + // SUPPLIER_POWER_INTERCEPT + l_fapirc = (*l_getMBvpdSlopeInterceptData)(l_fapi_mb_target, + fapi::SUPPLIER_POWER_INTERCEPT, l_val); + if (l_fapirc) break; + TS_TRACE( "testSlopeInterceptData accessor " + "SUPPLIER_POWER_INTERCEPT=0x%08x", l_val); + + // MASTER_POWER_SLOPE + l_fapirc = FAPI_ATTR_GET(ATTR_CDIMM_VPD_MASTER_POWER_SLOPE, + &l_fapi_mb_target, l_val); + if (l_fapirc) break; + TS_TRACE( "testSlopeInterceptData attr " + "MASTER_POWER_SLOPE=0x%08x", l_val); +#if HWPMBVPDACCESSORTEST_UT2 + // MASTER_POWER_INTERCEPT + l_fapirc = FAPI_ATTR_GET(ATTR_CDIMM_VPD_MASTER_POWER_INTERCEPT, + &l_fapi_mb_target, l_val); + if (l_fapirc) break; + TS_TRACE( "testSlopeInterceptData attr " + "MASTER_POWER_INTERCEPT=0x%08x", l_val); + + // SUPPLIER_POWER_SLOPE + l_fapirc = FAPI_ATTR_GET(ATTR_CDIMM_VPD_SUPPLIER_POWER_SLOPE, + &l_fapi_mb_target, l_val); + if (l_fapirc) break; + TS_TRACE( "testSlopeInterceptData attr " + "SUPPLIER_POWER_SLOPE=0x%08x", l_val); + +#endif + // SUPPLIER_POWER_INTERCEPT + l_fapirc = FAPI_ATTR_GET(ATTR_CDIMM_VPD_SUPPLIER_POWER_INTERCEPT, + &l_fapi_mb_target, l_val); + if (l_fapirc) break; + TS_TRACE( "testSlopeInterceptData attr " + "SUPPLIER_POWER_INTERCEPT=0x%08x", l_val); + } + + if (l_fapirc) + { + TS_FAIL( "fapiGetSlopeInterceptData: FAPI_ATTR_GET fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + + TS_TRACE( "testGetSlopeInterceptData exit" ); + + } + + /** + * @brief call accessMBvpdL4BankDelete to fetch VSPD keyword MX + * + */ + void testL4BankDelete() + { + fapi::ReturnCode l_fapirc( fapi::FAPI_RC_SUCCESS ); +#if HWPMBVPDACCESSORTEST_UT3 + accessMBvpdL4BankDelete_FP_t (l_accessMBvpdL4BankDelete) + = &accessMBvpdL4BankDelete; +#endif + + TS_TRACE( "testL4BankDelete entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testL4BankDelete l_memBufList.size()=%d", + l_memBufList.size() ); + // loop thru memory buffers +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbNum = 0; // check them all in unit test +#else + uint8_t l_mbNum = (l_memBufList.size() > 0) ? l_memBufList.size()-1 : 0; +#endif + for (; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + // make a local copy of the memory buffer target + TARGETING::Target* l_mb_target = l_memBufList[l_mbNum]; + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mb_target( TARGET_TYPE_MEMBUF_CHIP, + (const_cast<TARGETING::Target*>(l_mb_target)) ); + + // verify HWP accessor + uint32_t l_val = 0xffffffff; + +#if HWPMBVPDACCESSORTEST_UT3 + // Get + l_fapirc=(*l_accessMBvpdL4BankDelete)(l_fapi_mb_target, + l_val, + GET_L4_BANK_DELETE_MODE); + if (l_fapirc) + { + TS_FAIL( "fapiGetVersion: HWP accessor get fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + else + { + TS_TRACE( "testL4BankDelete accessor get 0x%08x",l_val); + } + // Set (use same value) + l_fapirc=(*l_accessMBvpdL4BankDelete)(l_fapi_mb_target, + l_val, + SET_L4_BANK_DELETE_MODE); + if (l_fapirc) + { + TS_FAIL( "fapiL4BankDelete accessor set fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } +#endif + // verify attribute + l_val = 0xffffffff; + // Get + l_fapirc = FAPI_ATTR_GET(ATTR_L4_BANK_DELETE_VPD, + &l_fapi_mb_target, + l_val); + if (l_fapirc) + { + TS_FAIL( "fapiL4BankDelete: HWP attribute get fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + else + { + TS_TRACE( "testL4BankDelete attribute get 0x%08x",l_val); + } +#if HWPMBVPDACCESSORTEST_UT3 + // Set (use same value) + l_fapirc = FAPI_ATTR_SET(ATTR_L4_BANK_DELETE_VPD, + &l_fapi_mb_target, + l_val); + if (l_fapirc) + { + TS_FAIL( "fapiL4BankDelete: HWP attribute set fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } +#endif + } + + TS_TRACE( "testL4BankDelete exit" ); + } + +/** + * @brief call getMBvpdSensorMap to fetch sensor map + * attributes from the MW keyword + * + */ + void testGetSensorMap() + { + fapi::ReturnCode l_fapirc; + uint8_t l_val = 0xFF; + + TS_TRACE( "testGetSensorMap entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testGetSensorMap l_memBufList.size()=%d", + l_memBufList.size() ); + // loop thru memory buffers +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbNum = 0; // check them all in unit test +#else + uint8_t l_mbNum = (l_memBufList.size() > 0) ? l_memBufList.size()-1 : 0; +#endif + for (; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + // make a local copy of the memory buffer target + TARGETING::Target* l_mb_target = l_memBufList[l_mbNum]; + + // dump physical path to target + EntityPath l_path; + l_path = l_mb_target->getAttr<ATTR_PHYS_PATH>(); + l_path.dump(); + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mb_target( + TARGET_TYPE_MEMBUF_CHIP, + (const_cast<TARGETING::Target*>(l_mb_target)) ); + +#if HWPMBVPDACCESSORTEST_UT7 + // test accessor directly + getMBvpdSensorMap_FP_t (l_getMBvpdSensorMap) = &getMBvpdSensorMap; + + // Primary Sensor Map + l_fapirc = (*l_getMBvpdSensorMap)(l_fapi_mb_target, + fapi::SENSOR_MAP_PRIMARY, l_val); + if (l_fapirc) break; + TS_TRACE( "testSensorMap accessor " + "SENSOR_MAP_PRIMARY=0x%02x", l_val); + + // Secondary Sensor Map + l_fapirc = (*l_getMBvpdSensorMap)(l_fapi_mb_target, + fapi::SENSOR_MAP_SECONDARY, l_val); + if (l_fapirc) break; + TS_TRACE( "testSensorMap accessor " + "SENSOR_MAP_SECONDARY=0x%02x", l_val); + + // test attribute + // Primary Sensor Map + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CDIMM_SENSOR_MAP_PRIMARY, + &l_fapi_mb_target, l_val); + if (l_fapirc) break; + TS_TRACE( "testSensorMap attr " + "SENSOR_MAP_PRIMARY=0x%02x", l_val); +#endif + + // Secondary Sensor Map + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CDIMM_SENSOR_MAP_SECONDARY, + &l_fapi_mb_target, l_val); + if (l_fapirc) break; + TS_TRACE( "testSensorMap attr " + "SENSOR_MAP_SECONDARY=0x%02x", l_val); + } + + if (l_fapirc) + { + TS_FAIL( "fapiGetSensorMap: FAPI_ATTR_GET fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + + TS_TRACE( "testGetSensorMap exit" ); + + } + + /** + * @brief call getMBvpdVersion to fetch vpd version + * + */ + void testGetVersion() + { + fapi::ReturnCode l_fapirc; + getMBvpdVersion_FP_t (l_getMBvpdVersion) + = &getMBvpdVersion; + + TS_TRACE( "testGetVersion entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testGetVersion l_memBufList.size()=%d", + l_memBufList.size() ); + // loop thru memory buffers +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbNum = 0; // check them all in unit test +#else + uint8_t l_mbNum = (l_memBufList.size() > 0) ? l_memBufList.size()-1 : 0; +#endif + for (; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + TARGETING::TargetHandleList l_mbaList; + getChildAffinityTargets(l_mbaList,l_memBufList[l_mbNum], + CLASS_UNIT,TYPE_MBA,false); + + TS_TRACE( "testGetVersion l_mbaBufList.size()=%d", + l_mbaList.size()); + + // loop thru all the mbas (should be 2) +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbaNum = 0; // check them all in unit test +#else + uint8_t l_mbaNum = (l_mbaList.size() > 0) ? l_mbaList.size()-1:0 ; +#endif + for (; l_mbaNum < l_mbaList.size(); l_mbaNum++ ) + { + TARGETING::TargetHandleList l_dimmList; + + getChildAffinityTargets(l_dimmList,l_mbaList[l_mbaNum], + CLASS_LOGICAL_CARD,TYPE_DIMM,false); + TS_TRACE( "testGetVersion l_dimmList.size()=%d", + l_dimmList.size()); + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mba_target( TARGET_TYPE_MBA_CHIPLET, + (const_cast<TARGETING::Target*>(l_mbaList[l_mbaNum]))); + + // verify HWP accessor + uint32_t l_val = 0xffffffff; + + l_fapirc = (*l_getMBvpdVersion)(l_fapi_mba_target,l_val); + if (l_fapirc) + { + TS_FAIL( "fapiGetVersion: HWP accessor fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + else + { + TS_TRACE( "testGetVersion accessor 0x%08x",l_val); + } + + // loop thru all the DIMMs (should be 4) +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_dimmNum = 0; // check them all in unit test +#else + uint8_t l_dimmNum = + (l_dimmList.size() > 0) ? l_dimmList.size()-1:0 ; +#endif + for (; l_dimmNum < l_dimmList.size(); l_dimmNum++ ) + { + // dump physical path to target + EntityPath l_path; + l_path = l_dimmList[l_dimmNum]->getAttr<ATTR_PHYS_PATH>(); + l_path.dump(); + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_dimm_target( + TARGET_TYPE_DIMM, + (const_cast<TARGETING::Target*>(l_dimmList[l_dimmNum]))); + + // verify getting all attributes + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_VERSION, + &l_fapi_dimm_target, + l_val); + TS_TRACE( "testGetVersion attribute %d 0x%08x", + l_dimmNum,l_val); + } + if (l_fapirc) + { + TS_FAIL( "fapiGetVersion: FAPI_ATTR_GET fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + } + } + + TS_TRACE( "testGetVersion exit" ); + + } + + /** + * @brief call getMBvpdDram2NModeEnabled to retrieve 2N mode + * + */ + void testGetDram2NModeEnabled() + { + fapi::ReturnCode l_fapirc; + getMBvpdDram2NModeEnabled_FP_t (l_getMBvpdDram2NModeEnabled) + = &getMBvpdDram2NModeEnabled; + + TS_TRACE( "testGetDram2NModeEnabled entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testGetDram2NModeEnabled l_memBufList.size()=%d", + l_memBufList.size() ); + // loop thru memory buffers +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbNum = 0; // check them all in unit test +#else + uint8_t l_mbNum = (l_memBufList.size() > 0) ? l_memBufList.size()-1 : 0; +#endif + for (; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + TARGETING::TargetHandleList l_mbaList; + getChildAffinityTargets(l_mbaList,l_memBufList[l_mbNum], + CLASS_UNIT,TYPE_MBA,false); + + TS_TRACE( "testGetDram2NModeEnabled l_mbaBufList.size()=%d", + l_mbaList.size()); + + // loop thru all the mbas (should be 2) +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbaNum = 0; // check them all in unit test +#else + uint8_t l_mbaNum = (l_mbaList.size() > 0) ? l_mbaList.size()-1:0 ; +#endif + for (; l_mbaNum < l_mbaList.size(); l_mbaNum++ ) + { + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mba_target( TARGET_TYPE_MBA_CHIPLET, + (const_cast<TARGETING::Target*>(l_mbaList[l_mbaNum]))); + + // verify HWP accessor + uint8_t l_val = 0xFF; + + l_fapirc = (*l_getMBvpdDram2NModeEnabled) + (l_fapi_mba_target,l_val); + if (l_fapirc) + { + TS_FAIL("fapiGetDram2NModeEnabled:HWP accessor fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + else + { + TS_TRACE("testGetDram2NModeEnabled accessor 0x%02x", + l_val); + } + // verify attribute + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_DRAM_2N_MODE_ENABLED, + &l_fapi_mba_target, + l_val); + if (l_fapirc) + { + TS_FAIL("fapiGetDram2NModeEnabled:" + " FAPI_ATTR_GET fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + else + { + TS_TRACE( "testGetDram2NModeEnabled attribute 0x%02x", + l_val); + } + } + } + + TS_TRACE( "testGetDram2NModeEnabled exit" ); + + } + + + /** + * @brief call getMBvpdAddrMirrorData to fetch memory buffer AM attributes + * + */ + void testGetAddrMirrorData() + { + fapi::ReturnCode l_fapirc; + getMBvpdAddrMirrorData_FP_t (l_getMBvpdAddrMirrorData) + = &getMBvpdAddrMirrorData; + + TS_TRACE( "testGetAddrMirrorData entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testGetAddrMirrorData l_memBufList.size()=%d", + l_memBufList.size() ); + // loop thru memory buffers +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbNum = 0; // check them all in unit test +#else + uint8_t l_mbNum = (l_memBufList.size() > 0) ? l_memBufList.size()-1 : 0; +#endif + for (; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + TARGETING::TargetHandleList l_mbaList; + getChildAffinityTargets(l_mbaList,l_memBufList[l_mbNum], + CLASS_UNIT,TYPE_MBA,false); + + TS_TRACE( "testGetAddrMirrorData l_mbaBufList.size()=%d", + l_mbaList.size()); + + // loop thru all the mbas (should be 2) +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbaNum = 0; // check them all in unit test +#else + uint8_t l_mbaNum = (l_mbaList.size() > 0) ? l_mbaList.size()-1:0 ; +#endif + for (; l_mbaNum < l_mbaList.size(); l_mbaNum++ ) + { + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mba_target( TARGET_TYPE_MBA_CHIPLET, + (const_cast<TARGETING::Target*>(l_mbaList[l_mbaNum]))); + + // verify HWP accessor + uint8_t l_val[2][2] = {{0xFF,0xFF},{0xFF,0xFF}}; + + l_fapirc = (*l_getMBvpdAddrMirrorData)(l_fapi_mba_target,l_val); + if (l_fapirc) + { + TS_FAIL( "fapiGetAddrMirrorData: HWP accessor fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + else + { + TS_TRACE( "testGetAddrMirrorData accessor " + "(0x%02x,0x%02x),(0x%02x,0x%02x)", + l_val[0][0], l_val[0][1], l_val[1][0], l_val[1][1]); + } + + // verify attribute + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_DRAM_ADDRESS_MIRRORING, + &l_fapi_mba_target, + l_val); + if (l_fapirc) + { + TS_FAIL( "fapiGetAddrMirrorData: FAPI_ATTR_GET fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + else + { + TS_TRACE( "testGetAddrMirrorData attribute " + "(0x%02x,0x%02x),(0x%02x,0x%02x)", + l_val[0][0], l_val[0][1], l_val[1][0], l_val[1][1]); + } + } + } + + TS_TRACE( "testGetAddrMirrorData exit" ); + + } + + /** + * @brief call getMBvpdTermData to fetch memory buffer MT attributes + * + */ + void testGetTermData() + { + fapi::ReturnCode l_fapirc; + uint8_t val1[2][2] = {{0xFF,0xFF},{0xFF,0xFF}}; +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t val2[2][2][4]={ + {{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF}}, + {{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF}}}; + uint8_t l_errorChk = 1; //do error checks just once + uint8_t val4[2] = {0xFF,0xFF}; +#endif + uint32_t val3[2] = {0xFFFFFFFF,0xFFFFFFFF}; +#if HWPMBVPDACCESSORTEST_UT4 + uint8_t val5[2] = {0xFF,0xFF}; +#endif +#if HWPMBVPDACCESSORTEST_UT0 + getMBvpdTermData_FP_t (l_getMBvpdTermData) + = &getMBvpdTermData; +#endif + + TS_TRACE( "testGetTermData entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testGetTermData l_memBufList.size()=%d", + l_memBufList.size() ); + + // loop thru memory buffers +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbNum = 0; // check them all in unit test +#else + uint8_t l_mbNum = (l_memBufList.size() > 0) ? l_memBufList.size()-1 : 0; +#endif + for (; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + TARGETING::TargetHandleList l_mbaList; + getChildAffinityTargets(l_mbaList,l_memBufList[l_mbNum], + CLASS_UNIT,TYPE_MBA,false); + + TS_TRACE( "testGetTermData l_mbaBufList.size()=%d", + l_mbaList.size()); + + // loop thru all the mbas (should be 2) +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbaNum = 0; // check them all in unit test +#else + uint8_t l_mbaNum = (l_mbaList.size() > 0) ? l_mbaList.size()-1:0 ; +#endif + for (; l_mbaNum < l_mbaList.size(); l_mbaNum++ ) + { + // dump physical path to target + EntityPath l_path; + l_path = l_mbaList[l_mbaNum]->getAttr<ATTR_PHYS_PATH>(); + l_path.dump(); + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mba_target( + TARGET_TYPE_MBA_CHIPLET, + (const_cast<TARGETING::Target*>(l_mbaList[l_mbaNum])) ); + +#if HWPMBVPDACCESSORTEST_UT4 + // check for interface errors being caught. Just once. + if (l_errorChk) { + // check size matches type for each of the 4 types + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + fapi::TERM_DATA_DRAM_RON, + &val1, sizeof(val1)+1); //invalid size + if (l_fapirc != fapi::RC_MBVPD_INVALID_OUTPUT_VARIABLE_SIZE) + { + TS_FAIL("testGetTermData: expect invalid size RC:" + " 0x%08x,0x%08x", + fapi::RC_MBVPD_INVALID_OUTPUT_VARIABLE_SIZE, + static_cast<uint32_t>(l_fapirc)); + } + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + fapi::TERM_DATA_DRAM_RTT_NOM, + &val2, sizeof(val2)-1); //invalid size + if (l_fapirc != fapi::RC_MBVPD_INVALID_OUTPUT_VARIABLE_SIZE) + { + TS_FAIL("testGetTermData: expect invalid size RC:" + " 0x%08x,0x%08x", + fapi::RC_MBVPD_INVALID_OUTPUT_VARIABLE_SIZE, + static_cast<uint32_t>(l_fapirc)); + } + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + fapi::TERM_DATA_CEN_RD_VREF, + &val3, sizeof(val3)+2); //invalid size + if (l_fapirc != fapi::RC_MBVPD_INVALID_OUTPUT_VARIABLE_SIZE) + { + TS_FAIL("testGetTermData: expect invalid size RC:" + " 0x%08x,0x%08x", + fapi::RC_MBVPD_INVALID_OUTPUT_VARIABLE_SIZE, + static_cast<uint32_t>(l_fapirc)); + } + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + fapi::TERM_DATA_DRAM_WRDDR4_VREF, + &val4, 0); //invalid size + if (l_fapirc != fapi::RC_MBVPD_INVALID_OUTPUT_VARIABLE_SIZE) + { + TS_FAIL("testGetTermData: expect invalid size RC:" + " 0x%08x,0x%08x", + fapi::RC_MBVPD_INVALID_OUTPUT_VARIABLE_SIZE, + static_cast<uint32_t>(l_fapirc)); + } + // check for catching an invalid ID + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + (fapi::MBvpdTermData)99, //invalid ID + &val1, sizeof(val1)); + if (l_fapirc != fapi::RC_MBVPD_INVALID_ATTRIBUTE_ID) + { + TS_FAIL("testGetTermData: expect invalid size RC:" + " 0x%08x,0x%08x", + fapi::RC_MBVPD_INVALID_ATTRIBUTE_ID, + static_cast<uint32_t>(l_fapirc)); + } + l_errorChk =0; + } +#endif + // Verify fetching attributes using FAPI_ATTR_GET + // TERM_DATA_DRAM_RON + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_DRAM_RON, + &l_fapi_mba_target, val1); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_DRAM_RON=(0x%02x,0x%02x),(0x%02x,0x%02x)", + val1[0][0], val1[0][1], val1[1][0], val1[1][1]); + +#if HWPMBVPDACCESSORTEST_UT4 + // TERM_DATA_DRAM_RTT_NOM + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_DRAM_RTT_NOM, + &l_fapi_mba_target, val2); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_DRAM_RTT_NOM"); + TS_TRACE("testGetTermData[0][0]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[0][0][0], val2[0][0][1], val2[0][0][2], val2[0][0][3]); + TS_TRACE("testGetTermData[0][1]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[0][1][0], val2[0][1][1], val2[0][1][2], val2[0][1][3]); + TS_TRACE("testGetTermData[1][0]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[1][0][0], val2[1][0][1], val2[1][0][2], val2[1][0][3]); + TS_TRACE("testGetTermData[1][1]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[1][1][0], val2[1][1][1], val2[1][1][2], val2[1][1][3]); + + // TERM_DATA_DRAM_RTT_WR + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_DRAM_RTT_WR, + &l_fapi_mba_target, val2); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_DRAM_RTT_WR"); + TS_TRACE("testGetTermData[0][0]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[0][0][0], val2[0][0][1], val2[0][0][2], val2[0][0][3]); + TS_TRACE("testGetTermData[0][1]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[0][1][0], val2[0][1][1], val2[0][1][2], val2[0][1][3]); + TS_TRACE("testGetTermData[1][0]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[1][0][0], val2[1][0][1], val2[1][0][2], val2[1][0][3]); + TS_TRACE("testGetTermData[1][1]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[1][1][0], val2[1][1][1], val2[1][1][2], val2[1][1][3]); + + // TERM_DATA_ODT_RD + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_ODT_RD, + &l_fapi_mba_target, val2); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_ODT_RD"); + TS_TRACE("testGetTermData[0][0]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[0][0][0], val2[0][0][1], val2[0][0][2], val2[0][0][3]); + TS_TRACE("testGetTermData[0][1]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[0][1][0], val2[0][1][1], val2[0][1][2], val2[0][1][3]); + TS_TRACE("testGetTermData[1][0]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[1][0][0], val2[1][0][1], val2[1][0][2], val2[1][0][3]); + TS_TRACE("testGetTermData[1][1]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[1][1][0], val2[1][1][1], val2[1][1][2], val2[1][1][3]); + + // TERM_DATA_ODT_WR + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_ODT_WR, + &l_fapi_mba_target, val2); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_ODT_WR"); + TS_TRACE("testGetTermData[0][0]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[0][0][0], val2[0][0][1], val2[0][0][2], val2[0][0][3]); + TS_TRACE("testGetTermData[0][1]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[0][1][0], val2[0][1][1], val2[0][1][2], val2[0][1][3]); + TS_TRACE("testGetTermData[1][0]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[1][0][0], val2[1][0][1], val2[1][0][2], val2[1][0][3]); + TS_TRACE("testGetTermData[1][1]=0x%02x,0x%02x,0x%02x,0x%02x", + val2[1][1][0], val2[1][1][1], val2[1][1][2], val2[1][1][3]); + + // TERM_DATA_CEN_RD_VREF + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_RD_VREF, + &l_fapi_mba_target, val3); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_RD_VREF=0x%08x,0x%08x", + val3[0], val3[1]); + + // TERM_DATA_DRAM_WR_VREF + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_DRAM_WR_VREF, + &l_fapi_mba_target, val3); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_DRAM_WR_VREF=0x%08x,0x%08x", + val3[0], val3[1]); + + // TERM_DATA_DRAM_WRDDR4_VREF + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_DRAM_WRDDR4_VREF, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_DRAM_WRDDR4_VREF=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_RCV_IMP_DQ_DQS + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_RCV_IMP_DQ_DQS, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_RCV_IMP_DQ_DQS=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_DRV_IMP_DQ_DQS + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_DRV_IMP_DQ_DQS, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_DRV_IMP_DQ_DQS=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_DRV_IMP_CNTL + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_DRV_IMP_CNTL, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_DRV_IMP_CNTL=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_DRV_IMP_ADDR + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_DRV_IMP_ADDR, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_DRV_IMP_ADDR=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_DRV_IMP_CLK + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_DRV_IMP_CLK, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_DRV_IMP_CLK=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_DRV_IMP_SPCKE + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_DRV_IMP_SPCKE, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_DRV_IMP_SPCKE=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_SLEW_RATE_DQ_DQS + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_SLEW_RATE_DQ_DQS, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_SLEW_RATE_DQ_DQS=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_SLEW_RATE_CNTL + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_SLEW_RATE_CNTL, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_SLEW_RATE_CNTL=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_SLEW_RATE_ADDR + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_SLEW_RATE_ADDR, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_SLEW_RATE_ADDR=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_SLEW_RATE_CLK + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_SLEW_RATE_CLK, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_SLEW_RATE_CLK=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_CEN_SLEW_RATE_SPCKE + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_SLEW_RATE_SPCKE, + &l_fapi_mba_target, val4); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CEN_SLEW_RATE_SPCKE=0x%02x,0x%02x", + val4[0], val4[1]); +#endif + // TERM_DATA_CKE_PRI_MAP + val3[0] = 0xFFFFFFFF; + val3[1] = 0xFFFFFFFF; + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CKE_PRI_MAP, + &l_fapi_mba_target, val3); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CKE_PRI_MAP=0x%08x,0x%08x", + val3[0], val3[1]); + +#if HWPMBVPDACCESSORTEST_UT4 + // TERM_DATA_CKE_PWR_MAP + val3[0] = 0xFFFFFFFF; + val3[1] = 0xFFFFFFFF; + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CKE_PWR_MAP, + &l_fapi_mba_target, val3); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_CKE_PWR_MAP=0x%08x,0x%08x", + val3[0], val3[1]); + + // TERM_DATA_RLO + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_RLO, + &l_fapi_mba_target, val5); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_VPD_RLO=(0x%02x,0x%02x)", + val5[0], val5[1]); + + // TERM_DATA_WLO + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_WLO, + &l_fapi_mba_target, val5); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_VPD_WLO=(0x%02x,0x%02x)", + val5[0], val5[1]); + + // TERM_DATA_GPO + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_GPO, + &l_fapi_mba_target, val5); + if (l_fapirc) break; + TS_TRACE( "testGetTermData attr " + "TERM_DATA_VPD_GPO=(0x%02x,0x%02x)", + val5[0], val5[1]); +#endif + } + if (l_fapirc) + { + TS_FAIL( "fapiGetTermData: FAPI_ATTR_GET fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + } + + + TS_TRACE( "testGetTermData exit" ); + + } + + + /** + * @brief call getMBvpdPhaseRotData to fetch memory buffer MR attributes + * + */ + void testGetPhaseRotatorData() + { + fapi::ReturnCode l_fapirc; + const uint8_t PORT_SIZE = 2; + uint8_t l_attr_eff_cen_phase_rot[PORT_SIZE]; + + TS_TRACE( "testGetPhaseRotatorData entry" ); + + TARGETING::TargetHandleList l_memBufList; + getAllChips(l_memBufList, TYPE_MEMBUF); + + TS_TRACE( "testGetPhaseRotatorData l_memBufList.size()=%d", + l_memBufList.size() ); + + // loop thru memory buffers +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbNum = 0; // check them all in unit test +#else + uint8_t l_mbNum = (l_memBufList.size() > 0) ? l_memBufList.size()-1 : 0; +#endif + for (; l_mbNum < l_memBufList.size(); l_mbNum++ ) + { + TARGETING::TargetHandleList l_mbaList; + getChildAffinityTargets(l_mbaList,l_memBufList[l_mbNum], + CLASS_UNIT,TYPE_MBA,false); + + TS_TRACE( "testGetPhaseRotatorData l_mbaBufList.size()=%d", + l_mbaList.size()); + + // loop thru all the mbas (should be 2) +#if HWPMBVPDACCESSORTEST_UT0 + uint8_t l_mbaNum = 0; // check them all in unit test +#else + uint8_t l_mbaNum = (l_mbaList.size() > 0) ? l_mbaList.size()-1:0 ; +#endif + for (; l_mbaNum < l_mbaList.size(); l_mbaNum++ ) + { + // dump physical path to target + EntityPath l_path; + l_path = l_mbaList[l_mbaNum]->getAttr<ATTR_PHYS_PATH>(); + l_path.dump(); + + // cast OUR type of target to a FAPI type of target. + fapi::Target l_fapi_mba_target( + TARGET_TYPE_MBA_CHIPLET, + (const_cast<TARGETING::Target*>(l_mbaList[l_mbaNum])) ); + + // verify getting all attributes + + // getting all the attributes is a bit of over kill. + // cen_ddrphy.initfile accesses all the values + // the exhaustive test is good for unit test + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CLK_P0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CLK_P0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); +#if HWPMBVPDACCESSORTEST_UT5 + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CLK_P1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CLK_P1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CLK_P0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CLK_P0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CLK_P1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CLK_P1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A2, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A2=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A3, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A3=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A4, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A4=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A5, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A5=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A6, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A6=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A7, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A7=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A8, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A8=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A9, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A9=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A10, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A10=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A11, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A11=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A12, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A12=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A13, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A13=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A14, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A14=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_A15, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_A15=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_BA0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_BA0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_BA1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_BA1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_BA2, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_BA2=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_CASN, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_CASN=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_RASN, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_RASN=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_CMD_WEN, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_CMD_WEN=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_PAR, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_PAR=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M_ACTN, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M_ACTN=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CKE0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CKE0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CKE1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CKE1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CKE2, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CKE2=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CKE3, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CKE3=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CSN0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CSN0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CSN1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CSN1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CSN2, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CSN2=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CSN3, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_CSN3=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_ODT0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_ODT0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_ODT1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M0_CNTL_ODT1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CKE0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CKE0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CKE1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CKE1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CKE2, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CKE2=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CKE3, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CKE3=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CSN0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CSN0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CSN1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CSN1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CSN2, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CSN2=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CSN3, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_CSN3=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_ODT0, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_ODT0=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_ODT1, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_CEN_PHASE_ROT_M1_CNTL_ODT1=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + +#endif +#ifdef HWPMBVPDACCESSORTEST_UT6 + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_TSYS_ADR, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_TSYS_ADR=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_fapirc = FAPI_ATTR_GET(ATTR_VPD_TSYS_DP18, + &l_fapi_mba_target, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData" + " ATTR_VPD_TSYS_DP18=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); +#endif + } + if (l_fapirc) + { + TS_FAIL( "fapiGetPhaseRotatorData: FAPI_ATTR_GET fail rc=0x%x", + static_cast<uint32_t>(l_fapirc) ); + fapiLogError(l_fapirc); + } + } + + TS_TRACE( "testGetPhaseRotatorData exit" ); + + } + +}; // end class + +#endif |