From fe7854394eb388e40bd94b7b4398003b6ac3b268 Mon Sep 17 00:00:00 2001 From: Bill Schwartz Date: Thu, 15 Aug 2013 16:40:38 -0500 Subject: VPD Accessor functions for Clock Mapping, DIMM timing and TSYS VPD Attributes Extend existing CDIMM hwp accessors for MR and MT keywords to add support for 7 new attributes. Based on vpd level 6.0 with work around driven by vpd version to also support vpd level 5.3 definition. FSP change to add cvpd record VINI to PNOR is 897882 Change-Id: I02b3a0ade288c6b75918ad1d99257c5a042fc18d RTC: 79615 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5805 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III --- src/usr/hwpf/test/fapiwinkletest.H | 160 +++++++++++++++++++++++++++++++++++-- 1 file changed, 154 insertions(+), 6 deletions(-) (limited to 'src/usr/hwpf/test') diff --git a/src/usr/hwpf/test/fapiwinkletest.H b/src/usr/hwpf/test/fapiwinkletest.H index 99ca55192..d88eb4d34 100644 --- a/src/usr/hwpf/test/fapiwinkletest.H +++ b/src/usr/hwpf/test/fapiwinkletest.H @@ -26,6 +26,7 @@ // set to 1 for doing unit tests, set to 0 for production #define UNITTESTfwt 0 +#define UNITTEST2fwt 0 // TODO: RTC 69935 complete Phase Rotator Data and Termination Data. // Use the code in the 1 path until CDIMM vpd has proper values. // Then the 1 path code can be removed and keep the 0 path code. @@ -82,9 +83,11 @@ public: fapi::MvpdRecord record; fapi::MvpdKeyword keyword; } l_mvpdRecords[] = { +#if UNITTESTfwt { MVPD_RECORD_CP00, MVPD_KEYWORD_PDG}, { MVPD_RECORD_MER0, MVPD_KEYWORD_PDI}, // { MVPD_RECORD_VER0, MVPD_KEYWORD_PDI}, //VER0 in spec,not supported +#endif { MVPD_RECORD_VWML, MVPD_KEYWORD_PDI}, }; @@ -180,6 +183,7 @@ public: fapi::MBvpdRecord record; fapi::MBvpdKeyword keyword; } l_mbvpdRecords[] = { +#if UNITTESTfwt { MBVPD_RECORD_VEIR, MBVPD_KEYWORD_PDI}, // { MBVPD_RECORD_VER0, MBVPD_KEYWORD_PDI},//in spec, not supported { MBVPD_RECORD_MER0, MBVPD_KEYWORD_PDI}, @@ -192,6 +196,8 @@ public: { 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" ); @@ -519,14 +525,17 @@ public: void testGetTermData() { fapi::ReturnCode l_fapirc( fapi::FAPI_RC_SUCCESS ); - uint8_t val1[2][2] = {{0xFF,0xFF},{0xFF,0xFF}}; #if UNITTESTfwt + uint8_t val1[2][2] = {{0xFF,0xFF},{0xFF,0xFF}}; uint8_t val2[2][2][4]={ {{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF}}, {{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF}}}; - uint32_t val3[2] = {0xFFFFFFFF,0xFFFFFFFF}; - uint8_t val4[2] = {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 UNITTEST2fwt + uint8_t val5[2] = {0xFF,0xFF}; #endif #if RTC69935fwt getMBvpdTermData_FP_t (l_getMBvpdTermData) @@ -635,6 +644,7 @@ public: #if RTC69935fwt // Verify fetching attributes by calling the HWP directly +#if UNITTESTfwt // TERM_DATA_DRAM_RON l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, fapi::TERM_DATA_DRAM_RON, @@ -644,7 +654,6 @@ public: "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 UNITTESTfwt // TERM_DATA_DRAM_RTT_NOM l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, fapi::TERM_DATA_DRAM_RTT_NOM, @@ -835,6 +844,55 @@ public: "TERM_DATA_CEN_SLEW_RATE_SPCKE=0x%02x,0x%02x", val4[0], val4[1]); #endif + // TERM_DATA_CKE_PRI_MAP + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + fapi::TERM_DATA_CKE_PRI_MAP, + &val3, sizeof(val3)); + if (l_fapirc) break; + TS_TRACE( "testGetTermData accessor " + "TERM_DATA_CKE_PRI_MAP=0x%08x,0x%08x", + val3[0], val3[1]); + +#if UNITTESTfwt + // TERM_DATA_CKE_PWR_MAP + val3[0] = 0xFFFFFFFF; + val3[1] = 0xFFFFFFFF; + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + fapi::TERM_DATA_CKE_PWR_MAP, + &val3, sizeof(val3)); + if (l_fapirc) break; + TS_TRACE( "testGetTermData accessor " + "TERM_DATA_CKE_PWR_MAP=0x%08x,0x%08x", + val3[0], val3[1]); + + // TERM_DATA_RLO + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + fapi::TERM_DATA_RLO, + &val4, sizeof(val4)); + if (l_fapirc) break; + TS_TRACE( "testGetTermData accessor " + "TERM_DATA_RLO=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_WLO + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + fapi::TERM_DATA_WLO, + &val4, sizeof(val4)); + if (l_fapirc) break; + TS_TRACE( "testGetTermData accessor " + "TERM_DATA_WLO=0x%02x,0x%02x", + val4[0], val4[1]); + + // TERM_DATA_GPO + l_fapirc = (*l_getMBvpdTermData)(l_fapi_mba_target, + fapi::TERM_DATA_GPO, + &val4, sizeof(val4)); + if (l_fapirc) break; + TS_TRACE( "testGetTermData accessor " + "TERM_DATA_GPO=0x%02x,0x%02x", + val4[0], val4[1]); +#endif + #else // Verify fetching attributes using FAPI_ATTR_GET // TERM_DATA_DRAM_RON @@ -1019,6 +1077,53 @@ public: val4[0], val4[1]); #endif #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 UNITTEST2fwt + // 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) { @@ -1035,7 +1140,7 @@ public: /** - * @brief call fapiGetMBvpdField to fetch memory buffer vpd records. + * @brief call getMBvpdPhaseRotData to fetch memory buffer MR attributes * */ void testGetPhaseRotatorData() @@ -1094,6 +1199,7 @@ public: // 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 = (*l_getMBvpdPhaseRotatorData)(l_fapi_mba_target, fapi::PHASE_ROT_M0_CLK_P0, l_attr_eff_cen_phase_rot); @@ -1102,6 +1208,7 @@ public: " ATTR_EFF_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 UNITTESTfwt l_fapirc = (*l_getMBvpdPhaseRotatorData)(l_fapi_mba_target, fapi::PHASE_ROT_M0_CLK_P1, @@ -1525,6 +1632,28 @@ public: " ATTR_EFF_CEN_PHASE_ROT_M1_CNTL_ODT1=(0x%02x,0x%02x)", l_attr_eff_cen_phase_rot[0], l_attr_eff_cen_phase_rot[1]); + + l_attr_eff_cen_phase_rot[0] = 0xFF; + l_attr_eff_cen_phase_rot[1] = 0xFF; + l_fapirc = (*l_getMBvpdPhaseRotatorData)(l_fapi_mba_target, + fapi::PHASE_ROT_TSYS_ADR, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData accessor" + " ATTR_VPD_TSYS_ADR=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); + + l_attr_eff_cen_phase_rot[0] = 0xFF; + l_attr_eff_cen_phase_rot[1] = 0xFF; + l_fapirc = (*l_getMBvpdPhaseRotatorData)(l_fapi_mba_target, + fapi::PHASE_ROT_TSYS_DP18, + l_attr_eff_cen_phase_rot); + if (l_fapirc) break; + TS_TRACE( "testGetPhaseRotatorData accessor" + " ATTR_VPD_TSYS_DP18=(0x%02x,0x%02x)", + l_attr_eff_cen_phase_rot[0], + l_attr_eff_cen_phase_rot[1]); #endif #else // getting all the attributes is a bit of over kill. @@ -1961,7 +2090,27 @@ public: " ATTR_EFF_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 +#endif +#ifdef UNITTEST2fwt + 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) @@ -1972,7 +2121,6 @@ public: } } - TS_TRACE( "testGetPhaseRotatorData exit" ); } -- cgit v1.2.3