summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/istep09/call_fabric_io_dccal.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/isteps/istep09/call_fabric_io_dccal.C')
-rw-r--r--src/usr/isteps/istep09/call_fabric_io_dccal.C172
1 files changed, 106 insertions, 66 deletions
diff --git a/src/usr/isteps/istep09/call_fabric_io_dccal.C b/src/usr/isteps/istep09/call_fabric_io_dccal.C
index 0b49bed69..0dbfd9d48 100644
--- a/src/usr/isteps/istep09/call_fabric_io_dccal.C
+++ b/src/usr/isteps/istep09/call_fabric_io_dccal.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015 */
+/* Contributors Listed Below - COPYRIGHT 2015,2016 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -57,6 +57,13 @@
#include <targeting/common/utilFilter.H>
#include <targeting/common/trace.H>
+#include <pbusLinkSvc.H>
+#include <fapi2/target.H>
+#include <fapi2/plat_hwp_invoker.H>
+
+// HWP
+#include <p9_io_xbus_dccal.H>
+
namespace ISTEP_09
{
using namespace ISTEP;
@@ -69,9 +76,8 @@ using namespace HWAS;
//
void* call_fabric_io_dccal( void *io_pArgs )
{
- errlHndl_t l_errl = NULL;
- //@TODO RTC:134079 Port to fapi2
-/* IStepError l_StepError;
+ errlHndl_t l_errl = NULL;
+ IStepError l_StepError;
// We are not running this analog procedure in VPO
if (TARGETING::is_vpo())
@@ -84,83 +90,117 @@ void* call_fabric_io_dccal( void *io_pArgs )
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_fabric_io_dccal entry" );
- TargetPairs_t l_PbusConnections;
- TargetPairs_t::iterator l_itr;
- const uint32_t MaxBusSet = 2;
- TYPE busSet[MaxBusSet] = { TYPE_ABUS, TYPE_XBUS };
-
- // Note:
- // Due to lab tester board environment, HW procedure writer (Varkey) has
- // requested to send in one target of a time (we used to send in
- // both ends in one call). Even though they don't have to be
- // in order, we should keep the pair concept here in case we need to send
- // in a pair in the future again.
+ EDI_EI_INITIALIZATION::TargetPairs_t l_PbusConnections;
+ const uint32_t MaxBusSet = 1;
+ TYPE busSet[MaxBusSet] = { TYPE_XBUS }; // TODO RTC:152304 - add TYPE_OBUS
+
for (uint32_t ii = 0; (!l_errl) && (ii < MaxBusSet); ii++)
{
- l_errl = PbusLinkSvc::getTheInstance().getPbusConnections(
- l_PbusConnections, busSet[ii] );
-
- for (l_itr = l_PbusConnections.begin();
- l_itr != l_PbusConnections.end();
- ++l_itr)
+ l_errl = EDI_EI_INITIALIZATION::PbusLinkSvc::getTheInstance().
+ getPbusConnections(l_PbusConnections, busSet[ii]);
+ if (l_errl)
{
- const fapi::Target l_fapi_endp1_target(
- (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->first)));
- const fapi::Target l_fapi_endp2_target(
- (ii ? TARGET_TYPE_XBUS_ENDPOINT : TARGET_TYPE_ABUS_ENDPOINT),
- (const_cast<TARGETING::Target*>(l_itr->second)));
-
- //@TODO RTC:133830 call the HWP with each bus connection
- //FAPI_INVOKE_HWP( l_errl, io_dccal, l_fapi_endp1_target );
-
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : %cbus connection fabric_io_dccal. Target 0x%.8X",
- (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
- TARGETING::get_huid(l_itr->first) );
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->first).addToLog( l_errl );
+ "ERROR 0x%.8X : getPbusConnections TYPE_%cBUS returns error",
+ l_errl->reasonCode(), (ii ? 'X':'O') );
+
+ // Create IStep error log and cross reference to error that occurred
+ l_StepError.addErrorDetails( l_errl );
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl );
+ // Commit the error log
+ // Log should be deleted and set to NULL in errlCommit.
+ errlCommit(l_errl, HWPF_COMP_ID);
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- // We want to continue the training despite the error, so
- // no break
- }
+ // Don't continue with a potential bad connection set
+ break;
+ }
- //@TODO RTC:133830 call the HWP with each bus connection
- FAPI_INVOKE_HWP( l_errl, fabric_io_dccal, l_fapi_endp2_target );
+ for (const auto & l_PbusConnection: l_PbusConnections)
+ {
+ const TARGETING::Target* l_thisPbusTarget = l_PbusConnection.first;
+ const TARGETING::Target* l_connectedPbusTarget =
+ l_PbusConnection.second;
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "%s : %cbus connection fabric_io_dccal. Target 0x%.8X",
- (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'A'),
- TARGETING::get_huid(l_itr->second) );
- if ( l_errl )
- {
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_itr->second).addToLog( l_errl );
+ const fapi2::Target <fapi2::TARGET_TYPE_XBUS>
+ l_thisPbusFapi2Target(
+ (const_cast<TARGETING::Target*>(l_thisPbusTarget)));
- // Create IStep error log and cross ref error that occurred
- l_StepError.addErrorDetails( l_errl );
+ const fapi2::Target <fapi2::TARGET_TYPE_XBUS>
+ l_connectedPbusFapi2Target(
+ (const_cast<TARGETING::Target*>(l_connectedPbusTarget)));
- // Commit Error
- errlCommit( l_errl, HWPF_COMP_ID );
- // We want to continue the training despite the error, so
- // no break
- }
- }
- }
+ // group is either 0 or 1
+ uint8_t l_group = 0;
+ for (l_group = 0; l_group < 2; l_group++)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Running p9_io_xbus_dccal HWP on "
+ "this %cbus target %.8X, group %d",
+ (ii ? 'X' : 'O'),
+ TARGETING::get_huid(l_thisPbusTarget), l_group );
+
+ FAPI_INVOKE_HWP( l_errl, p9_io_xbus_dccal,
+ l_thisPbusFapi2Target, l_group );
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : %cbus connection p9_io_xbus_dccal "
+ "with group %d. Target 0x%.8X",
+ (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'O'),
+ l_group, TARGETING::get_huid(l_thisPbusTarget) );
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_thisPbusTarget).addToLog(l_errl);
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ // We want to continue the training despite the error, so
+ // no break
+ l_errl = NULL;
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Running p9_io_xbus_dccal HWP on "
+ "connected %cbus target %.8X, group %d",
+ (ii ? 'X' : 'O'),
+ TARGETING::get_huid(l_connectedPbusTarget), l_group );
+
+ // call the HWP with each bus connection
+ FAPI_INVOKE_HWP( l_errl, p9_io_xbus_dccal,
+ l_connectedPbusFapi2Target, l_group);
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "%s : %cbus connection p9_io_xbus_dccal "
+ "with group %d. Target 0x%.8X",
+ (l_errl ? "ERROR" : "SUCCESS"), (ii ? 'X' : 'O'),
+ l_group, TARGETING::get_huid(l_connectedPbusTarget) );
+ if ( l_errl )
+ {
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_connectedPbusTarget).
+ addToLog(l_errl);
+
+ // Create IStep error log and cross ref error that occurred
+ l_StepError.addErrorDetails( l_errl );
+
+ // Commit Error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ // We want to continue the training despite the error, so
+ // no break
+ l_errl = NULL;
+ }
+ } // end of groups
+ } // end of connection TYPE combinations
+ } // end of connection set loop
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_fabric_io_dccal exit" );
// end task, returning any errorlogs to IStepDisp
return l_StepError.getErrorHandle();
- */
- return l_errl;
}
+
};
OpenPOWER on IntegriCloud