summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/test
diff options
context:
space:
mode:
authorBill Schwartz <whs@us.ibm.com>2013-08-15 16:40:38 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-09-13 12:57:46 -0500
commitfe7854394eb388e40bd94b7b4398003b6ac3b268 (patch)
tree8dba2bfd9801ff56161a47c954e8784079a6f9f9 /src/usr/hwpf/test
parent0b823dd9ef5579112cbbaae770028c75f7d19119 (diff)
downloadblackbird-hostboot-fe7854394eb388e40bd94b7b4398003b6ac3b268.tar.gz
blackbird-hostboot-fe7854394eb388e40bd94b7b4398003b6ac3b268.zip
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 <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/test')
-rw-r--r--src/usr/hwpf/test/fapiwinkletest.H160
1 files changed, 154 insertions, 6 deletions
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,8 +2090,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]);
+
#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" );
}
OpenPOWER on IntegriCloud