summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/dram_training/hbVddrMsg.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/hwpf/hwp/dram_training/hbVddrMsg.C')
-rw-r--r--src/usr/hwpf/hwp/dram_training/hbVddrMsg.C56
1 files changed, 43 insertions, 13 deletions
diff --git a/src/usr/hwpf/hwp/dram_training/hbVddrMsg.C b/src/usr/hwpf/hwp/dram_training/hbVddrMsg.C
index 2119ed222..7198988ee 100644
--- a/src/usr/hwpf/hwp/dram_training/hbVddrMsg.C
+++ b/src/usr/hwpf/hwp/dram_training/hbVddrMsg.C
@@ -223,7 +223,7 @@ void HBVddrMsg::addMemoryVoltageDomains(
///////////////////////////////////////////////////////////////////////////////
void HBVddrMsg::createVddrData(
- const VDDR_MSG_TYPE i_requestType,
+ VDDR_MSG_TYPE i_requestType,
RequestContainer& io_request) const
{
TRACFCOMP( g_trac_volt, ENTER_MRK "HBVddrMsg::createVddrData" );
@@ -302,7 +302,8 @@ void HBVddrMsg::createVddrData(
io_request.erase(pInvalidEntries,io_request.end());
}
- if( (i_requestType == HB_VDDR_ENABLE)
+ if( ( (i_requestType == HB_VDDR_ENABLE) ||
+ (i_requestType == HB_VDDR_POST_DRAM_INIT_ENABLE) )
&& (!membufTargetList.empty()) )
{
// Inhibit sending any request to turn on a domain with no voltage.
@@ -322,7 +323,7 @@ void HBVddrMsg::createVddrData(
///////////////////////////////////////////////////////////////////////////////
// HBVddrMsg::sendMsg
///////////////////////////////////////////////////////////////////////////////
-errlHndl_t HBVddrMsg::sendMsg(uint32_t i_msgType) const
+errlHndl_t HBVddrMsg::sendMsg(VDDR_MSG_TYPE i_msgType) const
{
errlHndl_t l_err = NULL;
@@ -333,13 +334,9 @@ errlHndl_t HBVddrMsg::sendMsg(uint32_t i_msgType) const
{
RequestContainer l_request;
- if ( (i_msgType == HB_VDDR_ENABLE) || (i_msgType == HB_VDDR_DISABLE) )
- {
- VDDR_MSG_TYPE msgType = (i_msgType == HB_VDDR_ENABLE)
- ? HB_VDDR_ENABLE : HB_VDDR_DISABLE;
- createVddrData(msgType, l_request);
- }
- else
+ if ( ! ( (i_msgType == HB_VDDR_ENABLE) ||
+ (i_msgType == HB_VDDR_DISABLE) ||
+ (i_msgType == HB_VDDR_POST_DRAM_INIT_ENABLE) ) )
{
TRACFCOMP(g_trac_volt, ERR_MRK "hbVddrMsg::send msg with non-"
"valid msg type%08X",i_msgType);
@@ -358,6 +355,8 @@ errlHndl_t HBVddrMsg::sendMsg(uint32_t i_msgType) const
fapi::RC_INCORRECT_MSG_TYPE, i_msgType);
break;
}
+ createVddrData(i_msgType, l_request);
+
size_t l_dataCount = l_request.size();
@@ -544,7 +543,8 @@ errlHndl_t HBVddrMsg::processMsg(msg_t* i_Msg) const
TRACFCOMP( g_trac_volt, INFO_MRK
"HBVddrMsg::processMsg l_msgType=x%08X",l_msgType );
if ( (l_msgType == HB_VDDR_ENABLE) ||
- (l_msgType == HB_VDDR_DISABLE) )
+ (l_msgType == HB_VDDR_DISABLE)||
+ (l_msgType == HB_VDDR_POST_DRAM_INIT_ENABLE) )
{
//process a VDDR message
l_errLog=processVDDRmsg(i_Msg);
@@ -653,7 +653,7 @@ errlHndl_t platform_enable_vddr()
"SUCCESS : host_enable_vddr()" );
}
}
- else // simics stand-alone TULETTA
+ else // no FSP/mbox services available
{
TRACFCOMP(g_trac_volt,"call_host_enable_vddr"
"no-op because mbox not available");
@@ -683,7 +683,7 @@ errlHndl_t platform_disable_vddr()
"SUCCESS : host_disable_vddr()" );
}
}
- else // simics stand-along TULETTA
+ else // no FSP/mbox services available
{
TRACFCOMP(g_trac_volt,"call_host_disable_vddr"
"no-op because mbox not available");
@@ -692,3 +692,33 @@ errlHndl_t platform_disable_vddr()
return l_err;
}
+errlHndl_t platform_adjust_vddr_post_dram_init()
+{
+ errlHndl_t l_err = NULL;
+ if(INITSERVICE::spBaseServicesEnabled())
+ {
+ HBVddrMsg l_hbVddr;
+
+ l_err = l_hbVddr.sendMsg(HBVddrMsg::HB_VDDR_POST_DRAM_INIT_ENABLE);
+ if (l_err)
+ {
+ TRACFCOMP(g_trac_volt,
+ "ERROR 0x%.8X: call_host_adjust_vddr_post_dram_init to "
+ "sendMsg returns error",
+ l_err->reasonCode());
+ }
+ else
+ {
+ TRACFCOMP( g_trac_volt,
+ "SUCCESS : host_adjust_vddr_post_dram_init()" );
+ }
+ }
+ else // no FSP/mbox services available
+ {
+ TRACFCOMP(g_trac_volt,"call_host_adjust_vddr_post_dram_init()"
+ "no-op because mbox not available");
+ }
+
+ return l_err;
+}
+
OpenPOWER on IntegriCloud