diff options
| author | Prachi Gupta <pragupta@us.ibm.com> | 2015-10-23 14:45:25 -0500 |
|---|---|---|
| committer | Patrick Williams <iawillia@us.ibm.com> | 2015-12-11 15:30:26 -0600 |
| commit | 03b4d32d7d64ef2c25bb25869cf925d9afbace57 (patch) | |
| tree | eed892726db29f607c41667d9293b48b37fd3dc7 /src/usr/hwpf | |
| parent | 7e5ca24a1eec65d3fdfba811c85f6f758277313e (diff) | |
| download | talos-hostboot-03b4d32d7d64ef2c25bb25869cf925d9afbace57.tar.gz talos-hostboot-03b4d32d7d64ef2c25bb25869cf925d9afbace57.zip | |
P9 Isteps: Created directory structure for istep 11/12 wrappers
Change-Id: I6e6e9677b524ca17c156adbc5168cfaffc9b1af8
RTC:137652
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/21462
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf')
| -rw-r--r-- | src/usr/hwpf/hwp/dmi_training/dmi_training.C | 697 |
1 files changed, 0 insertions, 697 deletions
diff --git a/src/usr/hwpf/hwp/dmi_training/dmi_training.C b/src/usr/hwpf/hwp/dmi_training/dmi_training.C index bd1b37efd..7fff52cef 100644 --- a/src/usr/hwpf/hwp/dmi_training/dmi_training.C +++ b/src/usr/hwpf/hwp/dmi_training/dmi_training.C @@ -96,703 +96,6 @@ using namespace EDI_EI_INITIALIZATION; //***************************************************************** void get_dmi_io_targets(TargetPairs_t& o_dmi_io_targets); -// -// Wrapper function to call mss_getecid -// -void* call_mss_getecid( void *io_pArgs ) -{ - errlHndl_t l_err = NULL; - IStepError l_StepError; - uint8_t l_ddr_port_status = 0; - uint8_t l_cache_enable = 0; - uint8_t l_centaur_sub_revision = 0; - ecid_user_struct l_ecidUser; // Do not need to be initalized by caller - - mss_get_cen_ecid_ddr_status l_mbaBadMask[2] = - { MSS_GET_CEN_ECID_DDR_STATUS_MBA0_BAD, - MSS_GET_CEN_ECID_DDR_STATUS_MBA1_BAD }; - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_getecid entry" ); - - // Get all Centaur targets - TARGETING::TargetHandleList l_membufTargetList; - getAllChips(l_membufTargetList, TYPE_MEMBUF); - - for (TargetHandleList::const_iterator - l_membuf_iter = l_membufTargetList.begin(); - l_membuf_iter != l_membufTargetList.end(); - ++l_membuf_iter) - { - // make a local copy of the target for ease of use - TARGETING::Target* l_pCentaur = *l_membuf_iter; - - // Dump current run on target - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Running mss_get_cen_ecid HWP on " - "target HUID %.8X", TARGETING::get_huid(l_pCentaur)); - - // Cast to a FAPI type of target. - const fapi::Target l_fapi_centaur( TARGET_TYPE_MEMBUF_CHIP, - (const_cast<TARGETING::Target*>(l_pCentaur)) ); - - // call the HWP with each fapi::Target - // Note: This HWP does not actually return the entire ECID data. It - // updates the attribute ATTR_MSS_ECID and returns the DDR port status - // which is a portion of the ECID data. - FAPI_INVOKE_HWP(l_err, mss_get_cen_ecid, - l_fapi_centaur, l_ddr_port_status, - l_cache_enable, l_centaur_sub_revision, l_ecidUser); - if (l_err) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X: mss_get_cen_ecid HWP returns error", - l_err->reasonCode()); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_pCentaur).addToLog( l_err ); - - // Create IStep error log and cross reference error that occurred - l_StepError.addErrorDetails( l_err ); - - // Commit Error - errlCommit( l_err, HWPF_COMP_ID ); - } - else - { - if (MSS_GET_CEN_ECID_DDR_STATUS_ALL_GOOD != l_ddr_port_status) - { - // Check the DDR port status returned by mss_get_cen_ecid to - // see which MBA is bad. If the MBA's state is - // functional and the DDR port status indicates that it's bad, - // then set the MBA to nonfunctional. If the MBA's state is - // nonfunctional, then do nothing since we don't want to - // override previous settings. - - // Find the functional MBAs associated with this Centaur - PredicateCTM l_mba_pred(CLASS_UNIT,TYPE_MBA); - TARGETING::TargetHandleList l_mbaTargetList; - getChildChiplets(l_mbaTargetList, - l_pCentaur, - TYPE_MBA); - - uint8_t l_num_func_mbas = l_mbaTargetList.size(); - - for (TargetHandleList::const_iterator - l_mba_iter = l_mbaTargetList.begin(); - l_mba_iter != l_mbaTargetList.end(); - ++l_mba_iter) - { - // Make a local copy of the target for ease of use - TARGETING::Target* l_pMBA = *l_mba_iter; - - // Get the MBA chip unit position - ATTR_CHIP_UNIT_type l_pos = - l_pMBA->getAttr<ATTR_CHIP_UNIT>(); - - // Check the DDR port status to see if this MBA should be - // set to nonfunctional. - if ( l_ddr_port_status & l_mbaBadMask[l_pos] ) - { - // call HWAS to deconfigure this target - l_err = HWAS::theDeconfigGard().deconfigureTarget( - *l_pMBA, HWAS::DeconfigGard:: - DECONFIGURED_BY_MEMORY_CONFIG); - l_num_func_mbas--; - - if (l_err) - { - // shouldn't happen, but if it does, stop trying to - // deconfigure targets.. - break; - } - } - } // for - - if (l_err) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR: error deconfiguring MBA or Centaur"); - - // Create IStep error log and cross ref error that occurred - l_StepError.addErrorDetails( l_err ); - - // Commit Error - errlCommit( l_err, HWPF_COMP_ID ); - } - } - - // mss_get_cen_ecid returns if the L4 cache is enabled. This can be - // - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_OFF - // - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_ON - // - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_HALF_A - // - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_HALF_B - // - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_UNK_OFF - // - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_UNK_ON - // - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_UNK_HALF_A - // - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_UNK_HALF_B - // The UNK values are for DD1.* Centaur chips where the fuses were - // not blown correctly so the cache may not be in the correct state. - // - // Firmware does not normally support HALF enabled - // If ON then ATTR_MSS_CACHE_ENABLE is set to ON - // Else ATTR_MSS_CACHE_ENABLE is set to OFF and the L4 Target is - // deconfigured - // - // However, an engineer can override ATTR_MSS_CACHE_ENABLE. If they - // override it to HALF_A or HALF_B then - // - ATTR_MSS_CACHE_ENABLE is set to HALF_X - // - The L4 Target is not deconfigured - if (l_cache_enable != fapi::ENUM_ATTR_MSS_CACHE_ENABLE_ON) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "call_mss_getecid: mss_get_cen_ecid returned L4 not-on (0x%02x)", - l_cache_enable); - l_cache_enable = fapi::ENUM_ATTR_MSS_CACHE_ENABLE_OFF; - } - - // Set the ATTR_MSS_CACHE_ENABLE attribute - l_pCentaur->setAttr<TARGETING::ATTR_MSS_CACHE_ENABLE>( - l_cache_enable); - - // Read the ATTR_MSS_CACHE_ENABLE back to pick up any override - uint8_t l_cache_enable_attr = - l_pCentaur->getAttr<TARGETING::ATTR_MSS_CACHE_ENABLE>(); - - if (l_cache_enable != l_cache_enable_attr) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "call_mss_getecid: ATTR_MSS_CACHE_ENABLE override (0x%02x)", - l_cache_enable_attr); - } - - // At this point HALF_A/HALF_B are only possible due to override - if ((l_cache_enable_attr != - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_ON) && - (l_cache_enable_attr != - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_HALF_A) && - (l_cache_enable_attr != - fapi::ENUM_ATTR_MSS_CACHE_ENABLE_HALF_B)) - { - // Deconfigure the L4 Cache Targets (there should be 1) - TargetHandleList l_list; - getChildChiplets(l_list, l_pCentaur, TYPE_L4, false); - - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "call_mss_getecid: deconfiguring %d L4s (Centaur huid: 0x%.8X)", - l_list.size(), get_huid(l_pCentaur)); - - for (TargetHandleList::const_iterator - l_l4_iter = l_list.begin(); - l_l4_iter != l_list.end(); - ++l_l4_iter) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "call_mss_getecid: deconfiguring L4 (huid: 0x%.8X)", - get_huid( *l_l4_iter)); - - l_err = HWAS::theDeconfigGard(). - deconfigureTarget(**l_l4_iter , - HWAS::DeconfigGard:: - DECONFIGURED_BY_MEMORY_CONFIG); - - if (l_err) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR: error deconfiguring Centaur L4"); - - // Create IStep error log - // and cross reference error that occurred - l_StepError.addErrorDetails( l_err); - - // Commit Error - errlCommit(l_err, HWPF_COMP_ID); - } - } - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "call_mss_getecid: Centaur L4 good, not deconfiguring"); - } - } - - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS : mss_get_cen_ecid HWP( )" ); - } - - #ifdef CONFIG_BMC_IPMI - // Gather + Send the IPMI Fru Inventory data to the BMC - IPMIFRUINV::setData(true); - #endif - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_getecid exit" ); - - // end task, returning any errorlogs to IStepDisp - return l_StepError.getErrorHandle(); -} - -// -// Wrapper function to call dmi_attr_update -// -void * call_dmi_attr_update( void * io_pArgs ) -{ - IStepError l_StepError; - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "call_dmi_attr_update entry" ); - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "call_dmi_attr_update exit" ); - - return l_StepError.getErrorHandle(); - -} - -// -// Wrapper function to call proc_dmi_scominit -// -void* call_proc_dmi_scominit( void *io_pArgs ) -{ - errlHndl_t l_errl = NULL; - IStepError l_StepError; - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_proc_dmi_scominit entry" ); - - // Get all functional MCS chiplets - TARGETING::TargetHandleList l_mcsTargetList; - getAllChiplets(l_mcsTargetList, TYPE_MCS); - - // Invoke dmi_scominit on each one - for (TargetHandleList::const_iterator - l_mcs_iter = l_mcsTargetList.begin(); - l_mcs_iter != l_mcsTargetList.end(); - ++l_mcs_iter) - { - const TARGETING::Target* l_pTarget = *l_mcs_iter; - const fapi::Target l_fapi_target( TARGET_TYPE_MCS_CHIPLET, - (const_cast<TARGETING::Target*>(l_pTarget))); - - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Running proc_dmi_scominit HWP on " - "target HUID %.8X", TARGETING::get_huid(l_pTarget)); - - FAPI_INVOKE_HWP(l_errl, proc_dmi_scominit, l_fapi_target); - if (l_errl) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X : proc_dmi_scominit HWP returns error", - l_errl->reasonCode()); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_pTarget).addToLog( l_errl ); - - break; - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "SUCCESS : proc_dmi_scominit HWP"); - } - } - - if( l_errl ) - { - - // Create IStep error log and cross reference error that occurred - l_StepError.addErrorDetails( l_errl); - - // Commit Error - errlCommit( l_errl, HWPF_COMP_ID ); - } - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_proc_dmi_scominit exit" ); - - // end task, returning any errorlogs to IStepDisp - return l_StepError.getErrorHandle(); -} - -// -// Wrapper function to call dmi_scominit -// -void* call_dmi_scominit( void *io_pArgs ) -{ - errlHndl_t l_errl = NULL; - IStepError l_StepError; - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_dmi_scominit entry" ); - - // Get all functional membuf chips - TARGETING::TargetHandleList l_membufTargetList; - getAllChips(l_membufTargetList, TYPE_MEMBUF); - - // Invoke dmi_scominit on each one - for (TargetHandleList::iterator l_membuf_iter = l_membufTargetList.begin(); - l_membuf_iter != l_membufTargetList.end(); - ++l_membuf_iter) - { - const TARGETING::Target* l_pTarget = *l_membuf_iter; - const fapi::Target l_fapi_target( - TARGET_TYPE_MEMBUF_CHIP, - reinterpret_cast<void *> - (const_cast<TARGETING::Target*>(l_pTarget))); - - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "Running cen_dmi_scominit HWP on..."); - EntityPath l_path; - l_path = l_pTarget->getAttr<ATTR_PHYS_PATH>(); - l_path.dump(); - - FAPI_INVOKE_HWP(l_errl, cen_dmi_scominit, l_fapi_target); - if (l_errl) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "ERROR 0x%.8X : cen_dmi_scominit HWP returns error", - l_errl->reasonCode()); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_pTarget).addToLog( l_errl ); - - break; - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "SUCCESS : dmi_scominit HWP"); - } - } - - if( l_errl ) - { - // Create IStep error log and cross reference error that occurred - l_StepError.addErrorDetails( l_errl); - - // Commit Error - errlCommit( l_errl, HWPF_COMP_ID ); - } - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_dmi_scominit exit" ); - - // end task, returning any errorlogs to IStepDisp - return l_StepError.getErrorHandle(); -} - - -// -// Wrapper function to call dmi_erepair -// -void* call_dmi_erepair( void *io_pArgs ) -{ - ISTEP_ERROR::IStepError l_StepError; - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_dmi_erepair entry" ); - -#ifdef CONFIG_NO_DMI_EREPAIR - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "DMI erepair is disabled" ); -#else - - errlHndl_t l_errPtr = NULL; - fapi::ReturnCode l_rc; - std::vector<uint8_t> l_endp1_txFaillanes; - std::vector<uint8_t> l_endp1_rxFaillanes; - std::vector<uint8_t> l_endp2_txFaillanes; - std::vector<uint8_t> l_endp2_rxFaillanes; - uint32_t l_count = 0; - - TargetHandleList l_mcsTargetList; - TargetHandleList l_memTargetList; - TargetHandleList::iterator l_mem_iter; - - // find all MCS chiplets of all procs - getAllChiplets(l_mcsTargetList, TYPE_MCS); - - for (TargetHandleList::const_iterator - l_mcs_iter = l_mcsTargetList.begin(); - l_mcs_iter != l_mcsTargetList.end(); - ++l_mcs_iter) - { - // make a local copy of the MCS target - TARGETING::Target *l_mcs_target = *l_mcs_iter; - ATTR_CHIP_UNIT_type l_mcsNum = l_mcs_target->getAttr<ATTR_CHIP_UNIT>(); - - // find all the Centaurs that are associated with this MCS - getChildAffinityTargets(l_memTargetList, l_mcs_target, - CLASS_CHIP, TYPE_MEMBUF); - - if(l_memTargetList.size() != EREPAIR_MAX_CENTAUR_PER_MCS) - { - continue; - } - - // There will always be 1 Centaur associated with a MCS - l_mem_iter = l_memTargetList.begin(); - - // make a local copy of the MEMBUF target - TARGETING::Target *l_mem_target = *l_mem_iter; - ATTR_POSITION_type l_memNum = l_mem_target->getAttr<ATTR_POSITION>(); - - // struct containing custom parameters that is fed to HWP - // call the HWP with each target(if parallel, spin off a task) - const fapi::Target l_fapi_endp1_target(TARGET_TYPE_MCS_CHIPLET, - l_mcs_target); - - const fapi::Target l_fapi_endp2_target(TARGET_TYPE_MEMBUF_CHIP, - l_mem_target); - - // Get the repair lanes from the VPD - l_endp1_txFaillanes.clear(); - l_endp1_rxFaillanes.clear(); - l_endp2_txFaillanes.clear(); - l_endp2_rxFaillanes.clear(); - l_rc = erepairGetRestoreLanes(l_fapi_endp1_target, - l_endp1_txFaillanes, - l_endp1_rxFaillanes, - l_fapi_endp2_target, - l_endp2_txFaillanes, - l_endp2_rxFaillanes); - - if(l_rc) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "Unable to" - " retrieve DMI eRepair data from the VPD"); - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "target HUID %.8X", TARGETING::get_huid(l_mem_target)); - - // Convert fapi returnCode to Error handle - l_errPtr = fapiRcToErrl(l_rc); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_mcs_target).addToLog(l_errPtr); - ErrlUserDetailsTarget(l_mem_target).addToLog(l_errPtr); - - // Create IStep error log and cross reference error that occurred - l_StepError.addErrorDetails( l_errPtr); - - // Commit Error - errlCommit(l_errPtr, HWPF_COMP_ID); - break; - } - - if(l_endp1_txFaillanes.size() || l_endp1_rxFaillanes.size()) - { - // call the io_restore_erepair HWP to restore eRepair - // lanes of endp1 - - TRACDCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "io_restore_erepair HWP on %s" - " ( mcs 0x%x, mem 0x%x ) : ", - l_fapi_endp1_target.toEcmdString(), - l_mcsNum, - l_memNum ); - - FAPI_INVOKE_HWP(l_errPtr, - io_restore_erepair, - l_fapi_endp1_target, - l_endp1_txFaillanes, - l_endp1_rxFaillanes); - if(l_errPtr) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X : io_restore_erepair HWP" - "( mcs 0x%x, mem 0x%x ) ", - l_errPtr->reasonCode(), - l_mcsNum, - l_memNum); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_mcs_target).addToLog(l_errPtr); - - // Create IStep error log and cross ref error that occurred - l_StepError.addErrorDetails( l_errPtr); - - // Commit Error - errlCommit(l_errPtr, HWPF_COMP_ID); - break; - } - - for(l_count = 0; l_count < l_endp1_txFaillanes.size(); l_count++) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully" - " restored Tx lane %d, of DMI-Bus, of endpoint %s", - l_endp1_txFaillanes[l_count], - l_fapi_endp1_target.toEcmdString()); - } - - for(l_count = 0; l_count < l_endp1_rxFaillanes.size(); l_count++) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully" - " restored Rx lane %d, of DMI-Bus, of endpoint %s", - l_endp1_rxFaillanes[l_count], - l_fapi_endp1_target.toEcmdString()); - } - } // end of if(l_endp1_txFaillanes.size() || l_endp1_rxFaillanes.size()) - - if(l_endp2_txFaillanes.size() || l_endp2_rxFaillanes.size()) - { - // call the io_restore_erepair HWP to restore eRepair - // lanes of endp2 - - TRACDCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "io_restore_erepair HWP on %s" - " ( mcs 0x%x, mem 0x%x ) : ", - l_fapi_endp2_target.toEcmdString(), - l_mcsNum, - l_memNum ); - FAPI_INVOKE_HWP(l_errPtr, - io_restore_erepair, - l_fapi_endp2_target, - l_endp2_txFaillanes, - l_endp2_rxFaillanes); - if (l_errPtr) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X : io_restore_erepair HWP" - "( mcs 0x%x, mem 0x%x ) ", - l_errPtr->reasonCode(), - l_mcsNum, - l_memNum); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_mem_target).addToLog(l_errPtr); - - // Create IStep error log and cross ref error that occurred - l_StepError.addErrorDetails( l_errPtr); - - // Commit Error - errlCommit(l_errPtr, HWPF_COMP_ID); - break; - } - - for(l_count = 0; l_count < l_endp2_txFaillanes.size(); l_count++) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully" - " restored Tx lane %d, of DMI-Bus, of endpoint %s", - l_endp2_txFaillanes[l_count], - l_fapi_endp2_target.toEcmdString()); - } - - for(l_count = 0; l_count < l_endp2_rxFaillanes.size(); l_count++) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"Successfully" - " restored Rx lane %d, of DMI-Bus, of endpoint %s", - l_endp2_rxFaillanes[l_count], - l_fapi_endp2_target.toEcmdString()); - } - } // end of if(l_endp2_txFaillanes.size() || l_endp2_rxFaillanes.size()) - } // end for l_mcs_target - -#endif - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_dmi_erepair exit" ); - - return l_StepError.getErrorHandle(); -} - -// -// Wrapper function to call dmi_io_dccal -// -void* call_dmi_io_dccal( void *io_pArgs ) -{ - errlHndl_t l_errl = NULL; - ISTEP_ERROR::IStepError l_StepError; - - // We are not running this analog procedure in VPO - if (TARGETING::is_vpo()) - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Skip dmi_io_dccal in VPO!"); - return l_StepError.getErrorHandle(); - } - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "call_dmi_io_dccal entry" ); - - TargetPairs_t l_dmi_io_dccal_targets; - get_dmi_io_targets(l_dmi_io_dccal_targets); - - - // 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 - // the MCS and MEMBUF pair 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. - for (TargetPairs_t::const_iterator - l_itr = l_dmi_io_dccal_targets.begin(); - l_itr != l_dmi_io_dccal_targets.end(); - ++l_itr) - { - const fapi::Target l_fapi_mcs_target( TARGET_TYPE_MCS_CHIPLET, - (const_cast<TARGETING::Target*>(l_itr->first))); - - const fapi::Target l_fapi_membuf_target( TARGET_TYPE_MEMBUF_CHIP, - (const_cast<TARGETING::Target*>(l_itr->second))); - - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "===== Call dmi_io_dccal HWP( mcs 0x%.8X, mem 0x%.8X) : ", - TARGETING::get_huid(l_itr->first), - TARGETING::get_huid(l_itr->second)); - - // Call on the MCS - FAPI_INVOKE_HWP(l_errl, dmi_io_dccal, l_fapi_mcs_target); - - if (l_errl) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X : dmi_io_dccal HWP Target MCS 0x%.8X", - l_errl->reasonCode(), TARGETING::get_huid(l_itr->first)); - - // Create IStep error log and cross reference 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 - } - else - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS : call_dmi_io_dccal HWP - Target 0x%.8X", - TARGETING::get_huid(l_itr->first)); - } - - // io_dccal.C is going to look for a PLL ring with a "stub" - // mem freq -- so set to a default, then clear it (so as not - // to mess up MSS HWP later - TARGETING::Target* l_membuf_target = - (const_cast<TARGETING::Target*>(l_itr->second)); - l_membuf_target->setAttr<TARGETING::ATTR_MSS_FREQ>(1600); - - // Call on the MEMBUF - FAPI_INVOKE_HWP(l_errl, dmi_io_dccal, l_fapi_membuf_target); - - // Clear MSS_FREQ. This attribute will be set in istep 12 (mss_freq) for good - l_membuf_target->setAttr<TARGETING::ATTR_MSS_FREQ>(0); - - if (l_errl) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X : dmi_io_dccal HWP Target Membuf 0x%.8X", - l_errl->reasonCode(), TARGETING::get_huid(l_itr->second)); - - // Create IStep error log and cross reference 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 - } - else - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS : call_dmi_io_dccal HWP - Target 0x%.8X", - TARGETING::get_huid(l_itr->second)); - } - - } - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "call_dmi_io_dccal exit" ); - - // end task, returning any errorlogs to IStepDisp - return l_StepError.getErrorHandle(); -} - // // Wrapper function to call dmi_pre_trainadv |

