summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/core_activate
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2012-10-10 13:39:43 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-10-24 10:39:41 -0500
commit44282a5242ed8f268680cc7fc2c365df79fdd900 (patch)
tree51000e4c40e0d4f75e0bafae8b1ffe1c1b2695c2 /src/usr/hwpf/hwp/core_activate
parent054e5219b3c18f11e6a97f9e264513a01f50486e (diff)
downloadtalos-hostboot-44282a5242ed8f268680cc7fc2c365df79fdd900.tar.gz
talos-hostboot-44282a5242ed8f268680cc7fc2c365df79fdd900.zip
HWP: Integrate proc_switch_cfsim into Hostboot
Change-Id: I2f32b1840d9349791494c41d3ca2a7ab29b53e3c RTC: 41356 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/2019 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/core_activate')
-rw-r--r--src/usr/hwpf/hwp/core_activate/core_activate.C85
-rw-r--r--src/usr/hwpf/hwp/core_activate/makefile6
-rwxr-xr-xsrc/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.C478
-rwxr-xr-xsrc/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.H110
4 files changed, 640 insertions, 39 deletions
diff --git a/src/usr/hwpf/hwp/core_activate/core_activate.C b/src/usr/hwpf/hwp/core_activate/core_activate.C
index 89824647b..6bd571751 100644
--- a/src/usr/hwpf/hwp/core_activate/core_activate.C
+++ b/src/usr/hwpf/hwp/core_activate/core_activate.C
@@ -66,7 +66,7 @@
#include "proc_prep_master_winkle.H"
#include "proc_stop_deadman_timer.H"
// #include "host_activate_slave_cores/host_activate_slave_cores.H"
-// #include "host_ipl_complete/host_ipl_complete.H"
+#include "proc_switch_cfsim.H"
namespace CORE_ACTIVATE
{
@@ -300,50 +300,62 @@ void* call_host_activate_slave_cores( void *io_pArgs )
//
void* call_host_ipl_complete( void *io_pArgs )
{
- errlHndl_t l_errl = NULL;
+ errlHndl_t l_err = NULL;
TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_host_ipl_complete entry" );
do
{
-
-#if 0
- // @@@@@ CUSTOM BLOCK: @@@@@
- // figure out what targets we need
- // customize any other inputs
- // set up loops to go through all targets (if parallel, spin off a task)
-
- // dump physical path to targets
- EntityPath l_path;
- l_path = l_@targetN_target->getAttr<ATTR_PHYS_PATH>();
- l_path.dump();
-
- // cast OUR type of target to a FAPI type of target.
- const fapi::Target l_fapi_@targetN_target(
- TARGET_TYPE_MEMBUF_CHIP,
- reinterpret_cast<void *>
- (const_cast<TARGETING::Target*>(l_@targetN_target)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP( l_errl, host_ipl_complete, _args_...);
- if ( l_errl )
+ uint8_t l_cpuNum = 0;
+ TARGETING::TargetHandleList l_cpuTargetList;
+ getAllChips(l_cpuTargetList, TYPE_PROC);
+ for ( l_cpuNum=0; l_cpuNum < l_cpuTargetList.size(); l_cpuNum++ )
{
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR : .........." );
- errlCommit( l_errl, HWPF_COMP_ID );
+ const TARGETING::Target* l_cpu_target = l_cpuTargetList[l_cpuNum];
+ const fapi::Target l_fapi_proc_target(
+ TARGET_TYPE_PROC_CHIP,
+ reinterpret_cast<void *>
+ ( const_cast<TARGETING::Target*>(l_cpu_target) ) );
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Running proc_switch_cfsim HWP on...");
+ EntityPath l_path;
+ l_path = l_cpu_target->getAttr<ATTR_PHYS_PATH>();
+ l_path.dump();
+
+ // call proc_switch_cfsim
+ FAPI_INVOKE_HWP(l_err, proc_switch_cfsim, l_fapi_proc_target,
+ true, // RESET
+ true, // RESET_OPB_SWITCH
+ true, // FENCE_FSI0
+ true, // FENCE_PIB_NH
+ true, // FENCE_PIB_H
+ true, // FENCE_FSI1
+ true); // FENCE_PIB_SW1
+ if (l_err)
+ {
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: proc_switch_cfsim HWP returns error",
+ l_err->reasonCode());
+ break;
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS: proc_switch_cfsim HWP( )" );
+ }
}
- else
+
+ if( l_err )
{
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : .........." );
+ break;
}
- // @@@@@ END CUSTOM BLOCK: @@@@@
-#endif
+
// Sync attributes to Fsp
- l_errl = syncAllAttributesToFsp();
+ l_err = syncAllAttributesToFsp();
- if( l_errl )
+ if( l_err )
{
break;
}
@@ -351,17 +363,16 @@ void* call_host_ipl_complete( void *io_pArgs )
// Send Sync Point to Fsp
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
INFO_MRK"Send SYNC_POINT_REACHED msg to Fsp" );
- l_errl = INITSERVICE::sendSyncPoint();
-
+ l_err = INITSERVICE::sendSyncPoint();
} while( 0 );
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_host_ipl_complete exit elog ptr = %p", l_errl );
+ "call_host_ipl_complete exit elog ptr = %p", l_err );
// end task, returning any errorlogs to IStepDisp
- return l_errl;
+ return l_err;
}
diff --git a/src/usr/hwpf/hwp/core_activate/makefile b/src/usr/hwpf/hwp/core_activate/makefile
index c296d3b44..824ee02cb 100644
--- a/src/usr/hwpf/hwp/core_activate/makefile
+++ b/src/usr/hwpf/hwp/core_activate/makefile
@@ -42,14 +42,15 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate
## EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate/<HWP_dir>
EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate/proc_prep_master_winkle
EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate/proc_stop_deadman_timer
-
+EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate/proc_switch_cfsim
## NOTE: add new object files when you add a new HWP
OBJS = core_activate.o \
proc_prep_master_winkle.o \
proc_sbe_ffdc.o \
- proc_stop_deadman_timer.o
+ proc_stop_deadman_timer.o \
+ proc_switch_cfsim.o
## NOTE: add a new directory onto the vpaths when you add a new HWP
@@ -57,6 +58,7 @@ OBJS = core_activate.o \
# VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate/<HWP_dir>
VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate/proc_prep_master_winkle
VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate/proc_stop_deadman_timer
+VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate/proc_switch_cfsim
include ${ROOTPATH}/config.mk
diff --git a/src/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.C b/src/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.C
new file mode 100755
index 000000000..45c56627c
--- /dev/null
+++ b/src/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.C
@@ -0,0 +1,478 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.C $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012 */
+/* */
+/* 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 */
+// -*- mode: C++; c-file-style: "linux"; -*-
+// $Id: proc_switch_cfsim.C,v 1.7 2012/05/03 10:41:46 rkoester Exp $
+// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_switch_cfsim.C,v $
+//------------------------------------------------------------------------------
+// *|
+// *! (C) Copyright International Business Machines Corp. 2012
+// *! All Rights Reserved -- Property of IBM
+// *! *** IBM Confidential ***
+// *|
+// *! TITLE : proc_switch_cfsim.C
+// *! DESCRIPTION : Configure the PLLs
+// *!
+// *! OWNER NAME : Ralph C. Koester Email: rkoester@de.ibm.com
+// *! Backup : Todd A. Venton Email: venton@us.ibm.com
+// *!
+// *!
+// *! General Description:
+// *!
+// *! The purpose of this procedure is to reset fences in CFAM
+// *!
+// *! via the mailbox register of the PIB
+// *!
+// *! set the sbetrigger reg via SCOM write
+// *|
+// *! Procedure Prereq : none
+// *!
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+// Includes
+//------------------------------------------------------------------------------
+#include "proc_switch_cfsim.H"
+
+
+//------------------------------------------------------------------------------
+// Function definitions
+//------------------------------------------------------------------------------
+
+extern "C"
+{
+
+
+
+//------------------------------------------------------------------------------
+// function: utility subroutine to manipulate GP4 of CFAM via MBOX
+// parameters: io_data => Input data buffer
+// i_reset => Input parameter (RESET)
+// returns: FAPI_RC_SUCCESS if operation was successful, else error
+//------------------------------------------------------------------------------
+fapi::ReturnCode proc_reset_fence(ecmdDataBufferBase & io_data, bool i_RESET)
+{
+
+ fapi::ReturnCode rc;
+ uint32_t rc_ecmd = 0;
+
+ FAPI_DBG("proc_reset_fence: Start");
+
+ // mark function entry
+ FAPI_INF("Entry, RESET=%s\n\n" ,
+ i_RESET? "true":"false");
+
+ do
+ {
+
+ if(i_RESET==true){
+ // manipulate external buffer
+ rc_ecmd |= io_data.clearBit(3,3);
+ }
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_reset_fence: Error 0x%x setting up data buffer to RESET all fences",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
+ }
+
+ } while(0);
+
+ FAPI_DBG("proc_reset_fence: End");
+
+ return rc;
+}
+
+//------------------------------------------------------------------------------
+// function: utility subroutine to manipulate GP4 of CFAM via MBOX
+// parameters: io_data => Input data buffer
+// i_reset_opb_switch => Input parameter (RESET_OPB_SWITCH)
+// returns: FAPI_RC_SUCCESS if operation was successful, else error
+//------------------------------------------------------------------------------
+fapi::ReturnCode proc_reset_opb( ecmdDataBufferBase & io_data,
+ bool i_RESET_OPB_SWITCH)
+{
+
+ fapi::ReturnCode rc;
+ uint32_t rc_ecmd = 0;
+
+ FAPI_DBG("proc_reset_opb: Start");
+
+ // mark function entry
+ FAPI_INF("Entry, RESET_OPB_SWITCH=%s\n\n" ,
+ i_RESET_OPB_SWITCH? "true":"false");
+
+
+ do
+ {
+
+ if(i_RESET_OPB_SWITCH==true){
+ // manipulate external buffer
+ rc_ecmd |= io_data.setBit(1);
+ }
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_reset_opb: Error 0x%x setting up data buffer to RESET both OPB switches",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
+ }
+
+ } while(0);
+
+ FAPI_DBG("proc_reset_opb: End");
+
+ return rc;
+}
+
+
+//------------------------------------------------------------------------------
+// function: utility subroutine to manipulate GP4 of CFAM via MBOX
+// // parameters: io_data => Input data buffer
+// i_fence_fsi0 => Input parameter (FENCE_FSI0)
+// returns: FAPI_RC_SUCCESS if operation was successful, else error
+//------------------------------------------------------------------------------
+fapi::ReturnCode proc_fence_fsi0( ecmdDataBufferBase & io_data,
+ bool i_FENCE_FSI0)
+{
+
+
+ fapi::ReturnCode rc;
+ uint32_t rc_ecmd = 0;
+
+ FAPI_DBG("proc_fence_fsi0: Start");
+
+ // mark function entry
+ FAPI_INF("Entry, FENCE_FSI0=%s\n\n" ,
+ i_FENCE_FSI0? "true":"false");
+
+
+ do
+ {
+
+ if(i_FENCE_FSI0==true){
+ // manipulate external buffer
+ rc_ecmd |= io_data.setBit(3);
+ }
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_fence_fsi0: Error 0x%x setting up data buffer to bring-up the fence for FSI0 port",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
+ }
+
+ } while(0);
+
+ FAPI_DBG("proc_fence_fsi0: End");
+
+ return rc;
+}
+
+
+//------------------------------------------------------------------------------
+// function: utility subroutine to manipulate GP4 of CFAM via MBOX
+// parameters: io_data => Input data buffer
+// i_fence_pib_nh => Input parameter (FENCE_PIB_NH)
+// returns: FAPI_RC_SUCCESS if operation was successful, else error
+//------------------------------------------------------------------------------
+fapi::ReturnCode proc_pib_nh( ecmdDataBufferBase & io_data,
+ bool i_FENCE_PIB_NH)
+{
+
+ fapi::ReturnCode rc;
+ uint32_t rc_ecmd = 0;
+
+ FAPI_DBG("proc_pib_nh: Start");
+
+ // mark function entry
+ FAPI_INF("Entry, FENCE_PIB_NH=%s\n\n" ,
+ i_FENCE_PIB_NH? "true":"false");
+
+
+ do
+ {
+
+ if(i_FENCE_PIB_NH==true){
+ // manipulate external buffer
+ rc_ecmd |= io_data.setBit(4);
+ }
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_pib_nh: Error 0x%x setting up data buffer to bring-up the fence for the none HOST PIB port",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
+ }
+
+ } while(0);
+
+ FAPI_DBG("proc_pib_nh: End");
+
+ return rc;
+}
+
+
+//------------------------------------------------------------------------------
+// function: utility subroutine to manipulate GP4 of CFAM via MBOX
+// parameters: io_data => Input data buffer
+// i_fence_pib_h => Input parameter (FENCE_PIB_H)
+// returns: FAPI_RC_SUCCESS if operation was successful, else error
+//------------------------------------------------------------------------------
+fapi::ReturnCode proc_pib_h( ecmdDataBufferBase & io_data,
+ bool i_FENCE_PIB_H)
+{
+
+
+ fapi::ReturnCode rc;
+ uint32_t rc_ecmd = 0;
+
+ FAPI_DBG("proc_pib_h: Start");
+
+ // mark function entry
+ FAPI_INF("Entry, FENCE_PIB_H=%s\n\n" ,
+ i_FENCE_PIB_H? "true":"false");
+
+
+ do
+ {
+
+ if(i_FENCE_PIB_H==true){
+ // manipulate external buffer
+ rc_ecmd |= io_data.setBit(5);
+ FAPI_DBG("data set bit done");
+ }
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_pib_h: Error 0x%x setting up data buffer to bring-up the fence for the HOST PIB port",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
+ }
+
+ } while(0);
+
+ FAPI_DBG("proc_pib_h: End");
+
+ return rc;
+}
+
+//------------------------------------------------------------------------------
+// function: utility subroutine to manipulate GP4 of CFAM via MBOX
+// parameters: io_data => Input data buffer
+// i_fence_fsi1 => Input parameter (FENCE_FSI1)
+// returns: FAPI_RC_SUCCESS if operation was successful, else error
+//------------------------------------------------------------------------------
+fapi::ReturnCode proc_fence_fsi1( ecmdDataBufferBase & io_data,
+ bool i_FENCE_FSI1)
+{
+
+ // return codes
+ uint32_t rc_ecmd = 0;
+ fapi::ReturnCode rc;
+
+
+ FAPI_DBG("proc_fence_fsi1: Start");
+
+ // mark function entry
+ FAPI_INF("Entry, FENCE_FSI1=%s\n\n" ,
+ i_FENCE_FSI1? "true":"false");
+
+ do
+ {
+
+ if(i_FENCE_FSI1==true){
+ // manipulate external buffer
+ rc_ecmd |= io_data.setBit(6);
+ }
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_fence_fsi1: Error 0x%x setting up data buffer to bring-up the fence for the FSI-1 port",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
+ }
+
+ } while(0);
+
+ FAPI_DBG("proc_fence_fsi1: End");
+
+ return rc;
+}
+
+//------------------------------------------------------------------------------
+// function: utility subroutine to manipulate GP4 of CFAM via MBOX
+// parameters: io_data => Input data buffer
+// i_fence_pib_sw1 => Input parameter (FENCE_PIB_SW1)
+// returns: FAPI_RC_SUCCESS if operation was successful, else error
+//------------------------------------------------------------------------------
+fapi::ReturnCode proc_pib_sw1( ecmdDataBufferBase & io_data ,
+ bool i_FENCE_PIB_SW1)
+{
+
+ fapi::ReturnCode rc;
+ uint32_t rc_ecmd = 0;
+
+ FAPI_DBG("proc_pib_sw1: Start");
+
+ // mark function entry
+ FAPI_INF("Entry, FENCE_PIB_SW1=%s\n\n" ,
+ i_FENCE_PIB_SW1? "true":"false");
+
+// // temporary for debug only
+// if (i_FENCE_PIB_SW1==true) { FAPI_DBG(" Debug only, print: FENCE_PIB_SW1==true ");}
+// else { FAPI_DBG(" Debug only, print: FENCE_PIB_SW1==false ") ; }
+
+
+ do
+ {
+
+ if(i_FENCE_PIB_SW1==true){
+ // manipulate external buffer
+ rc_ecmd |= io_data.setBit(7);
+ }
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_pib_sw1: Error 0x%x setting up data buffer to bring-up the PIB_SW1 fence",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
+ }
+
+ } while(0);
+
+ FAPI_DBG("proc_pib_sw1: End");
+
+ return rc;
+}
+//------------------------------------------------------------------------------
+// Hardware Procedure
+//------------------------------------------------------------------------------
+fapi::ReturnCode proc_switch_cfsim(const fapi::Target& i_target,
+ bool RESET,
+ bool RESET_OPB_SWITCH,
+ bool FENCE_FSI0,
+ bool FENCE_PIB_NH,
+ bool FENCE_PIB_H,
+ bool FENCE_FSI1,
+ bool FENCE_PIB_SW1)
+{
+ fapi::ReturnCode rc;
+ ecmdDataBufferBase manipulate(64);
+
+ // mark HWP entry
+ FAPI_INF("proc_switch_cfsim: Entering ...");
+
+ do
+ {
+ rc = fapiGetScom(i_target, MBOX_FSIGP4_0x00050013, manipulate);
+ if (rc)
+ {
+ FAPI_ERR("proc_switch_cfsim: fapiGetScom error (MBOX_FSIGP4_0x00050013)");
+ break;
+ }
+
+ // start manipulation based on parsed inputs
+
+ FAPI_DBG("Starting manipulating the fences ...");
+
+ rc = proc_reset_fence(
+ manipulate,
+ RESET);
+ if (rc)
+ {
+ break;
+ }
+
+ rc = proc_reset_opb(
+ manipulate,
+ RESET_OPB_SWITCH);
+ if (rc)
+ {
+ break;
+ }
+
+ rc = proc_fence_fsi0(
+ manipulate,
+ FENCE_FSI0);
+ if (rc)
+ {
+ break;
+ }
+
+ rc = proc_pib_nh(
+ manipulate,
+ FENCE_PIB_NH);
+ if (rc)
+ {
+ break;
+ }
+
+ rc = proc_pib_h(
+ manipulate,
+ FENCE_PIB_H);
+ if (rc)
+ {
+ break;
+ }
+
+ rc = proc_fence_fsi1(
+ manipulate,
+ FENCE_FSI1);
+ if (rc)
+ {
+ break;
+ }
+
+ rc = proc_pib_sw1(
+ manipulate,
+ FENCE_PIB_SW1);
+ if (rc)
+ {
+ break;
+ }
+
+ FAPI_DBG("proc_switch_cfsim: manipulating the fences done.");
+
+
+ rc = fapiPutScom(i_target, MBOX_FSIGP4_0x00050013, manipulate);
+ if (rc)
+ {
+ FAPI_ERR("proc_switch_cfsim: fapiPutScom error (MBOX_FSIGP4_0x00050013)");
+ break;
+ }
+
+
+
+ } while (0); // end do
+
+ // mark function exit
+ FAPI_INF("proc_switch_cfsim: Exiting ...");
+ return rc;
+} // end FAPI procedure proc_switch_cfsim
+
+} // extern "C"
+/* Local Variables: */
+/* c-basic-offset: 4 */
+/* End: */
diff --git a/src/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.H b/src/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.H
new file mode 100755
index 000000000..cf7e211f9
--- /dev/null
+++ b/src/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.H
@@ -0,0 +1,110 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/hwpf/hwp/core_activate/proc_switch_cfsim/proc_switch_cfsim.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012 */
+/* */
+/* 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: proc_switch_cfsim.H,v 1.3 2012/05/03 10:41:52 rkoester Exp $
+// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_switch_cfsim.H,v $
+//------------------------------------------------------------------------------
+// *|
+// *! (C) Copyright International Business Machines Corp. 2011
+// *! All Rights Reserved -- Property of IBM
+// *! *** IBM Confidential ***
+// *|
+// *! TITLE : p8_switch_cfsim.H
+// *! DESCRIPTION : (FAPI)
+// *!
+// *! OWNER NAME : Ralph Koester Email: rkoester@de.ibm.com
+// *! BACKUP NAME : Gebhard Weber Email: gweber@de.ibm.com
+// *!
+// *! ADDITIONAL COMMENTS :
+// *!
+// *! this is a function pointer of p8_switch_cfsim.C
+// *!
+//------------------------------------------------------------------------------
+
+#ifndef _P8_SWITCH_CFSIM_H_
+#define _P8_SWITCH_CFSIM_H_
+
+//------------------------------------------------------------------------------
+// Includes
+//------------------------------------------------------------------------------
+
+#include <fapi.H>
+#include "p8_scom_addresses.H"
+
+
+//------------------------------------------------------------------------------
+// Structure definitions
+//------------------------------------------------------------------------------
+
+// function pointer typedef definition for HWP call support
+
+typedef fapi::ReturnCode
+(*proc_switch_cfsim_FP_t)(const fapi::Target&, bool, bool, bool, bool, bool,
+ bool, bool);
+
+
+
+
+//------------------------------------------------------------------------------
+// Constant definitions
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+// Function prototype
+//------------------------------------------------------------------------------
+
+
+extern "C"
+{
+
+
+/**
+ * @brief access GP4 of CFAM via MBOX
+ *
+ * @param[in] i_target Processor Chip Target (Murano, Venice)
+ * @param[in] RESET True if all fences should be reset
+ * @param[in] RESETOPB Reset both OPB switches
+ * @param[in] FENCEFSI0 Fence port FSI-0
+ * @param[in] FENCEPIBnh Fence PIB none HOST PIB port
+ * @param[in] FENCEPIBh Fence HOST PIB port
+ * @param[in] FENCEFSI1 Fence Port FSI-1
+ * @param[in] FENCEPIBSW1 fence PIB por
+ *
+ * @return ReturnCode
+ */
+
+fapi::ReturnCode proc_switch_cfsim(const fapi::Target& i_target,
+ bool i_RESET,
+ bool i_RESET_OPB_SWITCH,
+ bool i_FENCE_FSI0,
+ bool i_FENCE_PIB_NH,
+ bool i_FENCE_PIB_H,
+ bool i_FENCE_FSI1,
+ bool i_FENCE_PIB_SW1);
+
+} // extern "C"
+
+
+#endif // _PROC_SWITCH_CFSIM_H_
+
+
OpenPOWER on IntegriCloud