summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/occ/occ_procedures/p8_oha_init.C
diff options
context:
space:
mode:
authorAdam Muhle <armuhle@us.ibm.com>2013-04-26 10:07:20 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-05-15 12:57:32 -0500
commit722ff9bff1f0d7830ef166822e32500accc421f9 (patch)
treea20c45f23d8433cf70cc73898177318b0da57d20 /src/usr/hwpf/hwp/occ/occ_procedures/p8_oha_init.C
parentcdf07e157ef6173e5b4d1f3f39556ffad2884d0e (diff)
downloadtalos-hostboot-722ff9bff1f0d7830ef166822e32500accc421f9.tar.gz
talos-hostboot-722ff9bff1f0d7830ef166822e32500accc421f9.zip
AVP OCC Enable & Procedure Refresh
Refreshed OCC Procedures Enabled OCC in AVP mode for all processors Merged SLW and OCC to common HOMER image RTC:50987 Change-Id: I08d9128dfcb572367c145ee0296a48292584a480 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4340 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/occ/occ_procedures/p8_oha_init.C')
-rwxr-xr-xsrc/usr/hwpf/hwp/occ/occ_procedures/p8_oha_init.C1105
1 files changed, 577 insertions, 528 deletions
diff --git a/src/usr/hwpf/hwp/occ/occ_procedures/p8_oha_init.C b/src/usr/hwpf/hwp/occ/occ_procedures/p8_oha_init.C
index 303aef3d4..a524b71a4 100755
--- a/src/usr/hwpf/hwp/occ/occ_procedures/p8_oha_init.C
+++ b/src/usr/hwpf/hwp/occ/occ_procedures/p8_oha_init.C
@@ -20,25 +20,8 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-/* begin_generated_IBM_copyright_prolog */
-/* */
-/* This is an automatically generated copyright prolog. */
-/* After initializing, DO NOT MODIFY OR MOVE */
-/* --------------------------------------------------------------- */
-/* IBM Confidential */
-/* */
-/* Licensed Internal Code Source Materials */
-/* */
-/* (C)Copyright IBM Corp. 2014, 2014 */
-/* */
-/* 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. */
-/* -------------------------------------------------------------- */
-/* */
-/* end_generated_IBM_copyright_prolog */
-// $Id: p8_oha_init.C,v 1.3 2012/10/04 10:23:00 rmaier Exp $
-// $Source: /afs/awd.austin.ibm.com/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_oha_init.C,v $
+// $Id: p8_oha_init.C,v 1.8 2013/03/26 12:13:04 pchatnah Exp $
+// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_oha_init.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2011
// *! All Rights Reserved -- Property of IBM
@@ -47,7 +30,7 @@
// *! OWNER NAME: Ralf Maier Email: ralf.maier@de.ibm.com
// *!
// *! General Description:
-// *!
+// *!
// *! The purpose of this procedure is to do a initial setup of OHA
// *!
// *! Procedure Prereq:
@@ -86,16 +69,9 @@
/// \version --------------------------------------------------------------------------
/// \version 1.4 rmaier 03/13/12 Added modes-structure
/// \version --------------------------------------------------------------------------
-/// \version 1.0 rmaier 12/01/11 Initial Version
+/// \version 1.0 rmaier 12/01/11 Initial Version
/// \version ---------------------------------------------------------------------------
///
-///
-///
-///
-///
-///
-///
-///
/// High-level procedure flow:
///
/// \verbatim
@@ -104,43 +80,41 @@
/// - completed istep procedure
///
///
-/// loop over all valid chiplets {
-///
-/// Setup aiss hang time in oha_mode_reg
-/// set aiss_timeout to max -- oha_mode_reg (11:14) , ADR 1002000D (SCOM)
-/// -- 9 => longest time 512 ms
-/// Setup low activity in oha_low_activity_detect_mode_reg
-/// -- oha_low_activity_detect_mode_reg, ADR 10020003 (SCOM)
-/// \todo when should we enable the low activity detection or just setup the ranges??
-/// set lad_enable = 1??
-/// set lad_entry = 16 -- bit index of a 24 bit counter based on base counter 0: longest, 23: shortest interval
-/// set lad_exit = 17 -- bit index of a 24 bit counter based on base counter 0: longest, 23: shortest interval
-///
-///
-/// Setup Power Proxy Trace in activity_sample_mode_reg
-/// set ppt_int_timer_select -- activity_sample_mode_reg (36:37) ADR 10020000 (SCOM)
-/// -- select precounter for ppt timer ( 0=0.25us, 1=0.5us, 2=1us, 3=2us )
-///
/// if PM_CONFIG {
-///
-/// convert_ppt_time() - Convert Power Proxy Trace Time to Power Proxy Trace Time Select and Match feature attributes
-/// With ATTR_PM_POWER_PROXY_TRACE_TIMER (binary in nanoseconds) to produce ATTR_PM_PPT_TIMER_MATCH_VALUE and ATTR_PM_PPT_TIMER_TICK
-/// 0=0.25us , 1=0.5us, 2=1us, and 3=2us
+///
+/// convert_ppt_time() - Convert Power Proxy Trace Time to Power Proxy Trace Time Select and Match feature attributes
+/// With ATTR_PM_POWER_PROXY_TRACE_TIMER (binary in nanoseconds) to produce ATTR_PM_PPT_TIMER_MATCH_VALUE and ATTR_PM_PPT_TIMER_TICK
+/// 0=0.25us , 1=0.5us, 2=1us, and 3=2us
///
/// else if PM_INIT {
+/// loop over all valid chiplets {
+/// Check if OHA is accessible as chiplet may not be enabled or are in winkle
///
-/// Timer settings if not able to be done in the init file
-/// - PPT timer
-/// - AISS hang timer
+/// Setup aiss hang time in oha_mode_reg
+/// Set aiss_timeout to max -- oha_mode_reg (11:14) , ADR 1002000D (SCOM)
+/// -- 9 => longest time 512 ms
+/// Setup low activity in oha_low_activity_detect_mode_reg
+/// -- oha_low_activity_detect_mode_reg, ADR 10020003 (SCOM)
+/// \todo when should we enable the low activity detection or just setup the ranges??
+/// Set lad_enable = 1??
+/// Set lad_entry = 16 -- bit index of a 24 bit counter based on base counter 0: longest, 23: shortest interval
+/// Set lad_exit = 17 -- bit index of a 24 bit counter based on base counter 0: longest, 23: shortest interval
///
-/// } else if PM_RESET {
///
-/// AISS reset
+/// Setup Power Proxy Trace in activity_sample_mode_reg
+/// Set ppt_int_timer_select -- activity_sample_mode_reg (36:37) ADR 10020000 (SCOM)
+/// -- select precounter for ppt timer ( 0=0.25us, 1=0.5us, 2=1us, 3=2us )
+///
+/// )
+/// } else if PM_RESET {
+/// loop over all valid chiplets {
+/// Check if OHA is accessible as chiplet may not be enabled or are in winkle
///
+/// AISS reset
+/// }
/// } //end PM_RESET -mode
///
///
-
/// \endverbatim
///
//------------------------------------------------------------------------------
@@ -152,18 +126,15 @@
// ----------------------------------------------------------------------
// Includes
// ----------------------------------------------------------------------
-#include <fapi.H>
+
#include "p8_pm.H"
#include "p8_scom_addresses.H"
#include "p8_oha_init.H"
-
-
+#include "p8_pcb_scom_errors.H"
extern "C" {
-
-
-
+
using namespace fapi;
//------------------------------------------------------------------------------
@@ -189,12 +160,14 @@ typedef struct {
// Function definitions
// ----------------------------------------------------------------------
-// Reset function
-fapi::ReturnCode p8_oha_init_reset (const Target &i_target, uint32_t i_mode);
+// Reset function
+fapi::ReturnCode p8_oha_init_reset( const fapi::Target& i_target,
+ uint32_t i_mode);
// Config function
-fapi::ReturnCode p8_oha_init_config (const fapi::Target& i_target) ;
-// INIT
-fapi::ReturnCode p8_oha_init_init (const fapi::Target& i_target, struct_i_oha_val_init_type i_oha_val_init) ;
+fapi::ReturnCode p8_oha_init_config(const fapi::Target& i_target);
+// INIT
+fapi::ReturnCode p8_oha_init_init( const fapi::Target& i_target,
+ struct_i_oha_val_init_type i_oha_val_init);
// ----------------------------------------------------------------------
@@ -204,521 +177,597 @@ fapi::ReturnCode p8_oha_init_init (const fapi::Target& i_target, struct_i_oh
fapi::ReturnCode
p8_oha_init(const fapi::Target &i_target, uint32_t i_mode)
{
- fapi::ReturnCode rc;
-
-
-
-
-
- if ( i_mode == PM_CONFIG ) {
-
- FAPI_DBG("*************************************");
- FAPI_INF("MODE: CONFIG , Calling: p8_oha_init_config");
- FAPI_DBG("*************************************");
- rc=p8_oha_init_config(i_target);
-
- if (rc) {
- FAPI_ERR(" p8_oha_init_config failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
-
- } else if ( i_mode == PM_INIT ) {
-
-
- FAPI_DBG("*************************************");
- FAPI_INF("MODE: INIT , Calling: p8_oha_init_init");
- FAPI_DBG("*************************************");
-
- // ******************************************************************
- /// \todo should this values be attributes?? The get those attributes here
- //#ifndef ATTRIBUTES_AVAIL
-
- //Declare parms struct
- struct_i_oha_val_init_type i_oha_val_init;
-
- //Assign values to parms in struct
- // should come from MRWB
- i_oha_val_init.AISS_HANG_DETECT_TIMER_SEL = 9; // oha_mode_reg (11:14) - 0=1ms, 1=2ms, 3=4ms, ...9=512ms. others illegal
- i_oha_val_init.PPT_TIMER_SELECT = 3; // activity_sample_mode_reg (36:37) 0=0.25us, 1=0.5us, 2=1us, and 3=2us
- i_oha_val_init.LAD_ENTRY = 16;
- i_oha_val_init.LAD_EXIT = 17;
-
-
- //#else
- // FAPI_ATTR_GET("IVRMS_ENABLED", i_target,(unit8_t) ivrms_enabled); //VENICE or SALERNO
-
- //#endif
-
- // ******************************************************************
-
-
-
- rc=p8_oha_init_init(i_target, i_oha_val_init);
-
- if (rc) {
- FAPI_ERR(" p8_oha_init_init failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
-
-
- } else if ( i_mode == PM_RESET ) {
- FAPI_DBG("*************************************");
- FAPI_INF("MODE: RESET");
- FAPI_DBG("*************************************");
-
-
-
-
- //Declare parms struct
- struct_i_oha_val_init_type __attribute__((unused)) i_oha_val_init; // HACK
-
- //Assign values to parms in struct
- // should come from MRWB
- i_oha_val_init.AISS_HANG_DETECT_TIMER_SEL = 9; // oha_mode_reg (11:14) - 0=1ms, 1=2ms, 3=4ms, ...9=512ms. others illegal
- i_oha_val_init.PPT_TIMER_SELECT = 3; // activity_sample_mode_reg (36:37) 0=0.25us, 1=0.5us, 2=1us, and 3=2us
- i_oha_val_init.LAD_ENTRY = 16;
- i_oha_val_init.LAD_EXIT = 17;
-
- // ******************************************************************
- /// \todo should this values be attributes?? The get those attributes here
-
- #ifndef ATTRIBUTES_AVAIL
+ fapi::ReturnCode rc;
+ if ( i_mode == PM_CONFIG )
+ {
- #else
- // FAPI_ATTR_GET("IVRMS_ENABLED", i_target,(unit8_t) ivrms_enabled); //VENICE or SALERNO
+ FAPI_INF("<p8_oha_init> : MODE: CONFIG Calling p8_oha_init_config");
+
+ rc=p8_oha_init_config(i_target);
+ if (rc)
+ {
+ FAPI_ERR(" p8_oha_init_config failed. With rc = 0x%x", (uint32_t)rc); return rc;
+ }
- #endif
+ } else if ( i_mode == PM_INIT ) {
- // ******************************************************************
+ FAPI_INF("<p8_oha_init> : MODE: INIT Calling p8_oha_init_init");
+ //Declare parms struct
+ struct_i_oha_val_init_type i_oha_val_init;
+ //Assign values to parms in struct
+ // should come from MRWB
+ i_oha_val_init.AISS_HANG_DETECT_TIMER_SEL = 9; // oha_mode_reg (11:14) - 0=1ms, 1=2ms, 3=4ms, ...9=512ms. others illegal
+ i_oha_val_init.PPT_TIMER_SELECT = 3; // activity_sample_mode_reg (36:37) 0=0.25us, 1=0.5us, 2=1us, and 3=2us
+ i_oha_val_init.LAD_ENTRY = 16;
+ i_oha_val_init.LAD_EXIT = 17;
- //FAPI_DBG("*************************************");
- FAPI_INF("Calling: p8_oha_init_reset");
- //FAPI_DBG("*************************************");
- rc = p8_oha_init_reset( i_target, i_mode);
+ rc=p8_oha_init_init(i_target, i_oha_val_init);
+ if (rc)
+ {
+ FAPI_ERR(" p8_oha_init_init failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
- if (rc) {
- FAPI_ERR(" p8_oha_init_reset failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
+ }
+ else if ( i_mode == PM_RESET )
+ {
+
+ FAPI_INF("<p8_oha_init> : MODE: RESET Calling p8_oha_init_reset");
- } else {
- //FAPI_DBG("*************************************");
- FAPI_ERR("Unknown mode passed to p8_oha_init. Mode %x ....\n", i_mode);
- FAPI_SET_HWP_ERROR(rc, RC_PROC_OHA_CODE_BAD_MODE);
- //FAPI_DBG("*************************************");
- };
+ //Declare parms struct
+ //TODO RTC: 71328 - hack to indicate unused
+ struct_i_oha_val_init_type __attribute__((unused)) i_oha_val_init;
+ //Assign values to parms in struct
+ // should come from MRWB
+ i_oha_val_init.AISS_HANG_DETECT_TIMER_SEL = 9; // oha_mode_reg (11:14) - 0=1ms, 1=2ms, 3=4ms, ...9=512ms. others illegal
+ i_oha_val_init.PPT_TIMER_SELECT = 3; // activity_sample_mode_reg (36:37) 0=0.25us, 1=0.5us, 2=1us, and 3=2us
+ i_oha_val_init.LAD_ENTRY = 16;
+ i_oha_val_init.LAD_EXIT = 17;
+ // ******************************************************************
+ /// \todo should this values be attributes?? The get those attributes here
+ // FAPI_ATTR_GET("IVRMS_ENABLED", i_target,(unit8_t) ivrms_enabled);
+
+ rc = p8_oha_init_reset( i_target, i_mode);
+ if (rc)
+ {
+ FAPI_ERR(" p8_oha_init_reset failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+ }
+ else
+ {
- return rc;
+ FAPI_ERR("<p8_oha_init> : Unknown mode %x ....\n", i_mode);
+ FAPI_SET_HWP_ERROR(rc, RC_PROC_OHA_CODE_BAD_MODE);
-}
+ };
+ return rc;
+
+}
+//------------------------------------------------------------------------------
+// OHA Config Function
+//------------------------------------------------------------------------------
fapi::ReturnCode
-p8_oha_init_config(const fapi::Target& i_target)
+p8_oha_init_config(const fapi::Target& i_target)
{
- fapi::ReturnCode rc;
-
+ fapi::ReturnCode rc;
+
uint8_t attr_pm_aiss_timeout;
uint32_t attr_pm_power_proxy_trace_timer;
uint32_t attr_pm_ppt_timer_tick;
uint32_t attr_pm_ppt_timer_match_value;
+
+ FAPI_INF("<p8_oha_init> : Executing config ....\n");
+
+ // ******************************************************************
+ // Get Attributes for OHA Timers Delay
+ // ******************************************************************
+ // set defaults if not available
+
+ attr_pm_ppt_timer_tick = 2; // Default 2: 1us
+
+ /// \todo PLAT attr ... not there yet
+ attr_pm_aiss_timeout = 5; // Default 5: 32ms
+ // rc = FAPI_ATTR_GET(ATTR_PM_AISS_TIMEOUT, &i_target, attr_pm_aiss_timeout);
+ // if (rc)
+ // {
+ // FAPI_ERR("fapiGetAttribute of ATTR_PM_AISS_TIMEOUT with rc = 0x%x", (uint32_t)rc);
+ // return rc;
+ // }
+ //
+
+ /// \todo PLAT attr ... not there yet
+ attr_pm_power_proxy_trace_timer = 64000; // Default 1us,,, 32us...64ms
+ // rc = FAPI_ATTR_GET(ATTR_PM_POWER_PROXY_TRACE_TIMER, &i_target, attr_pm_power_proxy_trace_timer);
+ // if (rc)
+ //..{
+ // FAPI_ERR("fapiGetAttribute of ATTR_PM_POWER_PROXY_TRACE_TIMER with rc = 0x%x", (uint32_t)rc);
+ // return rc;
+ // }
+ // ******************************************************************
+ // Calculate OHA timer settings
+ // ******************************************************************
- // ******************************************************************
- // Get Attributes for OHA Timers Delay
- // ******************************************************************
- // set defaults if not available
-
- attr_pm_ppt_timer_tick = 2; // Default 2: 1us
-
-
-
- /// \todo PLAT attr ... not there yet
- attr_pm_aiss_timeout = 5; // Default 5: 32ms
- // rc = FAPI_ATTR_GET(ATTR_PM_AISS_TIMEOUT, &i_target, attr_pm_aiss_timeout);
- // if (rc) { FAPI_ERR("fapiGetAttribute of ATTR_PM_AISS_TIMEOUT with rc = 0x%x", (uint32_t)rc); return rc; }
- //
-
- /// \todo PLAT attr ... not there yet
- attr_pm_power_proxy_trace_timer = 64000; // Default 1us,,, 32us...64ms
- // rc = FAPI_ATTR_GET(ATTR_PM_POWER_PROXY_TRACE_TIMER, &i_target, attr_pm_power_proxy_trace_timer);
- // if (rc) { FAPI_ERR("fapiGetAttribute of ATTR_PM_POWER_PROXY_TRACE_TIMER with rc = 0x%x", (uint32_t)rc); return rc; }
-
-
-
-
- // ******************************************************************
- // Calculate OHA timer settings
- // ******************************************************************
- //FAPI_DBG("*************************************");
- FAPI_DBG("Calculate OHA timer settings");
- //FAPI_DBG("*************************************");
- //FAPI_DBG("*************************************");
- FAPI_DBG("Calculate:");
- FAPI_DBG(" ATTR_PM_PPT_TIMER_MATCH_VALUE");
- FAPI_DBG(" ATTR_PM_PPT_TIMER_TICK");
- FAPI_DBG("using:");
- FAPI_DBG(" ATTR_PM_POWER_PROXY_TRACE_TIMER");
- //FAPI_DBG("**************************************************************************");
- FAPI_DBG(" Set ATTR_PM_AISS_TIMEOUT to 5 (32ms)");
- //FAPI_DBG("**************************************************************************");
-
-
-
-
- //
- attr_pm_ppt_timer_match_value = attr_pm_power_proxy_trace_timer / 32 ; //time in us / 32us
-
-
-
-
-
- FAPI_DBG("*************************************");
- FAPI_DBG("attr_pm_aiss_timeout : %X", attr_pm_aiss_timeout);
- FAPI_DBG("attr_pm_ppt_timer_match_value : %X", attr_pm_ppt_timer_match_value);
- FAPI_DBG("*************************************");
-
-
- // ******************************************************************
- // Set Attributes for OHA timers
- // ******************************************************************
-
- // rc = FAPI_ATTR_SET(ATTR_PM_AISS_TIMEOUT, &i_target, attr_pm_aiss_timeout);
- // if (rc) { FAPI_ERR("fapiGetAttribute of ATTR_PM_AISS_TIMEOUT with rc = 0x%x", (uint32_t)rc); return; }
+ FAPI_DBG("<p8_oha_init> : Calculate OHA timer settings");
+ FAPI_DBG("<p8_oha_init> : Calculate:");
+ FAPI_DBG("<p8_oha_init> : ATTR_PM_PPT_TIMER_MATCH_VALUE");
+ FAPI_DBG("<p8_oha_init> : ATTR_PM_PPT_TIMER_TICK");
+ FAPI_DBG("<p8_oha_init> : using:");
+ FAPI_DBG("<p8_oha_init> : ATTR_PM_POWER_PROXY_TRACE_TIMER");
+
+ FAPI_DBG("<p8_oha_init> : Set ATTR_PM_AISS_TIMEOUT to 5 (32ms)");
+ attr_pm_ppt_timer_match_value = attr_pm_power_proxy_trace_timer / 32 ; //time in us / 32us
- rc = FAPI_ATTR_SET(ATTR_PM_PPT_TIMER_MATCH_VALUE, &i_target, attr_pm_ppt_timer_match_value);
- if (rc) { FAPI_ERR("fapiSetAttribute of ATTR_PM_PPT_TIMER_MATCH_VALUE with rc = 0x%x", (uint32_t)rc); return rc; }
- rc = FAPI_ATTR_SET(ATTR_PM_PPT_TIMER_TICK, &i_target, attr_pm_ppt_timer_tick);
- if (rc) { FAPI_ERR("fapiSetAttribute of ATTR_PM_PPT_TIMER_TICK with rc = 0x%x", (uint32_t)rc); return rc; }
+ FAPI_DBG("<p8_oha_init> : attr_pm_aiss_timeout : %X", attr_pm_aiss_timeout);
+ FAPI_DBG("<p8_oha_init> : attr_pm_ppt_timer_match_value : %X", attr_pm_ppt_timer_match_value);
+ // ******************************************************************
+ // Set Attributes for OHA timers
+ // ******************************************************************
- return rc;
+ // rc = FAPI_ATTR_SET(ATTR_PM_AISS_TIMEOUT, &i_target, attr_pm_aiss_timeout);
+ // if (rc) { FAPI_ERR("fapiGetAttribute of ATTR_PM_AISS_TIMEOUT with rc = 0x%x", (uint32_t)rc); return; }
+ rc = FAPI_ATTR_SET(ATTR_PM_PPT_TIMER_MATCH_VALUE, &i_target, attr_pm_ppt_timer_match_value);
+ if (rc)
+ {
+ FAPI_ERR("fapiSetAttribute of ATTR_PM_PPT_TIMER_MATCH_VALUE with rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+
+ rc = FAPI_ATTR_SET(ATTR_PM_PPT_TIMER_TICK, &i_target, attr_pm_ppt_timer_tick);
+ if (rc)
+ {
+ FAPI_ERR("fapiSetAttribute of ATTR_PM_PPT_TIMER_TICK with rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+
+ FAPI_INF("");
+ FAPI_INF("<p8_oha_init> : Finished config ....\n");
+
+ return rc;
+
} //end CONFIG
-
-
-
+//------------------------------------------------------------------------------
+// OHA Init Function
+//------------------------------------------------------------------------------
fapi::ReturnCode
-p8_oha_init_init(const fapi::Target& i_target, struct_i_oha_val_init_type i_oha_val_init)
+p8_oha_init_init(const fapi::Target& i_target, struct_i_oha_val_init_type i_oha_val_init)
{
fapi::ReturnCode rc;
-
- ecmdDataBufferBase data(64);
- ecmdDataBufferBase mask(64);
-
- std::vector<fapi::Target> l_chiplets;
- std::vector<Target>::iterator itr;
-
-
- // Variables
-//TODO RTC: 68461 - refresh procedures uint32_t c = 0 ;
uint32_t l_rc;
+
+ ecmdDataBufferBase data(64);
+ ecmdDataBufferBase mask(64);
+
+ std::vector<fapi::Target> l_exChiplets;
+// std::vector<Target>::iterator itr;
+ uint8_t l_functional = 0;
+ uint8_t l_ex_number = 0;
+
+ uint8_t attr_pm_aiss_timeout;
+ uint32_t attr_pm_tod_pulse_count_match_val = 1024;
+ uint32_t attr_pm_ppt_timer_tick;
+ uint32_t attr_pm_ppt_timer_match_value;
+
+ FAPI_INF("<p8_oha_init> : Executing init ....\n");
-
- uint8_t attr_pm_aiss_timeout;
- uint32_t attr_pm_ppt_timer_tick;
- uint32_t attr_pm_ppt_timer_match_value;
-
- FAPI_INF("");
- //FAPI_DBG("********* ******************* *********");
- FAPI_INF("Executing ....p8_oha_init");
- //FAPI_DBG("********* ******************* *********");
- FAPI_INF("");
-
-
-
-
- rc = fapiGetChildChiplets (i_target, TARGET_TYPE_EX_CHIPLET, l_chiplets); if (rc) return rc;
- FAPI_DBG(" chiplet vector size => %u", l_chiplets.size());
-
-
-
-
- //FAPI_DBG("***********************************************");
- FAPI_INF(" Welcome to p8_oha_init INIT-mode ");
- //FAPI_DBG("***********************************************");
-
-
-
- // ******************************************************************
- // Get Attributes for OHA Timers Delay
+ // ******************************************************************
+ // Get Attributes for OHA Timers Delay
+ // ******************************************************************
+ #ifndef ATTRIBUTES_AVAIL
// ******************************************************************
- #ifndef ATTRIBUTES_AVAIL
- // ******************************************************************
- // set defaults if not available
- attr_pm_ppt_timer_tick = 2; // Default 2: 1us
- attr_pm_ppt_timer_match_value = 0x7FF; // Default 0x7FF: 64ms
- attr_pm_aiss_timeout = 5; // Default 5: 32ms
- #else
-/// \todo PLAT attr ... not there yet
- //rc = FAPI_ATTR_GET(ATTR_PM_AISS_TIMEOUT, &i_target, attr_pm_aiss_timeout);
- //if (rc) { FAPI_ERR("fapiGetAttribute of ATTR_PM_AISS_TIMEOUT with rc = 0x%x", (uint32_t)rc); return rc; }
- rc = FAPI_ATTR_GET(ATTR_PM_PPT_TIMER_TICK, &i_target, attr_pm_ppt_timer_tick);
- if (rc) { FAPI_ERR("fapiGetAttribute of ATTR_PM_PPT_TIMER_TICK with rc = 0x%x", (uint32_t)rc); return rc; }
- rc = FAPI_ATTR_GET(ATTR_PM_PPT_TIMER_MATCH_VALUE, &i_target, attr_pm_ppt_timer_match_value);
- if (rc) { FAPI_ERR("fapiGetAttribute of ATTR_PM_PPT_TIMER_MATCH_VALUE with rc = 0x%x", (uint32_t)rc); return rc; }
- #endif
-
-
-
+ // set defaults if not available
+ attr_pm_ppt_timer_tick = 2; // Default 2: 1us
+ attr_pm_ppt_timer_match_value = 0x7FF; // Default 0x7FF: 64ms
+ attr_pm_aiss_timeout = 5; // Default 5: 32ms
+ #else
+ /// \todo PLAT attr ... not there yet
+ //rc = FAPI_ATTR_GET(ATTR_PM_AISS_TIMEOUT, &i_target, attr_pm_aiss_timeout);
+ //if (rc)
+ //{
+ // FAPI_ERR("fapiGetAttribute of ATTR_PM_AISS_TIMEOUT with rc = 0x%x", (uint32_t)rc);
+ // return rc;
+ //}
+
+ rc = FAPI_ATTR_GET(ATTR_PM_PPT_TIMER_TICK, &i_target, attr_pm_ppt_timer_tick);
+ if (rc)
+ {
+ FAPI_ERR("fapiGetAttribute of ATTR_PM_PPT_TIMER_TICK with rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+ rc = FAPI_ATTR_GET(ATTR_PM_PPT_TIMER_MATCH_VALUE, &i_target, attr_pm_ppt_timer_match_value);
+ if (rc)
+ {
+ FAPI_ERR("fapiGetAttribute of ATTR_PM_PPT_TIMER_MATCH_VALUE with rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+ #endif
+
// ******************************************************************
// initialize all oha_reg with scan-zero values upfront
// ******************************************************************
-
-
-
- for (itr = l_chiplets.begin(); itr != l_chiplets.end(); itr++){
-
-
- // HACK - FAPI_DBG("Content Loop Variable C : %d ", c);
-
-
-
- // ******************************************************************
- // AISS hang timer setup
- // ******************************************************************
- // ******************************************************************
-
- // - set aiss_timeout to max time
- // ******************************************************************
- //FAPI_DBG("**********************************************");
- FAPI_INF(" Setup aiss hang time in oha_mode_reg 1002000D");
- //FAPI_DBG("**********************************************");
-
- // Read register content
- rc = fapiGetScom( (*itr), EX_OHA_MODE_REG_RWx1002000D , data );
- if (rc) {FAPI_ERR("fapiGetScom(EX_OHA_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc); return rc; }
-
- FAPI_DBG ("Content of EX_OHA_MODE_REG_0x1002000D : %016llX", data.getDoubleWord(0));
-
-
-
-
- //data.flushTo0();
- l_rc = data.insertFromRight(attr_pm_aiss_timeout ,11,4);
- if (l_rc) { FAPI_ERR("Bit operation failed. With rc = 0x%x", (uint32_t)l_rc); rc.setEcmdError(l_rc); return rc; }
-
- rc = fapiPutScom( (*itr), EX_OHA_MODE_REG_RWx1002000D , data );
- if (rc) {
- FAPI_ERR("fapiPutScom(EX_OHA_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
-
-
-
-
- // ******************************************************************
- // Low Activity Detect (LAD) setup
- // ******************************************************************
- // ******************************************************************
- // - enable LAD
- // - set LAD for entry
- // - set LAD for exit
- // ******************************************************************
- //FAPI_DBG("**********************************************************************************************");
- FAPI_INF(" Setup Low Activity Detect (LAD) in oha_low_activity_detect_mode_reg 10020003, but NOT ENABLED");
- //FAPI_DBG("**********************************************************************************************");
-
- // Read register content
- //if (VERBOSE) {
- rc = fapiGetScom( (*itr), EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003 , data );
- if (rc) { FAPI_ERR("fapiGetScom(EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003) failed. With rc = 0x%x", (uint32_t)rc); return rc; }
- FAPI_DBG(" Pre write content of EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003 : %016llX", data.getDoubleWord(0));
- //}
-
- //
- l_rc = data.setByte(0, i_oha_val_init.LAD_ENTRY); // 16
- l_rc |= data.setByte(1, i_oha_val_init.LAD_EXIT); // 17
- l_rc |= data.shiftRight(1); // LAD entry/exit starts at bit 1
- l_rc |= data.clearBit(0);
- if (l_rc) { FAPI_ERR("Bit operation failed. With rc = 0x%x", (uint32_t)l_rc); rc.setEcmdError(l_rc); return rc; }
- //FAPI_DBG(" !!!!!!!!!!!!!!!!!!!!!!returncode : %d", rc);
-
-
-
-
-
- rc = fapiPutScom((*itr), EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003 , data );
- if (rc) {
- FAPI_ERR("fapiGetScom(EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
-
- // if debug mode read back
- //if (VERBOSE) {
- // rc = fapiGetScom((*itr), EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003, data); if (rc) return rc;
- // FAPI_DBG(" Post write content of EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003 : %016llX", data.getDoubleWord(0));
- //}
- FAPI_INF ("Done LAD setup. LAD Disabled " );
-
-
-
- // ******************************************************************
- // Power Proxy Trace (PPT) setup
- // ******************************************************************
- // ******************************************************************
- // - set ppt_timer_select
- // - set ppt_trace_timer_match_val
- // ******************************************************************
- //FAPI_DBG("********************************************************************************");
- FAPI_INF(" Setup Power Proxy Trace (PPT) in oha_activity_sample_mode_reg 10020000");
- //FAPI_DBG("********************************************************************************");
-
- // Read register content
- rc = fapiGetScom( (*itr), EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000 , data );
- if (rc) {
- FAPI_ERR("fapiGetScom(EX_OHA_ACTIVITY_SAMPLE_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
- FAPI_DBG(" Pre write content of EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000 : %016llX", data.getDoubleWord(0));
-
-
- // set ppt_int_timer_select to longest interval "11" = 2us
- //l_rc = data.setBit(36);
- //if (l_rc) { FAPI_ERR("Bit operation failed."); FAPI_SET_HWP_ERROR(rc, RC_PROC_OHA_CODE_BITOP_FAILED); }
- //l_rc = data.setBit(37);
- //if (l_rc) { FAPI_ERR("Bit operation failed."); FAPI_SET_HWP_ERROR(rc, RC_PROC_OHA_CODE_BITOP_FAILED); }
-
- l_rc = data.insertFromRight(attr_pm_ppt_timer_match_value ,24,11);
- l_rc |= data.insertFromRight(attr_pm_ppt_timer_tick ,36,2);
- if (l_rc) { FAPI_ERR("Bit operation failed. With rc = 0x%x", (uint32_t)l_rc); rc.setEcmdError(l_rc); return rc; }
-
-
-
- rc = fapiPutScom((*itr), EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000 , data );
- if (rc) {
- FAPI_ERR("fapiGetScom(EX_OHA_ACTIVITY_SAMPLE_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
-
- // if debug mode read back
- //if (VERBOSE) {
- rc = fapiGetScom((*itr), EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000, data); if (rc) return rc;
- FAPI_DBG(" Post write content of EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000 : %016llX", data.getDoubleWord(0));
- //}
- FAPI_INF ("Done PPT timer setup." );
+
+ rc = fapiGetChildChiplets ( i_target,
+ TARGET_TYPE_EX_CHIPLET,
+ l_exChiplets,
+ TARGET_STATE_FUNCTIONAL);
+ if (rc)
+ {
+ FAPI_ERR("Error from fapiGetChildChiplets!");
+ return rc;
+ }
+ FAPI_DBG("<p8_oha_init> : Number of chiplets => %u", l_exChiplets.size());
+
+ // Iterate through the returned chiplets
+ //for (itr = l_exChiplets.begin(); itr != l_exChiplets.end(); itr++)
+ for (uint8_t c=0; c < l_exChiplets.size(); c++)
+ {
+ // Determine if it's functional
+ //rc = FAPI_ATTR_GET(ATTR_FUNCTIONAL, itr, l_functional);
+ rc = FAPI_ATTR_GET(ATTR_FUNCTIONAL, &l_exChiplets[c], l_functional);
+ if (rc)
+ {
+ FAPI_ERR("fapiGetAttribute of ATTR_FUNCTIONAL error");
+ break;
+ }
+
+ // With TARGET_STATE_FUNCTIONAL above, this check may be redundant
+ if ( l_functional )
+ {
+ // Get the core number
+ //rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, itr, c);
+ rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, &l_exChiplets[c], l_ex_number);
+ if (rc)
+ {
+ FAPI_ERR("fapiGetAttribute of ATTR_CHIP_UNIT_POS error");
+ break;
+ }
+
+ FAPI_DBG("<p8_oha_init> : Processing core : %d ", l_ex_number);
+
+ // ******************************************************************
+ // AISS hang timer setup
+ // ******************************************************************
+ // - set aiss_timeout to max time
+ // ******************************************************************
+ //FAPI_DBG("**********************************************");
+ FAPI_INF(" Setup aiss hang time in oha_mode_reg 1002000D");
+ //FAPI_DBG("**********************************************");
+
+ // Read register content
+ //rc = fapiGetScom( (*itr), EX_OHA_MODE_REG_RWx1002000D , data );
+ rc = fapiGetScom( l_exChiplets[c], EX_OHA_MODE_REG_RWx1002000D , data );
+ if (rc)
+ {
+ FAPI_ERR("fapiGetScom(EX_OHA_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+
+ FAPI_DBG ("Content of EX_OHA_MODE_REG_0x1002000D : %016llX", data.getDoubleWord(0));
+
+ //data.flushTo0();
+ l_rc = data.insertFromRight(attr_pm_aiss_timeout ,11,4);
+ l_rc |= data.insertFromRight(attr_pm_tod_pulse_count_match_val ,17,14);
+ if (l_rc)
+ {
+ FAPI_ERR("Bit operation failed. With rc = 0x%x", (uint32_t)l_rc); rc.setEcmdError(l_rc);
+ return rc;
+ }
+
+ // rc = fapiPutScom( (*itr), EX_OHA_MODE_REG_RWx1002000D , data );
+ rc = fapiPutScom( l_exChiplets[c], EX_OHA_MODE_REG_RWx1002000D , data );
+ if (rc)
+ {
+ FAPI_ERR("fapiPutScom(EX_OHA_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc); return rc;
+ }
+
+
+ // ******************************************************************
+ // Low Activity Detect (LAD) setup
+ // ******************************************************************
+ // ******************************************************************
+ // - enable LAD
+ // - set LAD for entry
+ // - set LAD for exit
+ // ******************************************************************
+ //FAPI_DBG("**********************************************************************************************");
+ FAPI_INF(" Setup Low Activity Detect (LAD) in oha_low_activity_detect_mode_reg 10020003, but NOT ENABLED");
+ //FAPI_DBG("**********************************************************************************************");
+
+ // Read register content
+ // rc = fapiGetScom( (*itr), EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003 , data );
+ rc = fapiGetScom( l_exChiplets[c], EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003 , data );
+ if (rc)
+ {
+ FAPI_ERR("fapiGetScom(EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003) failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+ FAPI_DBG(" Pre write content of EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003 : %016llX", data.getDoubleWord(0));
+
+ l_rc = data.setByte(0, i_oha_val_init.LAD_ENTRY); // 16
+ l_rc |= data.setByte(1, i_oha_val_init.LAD_EXIT); // 17
+ l_rc |= data.shiftRight(1); // LAD entry/exit starts at bit 1
+ l_rc |= data.clearBit(0);
+ if (l_rc)
+ {
+ FAPI_ERR("Bit operation failed. With rc = 0x%x", (uint32_t)l_rc);
+ rc.setEcmdError(l_rc);
+ return rc;
+ }
+
+ // rc = fapiPutScom((*itr), EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003 , data );
+ rc = fapiPutScom( l_exChiplets[c], EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG_RWx10020003 , data );
+ if (rc)
+ {
+ FAPI_ERR("fapiGetScom(EX_OHA_LOW_ACTIVITY_DETECT_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+
+ FAPI_INF ("Done LAD setup. LAD Disabled " );
+
+ // ******************************************************************
+ // Power Proxy Trace (PPT) setup
+ // ******************************************************************
+ // ******************************************************************
+ // - set ppt_timer_select
+ // - set ppt_trace_timer_match_val
+ // ******************************************************************
+ //FAPI_DBG("********************************************************************************");
+ FAPI_INF(" Setup Power Proxy Trace (PPT) in oha_activity_sample_mode_reg 10020000");
+ //FAPI_DBG("********************************************************************************");
+
+ // Read register content
+ // rc = fapiGetScom( (*itr), EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000 , data );
+ rc = fapiGetScom( l_exChiplets[c], EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000 , data );
+ if (rc)
+ {
+ FAPI_ERR("fapiGetScom(EX_OHA_ACTIVITY_SAMPLE_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+ FAPI_DBG(" Pre write content of EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000 : %016llX", data.getDoubleWord(0));
+
+
+ // set ppt_int_timer_select to longest interval "11" = 2us
+ //l_rc = data.setBit(36);
+ //if (l_rc)
+ //{
+ // FAPI_ERR("Bit operation failed.");
+ // FAPI_SET_HWP_ERROR(rc, RC_PROC_OHA_CODE_BITOP_FAILED);
+ //}
+ //l_rc = data.setBit(37);
+ //if (l_rc)
+ //{
+ // FAPI_ERR("Bit operation failed.");
+ // FAPI_SET_HWP_ERROR(rc, RC_PROC_OHA_CODE_BITOP_FAILED);
+ //}
+
+ l_rc = data.insertFromRight(attr_pm_ppt_timer_match_value ,24,11);
+ l_rc |= data.insertFromRight(attr_pm_ppt_timer_tick ,36,2);
+ if (l_rc)
+ {
+ FAPI_ERR("Bit operation failed. With rc = 0x%x", (uint32_t)l_rc);
+ rc.setEcmdError(l_rc);
+ return rc;
+ }
+
+ // rc = fapiPutScom((*itr), EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000 , data );
+ rc = fapiPutScom( l_exChiplets[c], EX_OHA_ACTIVITY_SAMPLE_MODE_REG_RWx10020000 , data );
+ if (rc)
+ {
+ FAPI_ERR("fapiGetScom(EX_OHA_ACTIVITY_SAMPLE_MODE_REG) failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+
+ FAPI_INF ("<p8_oha_init> : Done PPT timer setup." );
+ }
}
+
+ FAPI_INF("<p8_oha_init> : Finished init ....\n");
-
-
+
return rc;
-
+
} //end INIT
-
-ReturnCode
+//------------------------------------------------------------------------------
+// OHA Reset Function
+//------------------------------------------------------------------------------
+fapi::ReturnCode
p8_oha_init_reset(const Target &i_target, uint32_t i_mode)
{
- ReturnCode rc;
-
-//std::string PROCEDURE = "p8_oha_init"; // procedure name
-//std::string REVISION = "$Revision: 1.3 $"; // procedure CVS revision
-
-
- ecmdDataBufferBase data(64);
- ecmdDataBufferBase mask(64);
-
- std::vector<fapi::Target> l_chiplets;
- std::vector<Target>::iterator itr;
-
-
- // Variables
-//TODO RTC: 68461 - refresh procedures uint32_t c = 0 ;
- uint32_t l_rc;
-
- FAPI_DBG("");
- //FAPI_DBG("********* ******************* *********");
- FAPI_INF("Executing p8_oha_init...");
- //FAPI_DBG("********* ******************* *********");
- FAPI_DBG("");
-
-
-
-
-
-
- // rc = fapiGetExistingChiplets (i_target, TARGET_TYPE_EX_CHIPLET, l_chiplets); if (rc) return rc;
- rc = fapiGetChildChiplets (i_target, TARGET_TYPE_EX_CHIPLET, l_chiplets); if (rc) return rc;
- FAPI_DBG(" chiplet vector size => %u", l_chiplets.size());
-
-
-
-
-
-
- //FAPI_DBG("***********************************************");
- FAPI_INF(" Welcome to p8_oha_init_reset ");
- //FAPI_DBG("***********************************************");
-
-
-for (itr = l_chiplets.begin(); itr != l_chiplets.end(); itr++){
-
-
- // HACK - FAPI_DBG("Content Loop Variable C : %d ", c);
-
-
-
+ fapi::ReturnCode rc;
+ uint32_t l_rc = 0;
+
+ ecmdDataBufferBase data(64);
+ ecmdDataBufferBase mask(64);
+
+
+// std::vector<Target>::iterator itr;
+ std::vector<fapi::Target> l_exChiplets;
+ uint8_t l_functional = 0;
+ uint8_t l_ex_number = 0;
+
+
+ FAPI_INF("<p8_oha_init> : Executing reset ....\n");;
+
+ rc = fapiGetChildChiplets ( i_target,
+ TARGET_TYPE_EX_CHIPLET,
+ l_exChiplets,
+ TARGET_STATE_FUNCTIONAL);
+ if (rc)
+ {
+ FAPI_ERR("Error from fapiGetChildChiplets!");
+ return rc;
+ }
+ FAPI_DBG("<p8_oha_init> : Number of chiplets => %u", l_exChiplets.size());
+
+ // Iterate through the returned chiplets
+ //for (itr = l_exChiplets.begin(); itr != l_exChiplets.end(); itr++)
+ for (uint8_t c=0; c < l_exChiplets.size(); c++)
+ {
+ // Determine if it's functional
+ //rc = FAPI_ATTR_GET(ATTR_FUNCTIONAL, itr, l_functional);
+ rc = FAPI_ATTR_GET(ATTR_FUNCTIONAL, &l_exChiplets[c], l_functional);
+ if (rc)
+ {
+ FAPI_ERR("fapiGetAttribute of ATTR_FUNCTIONAL error");
+ break;
+ }
+
+ // With TARGET_STATE_FUNCTIONAL above, this check may be redundant
+ if ( l_functional )
+ {
+ // Get the core number
+ //rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, itr, c);
+ rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, &l_exChiplets[c], l_ex_number);
+ if (rc)
+ {
+ FAPI_ERR("fapiGetAttribute of ATTR_CHIP_UNIT_POS error");
+ break;
+ }
+
+ FAPI_DBG("<p8_oha_init> : Processing core : %d ", l_ex_number);
+
+
+
+ // --------------------------------------
+ // Check if SBE code has already cleared the OHA override.
+ // As chiplets may be enabled but offline (eg in Winkle)
+ // treat SCOM errors as off-line (eg skip it). If online
+ // and set, clear the override.
+
+ // GSS: removed as Cronus always puts a message out of (PCB_OFFLINE)
+ // even though this code is meant to handle it. As this messge
+ // can cause confusion in the lab, the check is being removed.
+ bool oha_accessible = true;
+ uint32_t fsierror = 0;
+ const uint32_t IDLE_STATE_OVERRIDE_EN = 6;
+
+
+ rc = fapiGetScom(l_exChiplets[c], EX_OHA_MODE_REG_RWx1002000D, data);
+ if(!rc.ok())
+ {
+ FAPI_ERR("Error reading EX_OHA_MODE_REG_RWx1002000D . Further debugging");
+ rc = fapiGetCfamRegister( i_target, CFAM_FSI_STATUS_0x00001007, data );
+ if(!rc.ok())
+ {
+ FAPI_ERR("Error reading CFAM FSI Status Register");
+ break;
+ }
+ FAPI_INF( "CFAM_FSI_STATUS_0x00001007: 0x%X", data.getWord(0));
+ l_rc |= data.extractToRight( &fsierror, 17, 3 );
+ if ( l_rc )
+ {
+ rc.setEcmdError(l_rc);
+ break;
+ }
+ if (fsierror == PIB_OFFLINE_ERROR)
+ {
+ FAPI_INF( "Chiplet offline error detected. Skipping OHA Override clearing");
+ oha_accessible = false;
+ }
+ else
+ {
+ FAPI_ERR("Scom reading OHA_MODE");
+ break;
+ }
+ }
+ // Process if OHA accessible.
+ if (oha_accessible)
+ {
+ if (data.isBitSet(IDLE_STATE_OVERRIDE_EN))
+ {
+
+ FAPI_INF("\tClear the OHA Idle State Override for EX %x", l_ex_number);
+ l_rc |= data.clearBit(IDLE_STATE_OVERRIDE_EN);
+ if (l_rc)
+ {
+ FAPI_ERR("Error (0x%x) setting up ecmdDataBufferBase", l_rc);
+ rc.setEcmdError(l_rc);
+ break;
+ }
+
+ rc = fapiPutScom(l_exChiplets[c], EX_OHA_MODE_REG_RWx1002000D, data);
+ if(!rc.ok())
+ {
+ FAPI_ERR("Scom error writing OHA_MODE");
+ break;
+ }
+ }
+ }
+ // End of check removal
+
+
+
+
+
+
+ FAPI_INF("Reset AISS ");
+ FAPI_INF("Write to register OHA_ARCH_IDLE_STATE_REG ");
+
+ // rc = fapiGetScom( (*itr), EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011, data);
+ rc = fapiGetScom( l_exChiplets[c], EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011, data);
+ if (rc)
+ {
+ FAPI_ERR("fapiGetScom(EX_OHA_ARCH_IDLE_STATE_REG) failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+ FAPI_DBG(" Pre write content of EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011 : %016llX", data.getDoubleWord(0) );
+
+ l_rc = data.setBit(9); //reset_idle_state_sequencer_in ... reset pulse gets generated. Not unsetting required
+ if (l_rc)
+ {
+ FAPI_ERR("Bit operation failed. With rc = 0x%x", (uint32_t)l_rc);
+ rc.setEcmdError(l_rc);
+ return rc;
+ }
+
+ // rc = fapiPutScom((*itr), EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011 , data );
+ rc = fapiPutScom( l_exChiplets[c], EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011 , data );
+ if (rc)
+ {
+ FAPI_ERR("fapiPutScom(EX_OHA_ARCH_IDLE_STATE_REG) failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+
+ // rc = fapiGetScom( (*itr), EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011, data);
+ rc = fapiGetScom( l_exChiplets[c], EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011, data);
+ if (rc) return rc;
+ FAPI_DBG(" Post write content of EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011 : %016llX", data.getDoubleWord(0) );
+ //}
+ if (rc)
+ {
+ FAPI_ERR("fapiGetScom(EX_OHA_ARCH_IDLE_STATE_REG) failed. With rc = 0x%x", (uint32_t)rc);
+ return rc;
+ }
+ }
+ else
+ {
+ FAPI_INF("<p8_oha_init> : Skipping non-functional core. Number unknown at this time!");
+ }
+ }
+
+ FAPI_INF("<p8_oha_init> : Finished reset ....\n");
-
- //FAPI_DBG("*************************************");
- FAPI_INF("Reset AISS ");
- FAPI_INF("Write to register OHA_ARCH_IDLE_STATE_REG ");
- //FAPI_DBG("*************************************");
-
-
-
- rc = fapiGetScom( (*itr), EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011, data);
- if (rc) {
- FAPI_ERR("fapiGetScom(EX_OHA_ARCH_IDLE_STATE_REG) failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
- FAPI_DBG(" Pre write content of EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011 : %016llX", data.getDoubleWord(0) );
-
- l_rc = data.setBit(9); //reset_idle_state_sequencer_in ... reset pulse gets generated. Not unsetting required
- if (l_rc) { FAPI_ERR("Bit operation failed. With rc = 0x%x", (uint32_t)l_rc); rc.setEcmdError(l_rc); return rc; }
-
- rc = fapiPutScom((*itr), EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011 , data );
- if (rc) {
- FAPI_ERR("fapiPutScom(EX_OHA_ARCH_IDLE_STATE_REG) failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
-
- // if debug mode read back
- //if (VERBOSE) {
- rc = fapiGetScom( (*itr), EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011, data); if (rc) return rc;
- FAPI_DBG(" Post write content of EX_OHA_ARCH_IDLE_STATE_REG_RWx10020011 : %016llX", data.getDoubleWord(0) );
- //}
- if (rc) {
- FAPI_ERR("fapiGetScom(EX_OHA_ARCH_IDLE_STATE_REG) failed. With rc = 0x%x", (uint32_t)rc); return rc;
- }
-
-
-
-
-
-
-}
-
-
-
- FAPI_INF("");
- FAPI_INF("Executing proc_OHA_init ....\n");
-
-
- return rc;
+ return rc;
}
-
-
-
-
-
-
-
-
} //end extern C
-
+
OpenPOWER on IntegriCloud