diff options
Diffstat (limited to 'src/usr/hwpf/hwp')
30 files changed, 361 insertions, 3720 deletions
diff --git a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C index 98a398a1e..29b4937e8 100644 --- a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C +++ b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C @@ -29,10 +29,6 @@ * Support file for IStep: edi_ei_initialization * EDI, EI Initialization * - * ***************************************************************** - * THIS FILE WAS GENERATED ON 2012-04-11:1606 - * ***************************************************************** - * * HWP_IGNORE_VERSION_CHECK * */ @@ -218,11 +214,11 @@ void* call_fabric_erepair( void *io_pArgs ) // call the io_restore_erepair HWP to restore eRepair // lanes of endp1 - FAPI_INVOKE_HWP(l_errl, - io_restore_erepair, - l_fapi_endp1_target, - l_endp1_txFaillanes, - l_endp1_rxFaillanes); + //FAPI_INVOKE_HWP(l_errl, + // p9_io_restore_erepair, + // l_fapi_endp1_target, + // l_endp1_txFaillanes, + // l_endp1_rxFaillanes); } if(l_errl) @@ -371,7 +367,7 @@ void* call_fabric_io_dccal( void *io_pArgs ) (const_cast<TARGETING::Target*>(l_itr->second))); // call the HWP with each bus connection - FAPI_INVOKE_HWP( l_errl, fabric_io_dccal, l_fapi_endp1_target ); + //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", @@ -463,7 +459,8 @@ void* call_fabric_pre_trainadv( void *io_pArgs ) (const_cast<TARGETING::Target*>(l_itr->second))); // call the HWP with each bus connection - FAPI_INVOKE_HWP( l_errl, io_pre_trainadv, l_fapi_endp1_target ); + //FAPI_INVOKE_HWP( l_errl, p9_io_pre_trainadv, + //l_fapi_endp1_target ); TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "%s : %cbus connection fabric_pre_trainadv. Target 0x%.8X", @@ -559,8 +556,8 @@ void* call_fabric_io_run_training( void *io_pArgs ) (const_cast<TARGETING::Target*>(l_itr->second))); // call the HWP with each bus connection - FAPI_INVOKE_HWP( l_errl, fabric_io_run_training, - l_fapi_endp1_target, l_fapi_endp2_target ); + //FAPI_INVOKE_HWP( l_errl, p9_io_run_training, + // l_fapi_endp1_target, l_fapi_endp2_target ); TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "%s : %cbus connection io_run_training", @@ -630,7 +627,8 @@ void* call_fabric_post_trainadv( void *io_pArgs ) (const_cast<TARGETING::Target*>(l_itr->second))); // call the HWP with each bus connection - FAPI_INVOKE_HWP( l_errl, io_post_trainadv, l_fapi_endp1_target ); + //FAPI_INVOKE_HWP( l_errl, p9_io_post_trainadv, + //l_fapi_endp1_target ); TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "%s : %cbus connection fabric_post_trainadv. Target 0x%.8X", @@ -680,6 +678,26 @@ void* call_fabric_post_trainadv( void *io_pArgs ) return l_StepError.getErrorHandle(); } +// +// Wrapper function to call proc_smp_link_layer +// +void* call_proc_smp_link_layer( void *io_pArgs ) +{ + errlHndl_t l_errl = NULL; + IStepError l_StepError; + + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_proc_smp_link_layer entry" ); + //call HWP + //FAPI_INVOKE_HWP(l_errl,p9_smp_link_layer); + if(l_errl) + { + l_StepError.addErrorDetails(l_errl); + errlCommit(l_errl, HWPF_COMP_ID); + } + return l_StepError.getErrorHandle(); + +} // // Wrapper function to call host_startprd_pbus @@ -894,7 +912,7 @@ void* call_proc_fab_iovalid( void *io_pArgs ) if (!l_errl) { - FAPI_INVOKE_HWP( l_errl, proc_fab_iovalid, l_smp, true ); + //FAPI_INVOKE_HWP( l_errl, p9_fab_iovalid, l_smp, true ); TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "%s : proc_fab_iovalid HWP.", diff --git a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H index b95c04218..00985dbae 100644 --- a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H +++ b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.H @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2014 */ +/* Contributors Listed Below - COPYRIGHT 2012,2015 */ +/* [+] International Business Machines Corp. */ +/* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ @@ -31,10 +33,6 @@ * All of the following routines are "named isteps" - they are invoked as * tasks by the @ref IStepDispatcher. * - * ***************************************************************** - * THIS FILE WAS GENERATED ON 2012-04-11:1606 - * ***************************************************************** - * * HWP_IGNORE_VERSION_CHECK * */ @@ -177,6 +175,18 @@ void* call_fabric_post_trainadv( void *io_pArgs ); /** + * @brief proc_smp_link_layer + * + * param[in,out] - pointer to any arguments, usually NULL + * + * return any errlogs to istep + * + */ +void* call_proc_smp_link_layer( void *io_pArgs ); + + + +/** * @brief host_startprd_pbus * * Load PRD for powerbus domain diff --git a/src/usr/hwpf/hwp/mc_config/mc_config.C b/src/usr/hwpf/hwp/mc_config/mc_config.C index d1e0c59f7..f6e8c1028 100644 --- a/src/usr/hwpf/hwp/mc_config/mc_config.C +++ b/src/usr/hwpf/hwp/mc_config/mc_config.C @@ -384,6 +384,9 @@ void* call_host_collect_dimm_spd( void *io_pArgs ) const fapi::Target l_fapiMba1Target(TARGET_TYPE_MBA_CHIPLET, (const_cast<TARGETING::Target*>(l_presMbas[1]))); // call the HWP with each fapi::Target + //FAPI_INVOKE_HWP(l_err, p9_mss_attr_cleanup, l_fapiCentaurTarget, + // l_fapiMba0Target, l_fapiMba1Target); + //Remove when above HWP is working: FAPI_INVOKE_HWP(l_err, mss_attr_cleanup, l_fapiCentaurTarget, l_fapiMba0Target, l_fapiMba1Target); if (l_err) @@ -725,9 +728,13 @@ void call_mss_volt_hwp (std::vector<TARGETING::ATTR_VMEM_ID_type>& i_VmemList, } } - TRACDCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Calling mss_volt_hwp..."); - FAPI_INVOKE_HWP(l_err, mss_volt_hwp, l_membufFapiTargets); + //now have the a list of fapi membufs with just the one VmemId + //call the HWP on the list of fapi targets + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "===== mss_volt HWP( vector )" ); + //FAPI_INVOKE_HWP(l_err, p9_mss_volt, l_membufFapiTargets); + //Remove when above HWP is working: + FAPI_INVOKE_HWP(l_err, mss_volt, l_membufFapiTargets); // process return code. if ( l_err ) @@ -1319,6 +1326,8 @@ void* call_mss_freq( void *io_pArgs ) fapi::Target l_fapi_membuf_target(fapi::TARGET_TYPE_MEMBUF_CHIP, (const_cast<TARGETING::Target*>(l_membuf_target)) ); + //FAPI_INVOKE_HWP(l_err, p9_mss_freq, l_fapi_membuf_target); + //Remove when above HWP is working: FAPI_INVOKE_HWP(l_err, mss_freq, l_fapi_membuf_target); // process return code. @@ -1413,7 +1422,10 @@ errlHndl_t call_mss_eff_grouping() l_associated_centaurs.push_back(l_fapi_centaur_target); } - FAPI_INVOKE_HWP(l_err, mss_eff_grouping, + //FAPI_INVOKE_HWP(l_err, p9_mss_eff_grouping, + //l_fapi_cpu_target, l_associated_centaurs); + //Remove when above HWP is working + FAPI_INVOKE_HWP(l_err,mss_eff_grouping, l_fapi_cpu_target, l_associated_centaurs); // process return code. @@ -1462,7 +1474,9 @@ errlHndl_t call_opt_memmap( bool i_initBase ) l_fapi_procs.push_back(l_fapi_target); } - FAPI_INVOKE_HWP(l_err, opt_memmap, l_fapi_procs, i_initBase); + //FAPI_INVOKE_HWP(l_err, p9_opt_memmap, l_fapi_procs, i_initBase); + //Remove when above HWP is working + FAPI_INVOKE_HWP(l_err,opt_memmap, l_fapi_procs,i_initBase); if ( l_err ) { @@ -1478,6 +1492,41 @@ errlHndl_t call_opt_memmap( bool i_initBase ) return l_err; } +errlHndl_t call_mss_eff_mb_interleave() +{ + errlHndl_t l_err = NULL; + + 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) + { + const TARGETING::Target* l_membuf_target = *l_membuf_iter; + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "===== Running mss_eff_mb_interleave HWP on HUID %.8X", + TARGETING::get_huid(l_membuf_target)); + fapi::Target l_membuf_fapi_target(fapi::TARGET_TYPE_MEMBUF_CHIP, + (const_cast<TARGETING::Target*>(l_membuf_target)) ); + FAPI_INVOKE_HWP(l_err, mss_eff_mb_interleave, l_membuf_fapi_target); + if (l_err) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR 0x%.8X: mss_eff_mb_interleave HWP returns error", + l_err->reasonCode()); + } + else + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "Successfully ran mss_eff_mb_interleave HWP on HUID %.8X", + TARGETING::get_huid(l_membuf_target)); + } + } + return l_err; +} + + // // Wrapper function to call mss_eff_config // @@ -1525,9 +1574,15 @@ void* call_mss_eff_config( void *io_pArgs ) const fapi::Target l_fapi_mba_target(fapi::TARGET_TYPE_MBA_CHIPLET, (const_cast<TARGETING::Target*>(l_mba_target))); + // Call the mss_eff_config_vpd_decode HWP + //FAPI_INVOKE_HWP(l_err,p9_mss_eff_config_vpd_decode, + //l_fapi_mba_target); + // Call the mss_eff_config HWP TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "===== mss_eff_config HWP. MBA HUID %.8X", l_huid); + //FAPI_INVOKE_HWP(l_err, p9_mss_eff_config, l_fapi_mba_target); + //Remove when above HWP is working: FAPI_INVOKE_HWP(l_err, mss_eff_config, l_fapi_mba_target); if (l_err) @@ -1548,7 +1603,8 @@ void* call_mss_eff_config( void *io_pArgs ) // Call the mss_eff_config_thermal HWP TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "===== mss_eff_config_thermal HWP. MBA HUID %.8X", l_huid); - FAPI_INVOKE_HWP(l_err, mss_eff_config_thermal, l_fapi_mba_target); + //FAPI_INVOKE_HWP(l_err, p9_mss_eff_config_thermal, + //l_fapi_mba_target); if (l_err) { @@ -1587,6 +1643,12 @@ void* call_mss_eff_config( void *io_pArgs ) { // Stack the memory again based on system-wide positions l_err = call_mss_eff_grouping(); + + /*if(!l_err) //Cumulus only + { + l_err = call_mss_eff_mb_interleave(); + }*/ + } } } @@ -1602,35 +1664,11 @@ void* call_mss_eff_config( void *io_pArgs ) // Calling mss_eff_mb_interleave if (l_StepError.isNull()) { - 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) + l_err = call_mss_eff_mb_interleave(); + if(l_err) { - const TARGETING::Target* l_membuf_target = *l_membuf_iter; - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "===== Running mss_eff_mb_interleave HWP on HUID %.8X", - TARGETING::get_huid(l_membuf_target)); - fapi::Target l_membuf_fapi_target(fapi::TARGET_TYPE_MEMBUF_CHIP, - (const_cast<TARGETING::Target*>(l_membuf_target)) ); - FAPI_INVOKE_HWP(l_err, mss_eff_mb_interleave, l_membuf_fapi_target); - if (l_err) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR 0x%.8X: mss_eff_mb_interleave HWP returns error", - l_err->reasonCode()); - ErrlUserDetailsTarget(l_membuf_target).addToLog(l_err); - l_StepError.addErrorDetails(l_err); - errlCommit(l_err, HWPF_COMP_ID); - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Successfully ran mss_eff_mb_interleave HWP on HUID %.8X", - TARGETING::get_huid(l_membuf_target)); - } + l_StepError.addErrorDetails(l_err); + errlCommit( l_err, HWPF_COMP_ID ); } } @@ -1645,8 +1683,16 @@ void* call_mss_attr_update( void *io_pArgs ) { IStepError l_StepError; + errlHndl_t l_err = NULL; TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_attr_update entry"); + //FAPI_INVOKE_HWP(l_err, p9_mss_attr_update); + if(l_err) + { + l_StepError.addErrorDetails(l_err); + errlCommit( l_err, HWPF_COMP_ID ); + } + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_attr_update exit" ); return l_StepError.getErrorHandle(); diff --git a/src/usr/hwpf/hwp/nest_chiplets/makefile b/src/usr/hwpf/hwp/nest_chiplets/makefile index 18cf3d680..abc06223a 100644 --- a/src/usr/hwpf/hwp/nest_chiplets/makefile +++ b/src/usr/hwpf/hwp/nest_chiplets/makefile @@ -39,10 +39,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/include ## NOTE: add a new EXTRAINCDIR when you add a new HWP EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_start_clocks_chiplets -EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit -EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_a_x_pci_dmi_pll_setup -EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_slot_power EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/secure_boot @@ -50,23 +47,15 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/secure_boot ## NOTE: add new object files when you add a new HWP OBJS += nest_chiplets.o OBJS += proc_start_clocks_chiplets.o -OBJS += proc_chiplet_scominit.o -OBJS += proc_scomoverride_chiplets.o OBJS += proc_a_x_pci_dmi_pll_initf.o OBJS += proc_a_x_pci_dmi_pll_setup.o -OBJS += proc_pcie_scominit.o -OBJS += proc_abus_scominit.o -OBJS += proc_xbus_scominit.o OBJS += proc_a_x_pci_dmi_pll_utils.o OBJS += proc_pcie_slot_power.o ## NOTE: add a new directory onto the vpaths when you add a new HWP VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_start_clocks_chiplets -VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit -VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_a_x_pci_dmi_pll_setup -VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_slot_power include ${ROOTPATH}/config.mk diff --git a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C index c69c50a52..b53199fce 100644 --- a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C +++ b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.C @@ -68,13 +68,8 @@ // #include "nest_chiplets_custom.H" #include "nest_chiplets.H" #include "proc_start_clocks_chiplets/proc_start_clocks_chiplets.H" -#include "proc_chiplet_scominit/proc_chiplet_scominit.H" -#include "proc_chiplet_scominit/proc_xbus_scominit.H" -#include "proc_chiplet_scominit/proc_abus_scominit.H" -#include "proc_scomoverride_chiplets/proc_scomoverride_chiplets.H" #include "proc_a_x_pci_dmi_pll_setup/proc_a_x_pci_dmi_pll_setup.H" #include "proc_a_x_pci_dmi_pll_setup/proc_a_x_pci_dmi_pll_initf.H" -#include "proc_pcie_scominit/proc_pcie_scominit.H" #include "../bus_training/pbusLinkSvc.H" #include <fapiHwpExecInitFile.H> #include "proc_pcie_slot_power.H" @@ -97,16 +92,48 @@ using namespace fapi; void * call_proc_attr_update( void * io_pArgs ) { IStepError l_StepError; + errlHndl_t l_err = NULL; TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_proc_attr_update entry" ); + //FAPI_INVOKE_HWP(l_err,p9_attr_update); + if(l_err) + { + l_StepError.addErrorDetails(l_err); + errlCommit(l_err, HWPF_COMP_ID); + } + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_proc_attr_update exit" ); return l_StepError.getErrorHandle(); } + +//***************************************************************************** +// wrapper function to call proc_enable_osclite +//***************************************************************************** +void* call_proc_enable_osclite(void *io_pArgs) +{ + errlHndl_t l_errl = NULL; + IStepError l_stepError; + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_proc_enable_osclite" ); + + //call p9_enable_osclite + //Cumulus only + //FAPI_INVOKE_HWP(l_errl,p9_enable_osclite); + if(l_errl) + { + l_stepError.addErrorDetails(l_errl); + errlCommit(l_errl, HWPF_COMP_ID); + } + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_proc_enable_osclite" ); + return l_stepError.getErrorHandle(); +} + //***************************************************************************** // wrapper function to call proc_a_x_pci_dmi_pll_initf //***************************************************************************** @@ -702,7 +729,7 @@ void* call_proc_chiplet_scominit( void *io_pArgs ) "target HUID %.8X", TARGETING::get_huid(l_cpu_target)); // call the HWP with each fapi::Target - FAPI_INVOKE_HWP(l_err, proc_chiplet_scominit, l_fapi_proc_target); + //FAPI_INVOKE_HWP(l_err, p9_chiplet_scominit, l_fapi_proc_target); if (l_err) { TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "ERROR 0x%.8X : " @@ -719,6 +746,8 @@ void* call_proc_chiplet_scominit( void *io_pArgs ) // after committing errlCommit(l_err, HWPF_COMP_ID); } + //call p9_psi_scominit + //FAPI_INVOKE_HWP(l_err,p9_psi_scominit); } } while (0); @@ -787,8 +816,8 @@ void* call_proc_xbus_scominit( void *io_pArgs ) TARGET_TYPE_XBUS_ENDPOINT, (const_cast<TARGETING::Target*>(l_connectedXbusTarget))); - FAPI_INVOKE_HWP(l_err, proc_xbus_scominit, - l_thisXbusFapiTarget, l_connectedXbusFapiTarget); + //FAPI_INVOKE_HWP(l_err, p9_xbus_scominit, + // l_thisXbusFapiTarget, l_connectedXbusFapiTarget); if (l_err) { TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, @@ -892,9 +921,9 @@ void* call_proc_abus_scominit( void *io_pArgs ) TARGETING::get_huid(l_thisAbusTarget), TARGETING::get_huid(l_connectedAbusTarget)); - FAPI_INVOKE_HWP(l_err, proc_abus_scominit, - l_fapi_this_abus_target, - l_fapi_connected_abus_target); + //FAPI_INVOKE_HWP(l_err, p9_abus_scominit, + // l_fapi_this_abus_target, + // l_fapi_connected_abus_target); if (l_err) { TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, @@ -924,6 +953,56 @@ void* call_proc_abus_scominit( void *io_pArgs ) } //****************************************************************************** +// wrapper function to call proc_obus_scominit +//****************************************************************************** +void* call_proc_obus_scominit( void *io_pArgs ) +{ + + errlHndl_t l_err = NULL; + IStepError l_StepError; + + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_proc_obus_scominit entry" ); + //Call HWP + //FAPI_INVOKE_HWP(l_err,p9_obus_scominit); + if(l_err) + { + l_StepError.addErrorDetails(l_err); + errlCommit(l_err, HWPF_COMP_ID); + } + + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_proc_obus_scominit exit"); + + return l_StepError.getErrorHandle(); +} + +//****************************************************************************** +// wrapper function to call proc_npu_scominit +//****************************************************************************** +void* call_proc_npu_scominit( void *io_pArgs ) +{ + + errlHndl_t l_err = NULL; + IStepError l_StepError; + + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_proc_npu_scominit entry" ); + //Call HWP + //FAPI_INVOKE_HWP(l_err,p9_npu_scominit); + if(l_err) + { + l_StepError.addErrorDetails(l_err); + errlCommit(l_err, HWPF_COMP_ID); + } + + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_proc_npu_scominit exit"); + + return l_StepError.getErrorHandle(); +} + +//****************************************************************************** // _queryIopsToBifurcateAndPhbsToDisable //****************************************************************************** @@ -1921,7 +2000,7 @@ void* call_proc_pcie_scominit( void *io_pArgs ) "target HUID %.8X", TARGETING::get_huid(l_proc_target)); // call the HWP with each fapi::Target - FAPI_INVOKE_HWP(l_errl, proc_pcie_scominit, l_fapi_proc_target); + //FAPI_INVOKE_HWP(l_errl, p9_pcie_scominit, l_fapi_proc_target); if (l_errl) { @@ -1965,7 +2044,7 @@ void* call_proc_scomoverride_chiplets( void *io_pArgs ) TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_proc_scomoverride_chiplets entry" ); - FAPI_INVOKE_HWP(l_errl, proc_scomoverride_chiplets); + //FAPI_INVOKE_HWP(l_errl, p9_scomoverride_chiplets); if (l_errl) { @@ -1993,5 +2072,29 @@ void* call_proc_scomoverride_chiplets( void *io_pArgs ) return l_StepError.getErrorHandle(); } +//****************************************************************************** +// wrapper function to call proc_chiplet_enable_ridi +//****************************************************************************** +void* call_proc_chiplet_enable_ridi( void *io_pArgs ) +{ + + errlHndl_t l_err = NULL; + IStepError l_StepError; + + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_proc_chiplet_enable_ridi entry" ); + //Call HWP + //FAPI_INVOKE_HWP(l_err,p9_chiplet_enable_ridi); + if(l_err) + { + l_StepError.addErrorDetails(l_err); + errlCommit(l_err, HWPF_COMP_ID); + } + + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_proc_chiplet_enable_ridi"); + + return l_StepError.getErrorHandle(); +} }; // end namespace diff --git a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H index 01246b53e..75f8b756c 100644 --- a/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H +++ b/src/usr/hwpf/hwp/nest_chiplets/nest_chiplets.H @@ -226,6 +226,16 @@ uint8_t UnsupportedLanesx40[] = {0x4,0x5,0x8,0x9,0xA,0xB,0xC}; void * call_proc_attr_update( void * io_pArgs ); /** + * @brief proc_enable_osclite + * + * param[in,out] - pointer to any arguments, usually NULL + * + * return any error logs to istep + * + */ +void* call_proc_enable_osclite(void *io_pArgs); + +/** * @brief proc_a_x_pci_dmi_pll_initf * * PLL init file for A, X, PCIe, DMI @@ -299,6 +309,28 @@ void* call_proc_xbus_scominit( void *io_pArgs ); void* call_proc_abus_scominit( void *io_pArgs ); /** + * @brief proc_obus_scominit + * + * Apply scom inits to OBUS + * + * param[in,out] - pointer to any arguments, usually NULL + * + * return any error logs to istep + */ +void* call_proc_obus_scominit( void *io_pArgs ); + +/** + * @brief proc_npu_scominit + * + * Apply scom inits to NPU + * + * param[in.out] - pointer to any arguments, usually NULL + * + * return any error logs to istep + */ +void* call_proc_npu_scominit( void *io_pArgs ); + +/** * @brief proc_pcie_scominit * * Apply scom inits to PCIe chiplets @@ -323,6 +355,16 @@ void* call_proc_pcie_scominit( void *io_pArgs ); void* call_proc_scomoverride_chiplets( void *io_pArgs ); /** + * @brief proc_chiplet_enable_ridi + * + * param[in,out] - pointer to any arguments, usually NULL + * + * return any error logs to istep + * + */ +void* call_proc_chiplet_enable_ridi( void *io_pArgs ); + +/** * @brief Setup the ATTR_CHIP_REGIONS_TO_ENABLE attribute for input proc. * * @param[in] i_procTarget Processor target to customize data for. diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit.C b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit.C deleted file mode 100644 index 918758938..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit.C +++ /dev/null @@ -1,230 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit.C $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2013,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_abus_scominit.C,v 1.6 2014/03/12 18:56:56 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_abus_scominit.C,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : proc_abus_scominit.C -// *! DESCRIPTION : Invoke ABUS initfile (FAPI) -// *! -// *! OWNER NAME : Mike Jones Email: mjjones@us.ibm.com -// *! BACKUP NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -// *! ADDITIONAL COMMENTS : -// *! -//------------------------------------------------------------------------------ -//------------------------------------------------------------------------------ -// Version Date Owner Description -//------------------------------------------------------------------------------ -// 1.6 03/10/14 jmcgill Add endpoint power up -// 1.5 11/08/13 jmcgill Updates for RAS review -// 1.4 02/18/13 thomsen Changed targeting to use Abus_chiplet, -// chip, connected_Abus_chiplet & -// connected_chip to match Xbus and DMI -// target list so they are common -// 1.3 02/10/13 jmcgill Leverage chiplet level targeting, invoke -// custom initfile -// 1.2 01/20/13 jmcgill Add consistency check for A chiplet -// partial good support -// 1.1 8/11/12 jmcgill Initial release -//------------------------------------------------------------------------------ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <fapiHwpExecInitFile.H> -#include <proc_abus_scominit.H> -#include <p8_scom_addresses.H> - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ - -// map ABUS chiplet ID -> associated bus IORESET bit in ABUS SCOM_MODE_PB -// register -const uint8_t ABUS_SCOM_MODE_PB_IORESET_BIT[3] = { 2,3,4 }; - - -extern "C" { - -//------------------------------------------------------------------------------ -// Function definitions -//------------------------------------------------------------------------------ - -// HWP entry point, comments in header -fapi::ReturnCode proc_abus_scominit(const fapi::Target & i_abus_target, - const fapi::Target & i_connected_abus_target) -{ - fapi::ReturnCode rc; - uint32_t rc_ecmd = 0x0; - - std::vector<fapi::Target> targets; - fapi::Target this_pu_target; - fapi::Target connected_pu_target; - uint8_t abus_enable_attr; - uint8_t abus_pos; - - ecmdDataBufferBase data(64); - - // mark HWP entry - FAPI_INF("proc_abus_scominit: Start"); - - do - { - // test target types to confirm correctness before calling initfile(s) - // to execute - if ((i_abus_target.getType() == fapi::TARGET_TYPE_ABUS_ENDPOINT) && - (i_connected_abus_target.getType() == fapi::TARGET_TYPE_ABUS_ENDPOINT)) - { - // get parent chip targets - rc = fapiGetParentChip(i_abus_target, this_pu_target); - if (!rc.ok()) - { - FAPI_ERR("proc_abus_scominit: Error from fapiGetParentChip (this target, %s)", - i_abus_target.toEcmdString()); - break; - } - - rc = fapiGetParentChip(i_connected_abus_target, connected_pu_target); - if (!rc.ok()) - { - FAPI_ERR("proc_abus_scominit: Error from fapiGetParentChip (connected target, %s)", - i_connected_abus_target.toEcmdString()); - break; - } - - // populate targets vector - targets.push_back(i_abus_target); // chiplet target - targets.push_back(this_pu_target); // chip target - targets.push_back(i_connected_abus_target); // connected chiplet target - targets.push_back(connected_pu_target); // connected chip target - - // query ABUS partial good attribute - rc = FAPI_ATTR_GET(ATTR_PROC_A_ENABLE, - &this_pu_target, - abus_enable_attr); - if (!rc.ok()) - { - FAPI_ERR("proc_abus_scominit: Error querying ATTR_PROC_A_ENABLE (%s)", - this_pu_target.toEcmdString()); - break; - } - - if (abus_enable_attr != fapi::ENUM_ATTR_PROC_A_ENABLE_ENABLE) - { - FAPI_ERR("proc_abus_scominit: Partial good attribute error"); - const fapi::Target & TARGET = this_pu_target; - FAPI_SET_HWP_ERROR(rc, RC_PROC_ABUS_SCOMINIT_PARTIAL_GOOD_ERR); - break; - } - - // assert IO reset to power-up bus endpoint logic - rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, &i_abus_target, abus_pos); - if (!rc.ok()) - { - FAPI_ERR("proc_abus_scominit: Error from FAPI_ATTR_GET (ATTR_CHIP_UNIT_POS) on %s", - i_abus_target.toEcmdString()); - break; - } - - // read-modify-write, set single reset bit (HW auto-clears) - // on writeback - rc = fapiGetScom(i_abus_target, A_ABUS_SCOM_MODE_PB_0x08010C20, data); - if (!rc.ok()) - { - FAPI_ERR("proc_abus_scominit: Error from fapiGetScom (A_ABUS_SCOM_MODE_PB_0x08010C20) on %s", - i_abus_target.toEcmdString()); - break; - } - - rc_ecmd |= data.setBit(ABUS_SCOM_MODE_PB_IORESET_BIT[abus_pos]); - if (rc_ecmd) - { - FAPI_ERR("proc_abus_scominit: Error 0x%x forming ABUS SCOM Mode PB register data buffer on %s", - rc_ecmd, i_abus_target.toEcmdString()); - rc.setEcmdError(rc_ecmd); - break; - } - - rc = fapiPutScom(i_abus_target, A_ABUS_SCOM_MODE_PB_0x08010C20, data); - if (!rc.ok()) - { - FAPI_ERR("proc_abus_scominit: Error from fapiPutScom (A_ABUS_SCOM_MODE_PB_0x08010C20) on %s", - i_abus_target.toEcmdString()); - break; - } - - - // Call BASE ABUS SCOMINIT - FAPI_INF("proc_abus_scominit: fapiHwpExecInitfile executing %s on %s, %s, %s, %s", - ABUS_BASE_IF, - i_abus_target.toEcmdString(), this_pu_target.toEcmdString(), - i_connected_abus_target.toEcmdString(), connected_pu_target.toEcmdString()); - FAPI_EXEC_HWP(rc, fapiHwpExecInitFile, targets, ABUS_BASE_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_abus_scominit: Error from fapiHwpExecInitfile executing %s on %s, %s, %s, %s", - ABUS_BASE_IF, - i_abus_target.toEcmdString(), this_pu_target.toEcmdString(), - i_connected_abus_target.toEcmdString(), connected_pu_target.toEcmdString()); - break; - } - - // Call CUSTOMIZED ABUS SCOMINIT - FAPI_INF("proc_abus_scominit: fapiHwpExecInitfile executing %s on %s, %s, %s, %s", - ABUS_CUSTOM_IF, - i_abus_target.toEcmdString(), this_pu_target.toEcmdString(), - i_connected_abus_target.toEcmdString(), connected_pu_target.toEcmdString()); - FAPI_EXEC_HWP(rc, fapiHwpExecInitFile, targets, ABUS_CUSTOM_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_abus_scominit: Error from fapiHwpExecInitfile executing %s on %s, %s, %s, %s", - ABUS_BASE_IF, - i_abus_target.toEcmdString(), this_pu_target.toEcmdString(), - i_connected_abus_target.toEcmdString(), connected_pu_target.toEcmdString()); - break; - } - } - // unsupported target type - else - { - FAPI_ERR("proc_abus_scominit: Unsupported target type(s)"); - const fapi::Target & THIS_ABUS_TARGET = i_abus_target; - const fapi::Target & CONNECTED_ABUS_TARGET = i_connected_abus_target; - FAPI_SET_HWP_ERROR(rc, RC_PROC_ABUS_SCOMINIT_INVALID_TARGET); - break; - } - } while (0); - - // mark HWP exit - FAPI_INF("proc_abus_scominit: End"); - return rc; -} - - -} // extern "C" diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit.H b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit.H deleted file mode 100644 index 1616cf0c0..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit.H +++ /dev/null @@ -1,91 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2013,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_abus_scominit.H,v 1.4 2013/11/09 18:37:40 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_abus_scominit.H,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : proc_abus_scominit.H -// *! DESCRIPTION : Invoke ABUS initfile (FAPI) -// *! -// *! OWNER NAME : Mike Jones Email: mjjones@us.ibm.com -// *! BACKUP NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -// *! ADDITIONAL COMMENTS : -// *! -//------------------------------------------------------------------------------ - -#ifndef PROC_ABUS_SCOMINIT_H_ -#define PROC_ABUS_SCOMINIT_H_ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <fapi.H> - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ -const char * const ABUS_BASE_IF = "p8.abus.scom.if"; -const char * const ABUS_CUSTOM_IF = "p8.abus.custom.scom.if"; - -//------------------------------------------------------------------------------ -// Structure definitions -//------------------------------------------------------------------------------ - -// function pointer typedef definition for HWP call support -typedef fapi::ReturnCode -(*proc_abus_scominit_FP_t)(const fapi::Target & i_abus_target, - const fapi::Target & i_connected_abus_target); - -extern "C" { - -//------------------------------------------------------------------------------ -// Function prototypes -//------------------------------------------------------------------------------ - -/** - * @brief HWP that calls the ABUS SCOM initfiles - * - * Should be called for all valid/connected ABUS endpoints - * - * @param[in] i_abus_target Reference to ABUS chiplet target - * i_connected_abus_target Reference to connected ABUS chiplet target - * If TARGET_TYPE_ABUS_ENDPOINT, calls: - * - p8.abus.scom.initfile - * - p8.abus.custom.scom.initfile - * - * @return ReturnCode - */ -fapi::ReturnCode proc_abus_scominit( - const fapi::Target & i_abus_target, - const fapi::Target & i_connected_abus_target); - - -} // extern "C" - -#endif // PROC_ABUS_SCOMINIT_H_ diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit_errors.xml b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit_errors.xml deleted file mode 100644 index 71c0dea71..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit_errors.xml +++ /dev/null @@ -1,46 +0,0 @@ -<!-- IBM_PROLOG_BEGIN_TAG --> -<!-- This is an automatically generated prolog. --> -<!-- --> -<!-- $Source: src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_abus_scominit_errors.xml $ --> -<!-- --> -<!-- OpenPOWER HostBoot Project --> -<!-- --> -<!-- COPYRIGHT International Business Machines Corp. 2013,2014 --> -<!-- --> -<!-- Licensed under the Apache License, Version 2.0 (the "License"); --> -<!-- you may not use this file except in compliance with the License. --> -<!-- You may obtain a copy of the License at --> -<!-- --> -<!-- http://www.apache.org/licenses/LICENSE-2.0 --> -<!-- --> -<!-- Unless required by applicable law or agreed to in writing, software --> -<!-- distributed under the License is distributed on an "AS IS" BASIS, --> -<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or --> -<!-- implied. See the License for the specific language governing --> -<!-- permissions and limitations under the License. --> -<!-- --> -<!-- IBM_PROLOG_END_TAG --> -<!-- $Id: proc_abus_scominit_errors.xml,v 1.4 2013/11/09 18:38:44 jmcgill Exp $ --> -<!-- Error definitions for proc_abus_scominit procedure --> -<hwpErrors> - <!-- *********************************************************************** --> - <hwpError> - <rc>RC_PROC_ABUS_SCOMINIT_INVALID_TARGET</rc> - <ffdc>THIS_ABUS_TARGET</ffdc> - <ffdc>CONNECTED_ABUS_TARGET</ffdc> - <description>Invalid target type(s) presented to proc_abus_scominit HWP (expects TARGET_TYPE_ABUS_ENDPOINT).</description> - <callout> - <procedure>CODE</procedure> - <priority>HIGH</priority> - </callout> - </hwpError> - <hwpError> - <rc>RC_PROC_ABUS_SCOMINIT_PARTIAL_GOOD_ERR</rc> - <ffdc>TARGET</ffdc> - <description>Partial good attribute state does not allow for action on chiplet target.</description> - <callout> - <procedure>CODE</procedure> - <priority>HIGH</priority> - </callout> - </hwpError> -</hwpErrors> diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C deleted file mode 100644 index ef92513d4..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C +++ /dev/null @@ -1,633 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2015 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_chiplet_scominit.C,v 1.29 2015/08/10 15:15:06 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_chiplet_scominit.C,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : proc_chiplet_scominit.C -// *! DESCRIPTION : Invoke initfiles for proc_chiplet_scominit istep (FAPI) -// *! -// *! OWNER NAME : Mike Jones Email: mjjones@us.ibm.com -// *! BACKUP NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -// *! ADDITIONAL COMMENTS : -// *! -//------------------------------------------------------------------------------ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <fapiHwpExecInitFile.H> -#include <proc_chiplet_scominit.H> -#include <p8_scom_addresses.H> -#include <proc_check_master_sbe_seeprom.H> - -extern "C" { - -//------------------------------------------------------------------------------ -// Function definitions -//------------------------------------------------------------------------------ - -// HWP entry point, comments in header -fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target) -{ - fapi::ReturnCode rc; - uint32_t rc_ecmd = 0; - - fapi::TargetType target_type; - std::vector<fapi::Target> initfile_targets; - std::vector<fapi::Target> ex_targets; - std::vector<fapi::Target> mcs_targets; - uint8_t nx_enabled; - uint8_t mcs_pos; - uint8_t ex_pos; - uint8_t num_ex_targets; - uint8_t master_mcs_pos = 0xFF; - fapi::Target master_mcs; - uint8_t enable_xbus_resonant_clocking = 0x0; - uint8_t i2c_slave_address = 0x0; - uint8_t dual_capp_present = 0x0; - - ecmdDataBufferBase data(64); - ecmdDataBufferBase cfam_data(32); - ecmdDataBufferBase mask(64); - - bool is_master = false; - - // mark HWP entry - FAPI_INF("proc_chiplet_scominit: Start"); - - do - { - rc = proc_check_master_sbe_seeprom(i_target, is_master); - if (!rc.ok()) - { - FAPI_ERR("proc_cen_ref_clk_enable: Error from proc_check_master_sbe_seeprom"); - break; - } - - // obtain target type to determine which initfile(s) to execute - target_type = i_target.getType(); - - // chip level target - if (target_type == fapi::TARGET_TYPE_PROC_CHIP) - { - // execute FBC SCOM initfile - initfile_targets.push_back(i_target); - FAPI_INF("proc_chiplet_scominit: Executing %s on %s", - PROC_CHIPLET_SCOMINIT_FBC_IF, i_target.toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - initfile_targets, - PROC_CHIPLET_SCOMINIT_FBC_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s", - PROC_CHIPLET_SCOMINIT_FBC_IF, - i_target.toEcmdString()); - break; - } - - // execute PSI SCOM initfile - FAPI_INF("proc_chiplet_scominit: Executing %s on %s", - PROC_CHIPLET_SCOMINIT_PSI_IF, i_target.toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - initfile_targets, - PROC_CHIPLET_SCOMINIT_PSI_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s", - PROC_CHIPLET_SCOMINIT_PSI_IF, - i_target.toEcmdString()); - break; - } - - // execute TP bridge SCOM initfile - FAPI_INF("proc_chiplet_scominit: Executing %s on %s", - PROC_CHIPLET_SCOMINIT_TPBRIDGE_IF, i_target.toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - initfile_targets, - PROC_CHIPLET_SCOMINIT_TPBRIDGE_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s", - PROC_CHIPLET_SCOMINIT_TPBRIDGE_IF, - i_target.toEcmdString()); - break; - } - - // query NX partial good attribute - rc = FAPI_ATTR_GET(ATTR_PROC_NX_ENABLE, - &i_target, - nx_enabled); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error querying ATTR_PROC_NX_ENABLE"); - break; - } - - // apply NX/AS SCOM initfiles only if partial good attribute is set - if (nx_enabled == fapi::ENUM_ATTR_PROC_NX_ENABLE_ENABLE) - { - // execute NX SCOM initfile - FAPI_INF("proc_chiplet_scominit: Executing %s on %s", - PROC_CHIPLET_SCOMINIT_NX_IF, i_target.toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - initfile_targets, - PROC_CHIPLET_SCOMINIT_NX_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s", - PROC_CHIPLET_SCOMINIT_NX_IF, - i_target.toEcmdString()); - break; - } - - // execute CXA SCOM initfile - FAPI_INF("proc_chiplet_scominit: Executing %s on %s", - PROC_CHIPLET_SCOMINIT_CXA_IF, i_target.toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - initfile_targets, - PROC_CHIPLET_SCOMINIT_CXA_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s", - PROC_CHIPLET_SCOMINIT_CXA_IF, - i_target.toEcmdString()); - break; - } - - // configure CXA APC master LCO settings - rc = fapiGetChildChiplets(i_target, - fapi::TARGET_TYPE_EX_CHIPLET, - ex_targets, - fapi::TARGET_STATE_FUNCTIONAL); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiGetChildChiplets (EX) on %s", - i_target.toEcmdString()); - break; - } - - // form valid LCO target list - for (std::vector<fapi::Target>::iterator i = ex_targets.begin(); - i != ex_targets.end(); - i++) - { - // determine EX chiplet number - rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, &(*i), ex_pos); - - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from FAPI_ATTR_GET (ATTR_CHIP_UNIT_POS) on %s", - i->toEcmdString()); - break; - } - - rc_ecmd |= data.setBit(ex_pos-((ex_pos < 8)?(1):(3))); - } - if (!rc.ok()) - { - break; - } - - num_ex_targets = ex_targets.size(); - rc_ecmd |= data.insertFromRight( - num_ex_targets, - CAPP_APC_MASTER_LCO_TARGET_MIN_START_BIT, - (CAPP_APC_MASTER_LCO_TARGET_MIN_END_BIT- - CAPP_APC_MASTER_LCO_TARGET_MIN_START_BIT+1)); - - if (rc_ecmd) - { - FAPI_ERR("proc_chiplet_scominit: Error 0x%x setting APC Master LCO Target register data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - rc = fapiPutScom(i_target, - CAPP_APC_MASTER_LCO_TARGET_0x02013021, - data); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (CAPP_APC_MASTER_LCO_TARGET_0x02013021) on %s", - i_target.toEcmdString()); - break; - } - - // get dual CAPP presence attribute - FAPI_DBG("proc_chiplet_scominit: Querying dual CAPP feature attribute"); - rc = FAPI_ATTR_GET(ATTR_CHIP_EC_FEATURE_DUAL_CAPP_PRESENT, - &i_target, - dual_capp_present); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error querying ATTR_CHIP_EC_FEATURE_DUAL_CAPP_PRESENT"); - break; - } - - if (dual_capp_present != 0) - { - rc = fapiPutScom(i_target, - CAPP1_APC_MASTER_LCO_TARGET_0x020131A1, - data); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (CAPP1_APC_MASTER_LCO_TARGET_0x020131A1) on %s", - i_target.toEcmdString()); - break; - } - } - - // execute AS SCOM initfile - FAPI_INF("proc_chiplet_scominit: Executing %s on %s", - PROC_CHIPLET_SCOMINIT_AS_IF, i_target.toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - initfile_targets, - PROC_CHIPLET_SCOMINIT_AS_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s", - PROC_CHIPLET_SCOMINIT_AS_IF, - i_target.toEcmdString()); - break; - } - } - else - { - FAPI_DBG("proc_chiplet_scominit: Skipping execution of %s/%s/%s (partial good)", - PROC_CHIPLET_SCOMINIT_NX_IF, PROC_CHIPLET_SCOMINIT_CXA_IF, PROC_CHIPLET_SCOMINIT_AS_IF); - } - - // conditionally enable I2C Slave - rc = FAPI_ATTR_GET(ATTR_I2C_SLAVE_ADDRESS, - &i_target, - i2c_slave_address); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error querying ATTR_I2C_SLAVE_ADDRESS on %s", - i_target.toEcmdString()); - break; - } - rc = fapiGetScom(i_target, - I2C_SLAVE_CONFIG_REG_0x000D0000, - data); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiGetScom error (I2C_SLAVE_CONFIG_REG_0x000D0000) on %s", - i_target.toEcmdString()); - break; - } - if (i2c_slave_address) - { - FAPI_DBG("proc_chiplet_scominit: I2C Slave enabled (%s) address = %d", - i_target.toEcmdString(),i2c_slave_address); - - //set I2C address - rc_ecmd |= data.insert(i2c_slave_address,0,7); - - // disable error state. when this is enabled and there - // is an error from I2CS it locks up the I2CS and no - // more operations are allowed unless cleared - // through FSI. Not good for a FSPless system. - rc_ecmd |= data.clearBit(23); - - // enable I2C interface - rc_ecmd |= data.setBit(21); - - } - else - { - FAPI_DBG("proc_chiplet_scominit: I2C Slave disabled (%s)", - i_target.toEcmdString()); - - // disable I2C interface when attribute = 0x0 - rc_ecmd |= data.clearBit(21); - } - - if (rc_ecmd) - { - FAPI_ERR("proc_chiplet_scominit: Error 0x%x setting I2C Slave register data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - rc = fapiPutScom(i_target, - I2C_SLAVE_CONFIG_REG_0x000D0000, - data); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (I2C_SLAVE_CONFIG_REG_0x000D0000) on %s", - i_target.toEcmdString()); - break; - } - - // conditionally enable resonant clocking for XBUS - rc = FAPI_ATTR_GET(ATTR_CHIP_EC_FEATURE_XBUS_RESONANT_CLK_VALID, - &i_target, - enable_xbus_resonant_clocking); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error querying ATTR_CHIP_EC_FEATURE_XBUS_RESONANT_CLK_VALID on %s", - i_target.toEcmdString()); - break; - } - - if (enable_xbus_resonant_clocking) - { - FAPI_DBG("proc_chiplet_scominit: Enabling XBUS resonant clocking"); - rc = fapiGetScom(i_target, - MBOX_FSIGP6_0x00050015, - data); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiGetScom error (MBOX_FSIGP6_0x00050015) on %s", - i_target.toEcmdString()); - break; - } - - rc_ecmd |= data.insertFromRight( - XBUS_RESONANT_CLOCK_CONFIG, - MBOX_FSIGP6_XBUS_RESONANT_CLOCK_CONFIG_START_BIT, - (MBOX_FSIGP6_XBUS_RESONANT_CLOCK_CONFIG_END_BIT- - MBOX_FSIGP6_XBUS_RESONANT_CLOCK_CONFIG_START_BIT+1)); - - if (rc_ecmd) - { - FAPI_ERR("proc_chiplet_scominit: Error 0x%x setting FSI GP6 register data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - if (is_master) - { - rc = fapiPutScom(i_target, - MBOX_FSIGP6_0x00050015, - data); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (MBOX_FSIGP6_0x00050015) on %s", - i_target.toEcmdString()); - break; - } - } - else - { - cfam_data.insert(data, 0, 32, 0); - rc = fapiPutCfamRegister(i_target, CFAM_FSI_GP6_0x00002815, cfam_data); - if (rc) - { - FAPI_ERR("proc_cen_ref_clk_enable: fapiPutCfamRegister error (CFAM_FSI_GP8_0x00001017)"); - break; - } - } - } - - // execute A/X/PCI/DMI FIR init SCOM initfile - FAPI_INF("proc_chiplet_scominit: Executing %s on %s", - PROC_CHIPLET_SCOMINIT_A_X_PCI_DMI_IF, i_target.toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - initfile_targets, - PROC_CHIPLET_SCOMINIT_A_X_PCI_DMI_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s", - PROC_CHIPLET_SCOMINIT_A_X_PCI_DMI_IF, - i_target.toEcmdString()); - break; - } - - // execute NV scominit file - uint8_t exist_NV = 0x00; - rc = FAPI_ATTR_GET(ATTR_CHIP_EC_FEATURE_NV_PRESENT, &i_target, exist_NV); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error getting attribute value ATTR_CHIP_EC_FEATURE_NV_PRESENT"); - break; - } - if (exist_NV) - { - // mask NPU FIR bit 27 - rc_ecmd = data.flushTo0(); - rc_ecmd = data.setBit(NPU_FIR_NTL_DL2TL_PARITY_ERR_BIT); - if (rc_ecmd) - { - FAPI_ERR("proc_chiplet_scominit: Error 0x%Xforming NPU FIR mask data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - rc = fapiPutScom(i_target, NPU_FIR_MASK_OR_0x08013D85, data); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (NPU_FIR_MASK_OR_0x08013D85) on %s", - i_target.toEcmdString()); - break; - } - - FAPI_INF("proc_chiplet_scominit: Executing %s on %s", - PROC_CHIPLET_SCOMINIT_NPU_IF, i_target.toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - initfile_targets, - PROC_CHIPLET_SCOMINIT_NPU_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s", - PROC_CHIPLET_SCOMINIT_NPU_IF, - i_target.toEcmdString()); - break; - } - - // cleanup FIR bit (NPU FIR bit 27) caused by NDL/NTL parity error - rc_ecmd = data.invert(); - if (rc_ecmd) - { - FAPI_ERR("proc_chiplet_scominit: Error 0x%Xforming NPU FIR cleanup data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - rc = fapiPutScom(i_target, NPU_FIR_AND_0x08013D81, data); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (NPU_FIR_AND_0x08013D81) on %s", - i_target.toEcmdString()); - break; - } - rc = fapiPutScom(i_target, NPU_FIR_MASK_AND_0x08013D84, data); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (NPU_FIR_MASK_AND_0x08013D84) on %s", - i_target.toEcmdString()); - break; - } - } - else - { - FAPI_INF("proc_chiplet_scominit: NV link logic not present, scom initfile processing skipped"); - } - - // determine set of functional MCS chiplets - rc = fapiGetChildChiplets(i_target, - fapi::TARGET_TYPE_MCS_CHIPLET, - mcs_targets, - fapi::TARGET_STATE_FUNCTIONAL); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiGetChildChiplets (MCS) on %s", - i_target.toEcmdString()); - break; - } - - // apply MCS SCOM initfile only for functional chiplets - for (std::vector<fapi::Target>::iterator i = mcs_targets.begin(); - (i != mcs_targets.end()) && rc.ok(); - i++) - { - // execute MCS SCOM initfile - initfile_targets.clear(); - initfile_targets.push_back(*i); - initfile_targets.push_back(i_target); - FAPI_INF("proc_chiplet_scominit: Executing %s on %s", - PROC_CHIPLET_SCOMINIT_MCS_IF, i->toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - initfile_targets, - PROC_CHIPLET_SCOMINIT_MCS_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s", - PROC_CHIPLET_SCOMINIT_MCS_IF, - i->toEcmdString()); - break; - } - - // determine MCS position - rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, &(*i), mcs_pos); - - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: Error from FAPI_ATTR_GET (ATTR_CHIP_UNIT_POS) on %s", - i->toEcmdString()); - break; - } - - if (mcs_pos < master_mcs_pos) - { - fapi::Target cen_target_unused; - rc = fapiGetOtherSideOfMemChannel(*i, - cen_target_unused, - fapi::TARGET_STATE_FUNCTIONAL); - // use return code only to indicate presence of connected Centaur, - // do not propogate/emit error if not connected - if (rc.ok()) - { - FAPI_DBG("Updating master_mcs_pos to %d", mcs_pos); - FAPI_DBG(" Target: %s", cen_target_unused.toEcmdString()); - master_mcs = *i; - master_mcs_pos = mcs_pos; - } - else - { - rc = fapi::FAPI_RC_SUCCESS; - } - } - - } - if (!rc.ok()) - { - break; - } - - if (master_mcs.getType() == fapi::TARGET_TYPE_MCS_CHIPLET) - { - // set MCMODE0Q_ENABLE_CENTAUR_SYNC on first target only - // (this bit is required to be set on at most one MCS/chip) - rc_ecmd |= data.flushTo0(); - rc_ecmd |= data.setBit(MCSMODE0_EN_CENTAUR_SYNC_BIT); - rc_ecmd |= mask.setBit(MCSMODE0_EN_CENTAUR_SYNC_BIT); - - // check buffer manipulation return codes - if (rc_ecmd) - { - FAPI_ERR("proc_chiplet_scominit: Error 0x%X setting up MCSMODE0 data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // write register with updated content - rc = fapiPutScomUnderMask(master_mcs, - MCS_MCSMODE0_0x02011807, - data, - mask); - if (!rc.ok()) - { - FAPI_ERR("proc_chiplet_scominit: fapiPutScomUnderMask error (MCS_MCSMODE0_0x02011807) on %s", - master_mcs.toEcmdString()); - break; - } - - } - } - // unsupported target type - else - { - FAPI_ERR("proc_chiplet_scominit: Unsupported target type"); - const fapi::Target & TARGET = i_target; - FAPI_SET_HWP_ERROR(rc, RC_PROC_CHIPLET_SCOMINIT_INVALID_TARGET); - break; - } - } while(0); - - // mark HWP exit - FAPI_INF("proc_chiplet_scominit: End"); - return rc; -} - - -} // extern "C" diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H deleted file mode 100644 index 8548fb7c2..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H +++ /dev/null @@ -1,119 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2015 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_chiplet_scominit.H,v 1.17 2015/03/17 18:54:30 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_chiplet_scominit.H,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : proc_chiplet_scominit.H -// *! DESCRIPTION : Invoke initfiles for proc_chiplet_scominit istep (FAPI) -// *! -// *! OWNER NAME : Mike Jones Email: mjjones@us.ibm.com -// *! BACKUP NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -// *! ADDITIONAL COMMENTS : -// *! -//------------------------------------------------------------------------------ - -#ifndef PROC_CHIPLET_SCOMINIT_H_ -#define PROC_CHIPLET_SCOMINIT_H_ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <fapi.H> - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ - -const char * const PROC_CHIPLET_SCOMINIT_FBC_IF = "p8.fbc.scom.if"; -const char * const PROC_CHIPLET_SCOMINIT_PSI_IF = "p8.psi.scom.if"; -const char * const PROC_CHIPLET_SCOMINIT_TPBRIDGE_IF = "p8.tpbridge.scom.if"; -const char * const PROC_CHIPLET_SCOMINIT_NX_IF = "p8.nx.scom.if"; -const char * const PROC_CHIPLET_SCOMINIT_AS_IF = "p8.as.scom.if"; -const char * const PROC_CHIPLET_SCOMINIT_CXA_IF = "p8.cxa.scom.if"; -const char * const PROC_CHIPLET_SCOMINIT_A_X_PCI_DMI_IF = "p8.a_x_pci_dmi_fir.scom.if"; -const char * const PROC_CHIPLET_SCOMINIT_NPU_IF = "p8.npu.scom.if"; -const char * const PROC_CHIPLET_SCOMINIT_MCS_IF = "p8.mcs.scom.if"; - - -// FSI GP6 Register field/bit definitions -const uint32_t MBOX_FSIGP6_XBUS_RESONANT_CLOCK_CONFIG_START_BIT = 0; -const uint32_t MBOX_FSIGP6_XBUS_RESONANT_CLOCK_CONFIG_END_BIT = 15; - -const uint16_t XBUS_RESONANT_CLOCK_CONFIG = 0xF180; - -// MCS Mode0 Register field/bit definitions -const uint32_t MCSMODE0_EN_CENTAUR_SYNC_BIT = 61; - -// CAPP APC Master LCO Target Register field/bit definitions -const uint32_t CAPP_APC_MASTER_LCO_TARGET_MIN_START_BIT = 13; -const uint32_t CAPP_APC_MASTER_LCO_TARGET_MIN_END_BIT = 15; - -// NPU FIR Register field/bit definitions -const uint32_t NPU_FIR_NTL_DL2TL_PARITY_ERR_BIT = 27; - -//------------------------------------------------------------------------------ -// Structure definitions -//------------------------------------------------------------------------------ - -// function pointer typedef definition for HWP call support -typedef fapi::ReturnCode -(*proc_chiplet_scominit_FP_t)(const fapi::Target & i_target); - -extern "C" { - -//------------------------------------------------------------------------------ -// Function prototypes -//------------------------------------------------------------------------------ - -/** - * @brief HWP which invokes initfiles for proc_chiplet_scominit istep - * - * Should be called with all functional proc chips. It invokes initfiles - * on chiplets. - * - * @param[in] i_target Reference to target - * If TARGET_TYPE_PROC_CHIP, calls: - * - p8.fbc.scom.initfile - * - p8.psi.scom.initfile - * - p8.tpbridge.scom.initfile - * - p8.nx.scom.initfile - * - p8.cxa.scom.initfile - * - p8.a_x_pci_dmi_fir.scom.initfile - * - p8.as.scom.initfile - * - p8.mcs.scom.initfile for each functional MCS chiplet - * - * @return ReturnCode - */ -fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target); - - -} // extern "C" - -#endif // PROC_CHIPLET_SCOMINIT_H_ diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit_errors.xml b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit_errors.xml deleted file mode 100644 index 26df32962..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit_errors.xml +++ /dev/null @@ -1,36 +0,0 @@ -<!-- IBM_PROLOG_BEGIN_TAG --> -<!-- This is an automatically generated prolog. --> -<!-- --> -<!-- $Source: src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit_errors.xml $ --> -<!-- --> -<!-- OpenPOWER HostBoot Project --> -<!-- --> -<!-- COPYRIGHT International Business Machines Corp. 2012,2014 --> -<!-- --> -<!-- Licensed under the Apache License, Version 2.0 (the "License"); --> -<!-- you may not use this file except in compliance with the License. --> -<!-- You may obtain a copy of the License at --> -<!-- --> -<!-- http://www.apache.org/licenses/LICENSE-2.0 --> -<!-- --> -<!-- Unless required by applicable law or agreed to in writing, software --> -<!-- distributed under the License is distributed on an "AS IS" BASIS, --> -<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or --> -<!-- implied. See the License for the specific language governing --> -<!-- permissions and limitations under the License. --> -<!-- --> -<!-- IBM_PROLOG_END_TAG --> -<!-- $Id: proc_chiplet_scominit_errors.xml,v 1.3 2013/10/28 02:10:52 jmcgill Exp $ --> -<!-- Error definitions for proc_chiplet_scominit procedure --> -<hwpErrors> - <!-- *********************************************************************** --> - <hwpError> - <rc>RC_PROC_CHIPLET_SCOMINIT_INVALID_TARGET</rc> - <ffdc>TARGET</ffdc> - <description>Invalid target type presented to proc_chiplet_scominit HWP (expects TARGET_TYPE_PROC_CHIP).</description> - <callout> - <procedure>CODE</procedure> - <priority>HIGH</priority> - </callout> - </hwpError> -</hwpErrors> diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit.C b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit.C deleted file mode 100644 index 44e28600b..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit.C +++ /dev/null @@ -1,218 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit.C $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2013,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_xbus_scominit.C,v 1.6 2014/03/12 18:56:56 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_xbus_scominit.C,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : proc_xbus_scominit.C -// *! DESCRIPTION : Invoke XBUS initfile (FAPI) -// *! -// *! OWNER NAME : Mike Jones Email: mjjones@us.ibm.com -// *! BACKUP NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -// *! ADDITIONAL COMMENTS : -// *! -//------------------------------------------------------------------------------ -//------------------------------------------------------------------------------ -// Version Date Owner Description -//------------------------------------------------------------------------------ -// 1.6 03/10/14 jmcgill Add endpoint power up -// 1.5 11/08/13 jmcgill Updates for RAS review -// 1.4 02/06/13 thomsen Changed order of targets expected by -// initfile -// 1.3 01/31/13 thomsen Added separate calls to base & -// customized scominit files. Removed -// separate calls to SIM vs. HW scominit -// files -// 1.2 01/09/13 thomsen Added separate calls to SIM vs. HW -// scominit files -// Added parent chip and connected targets -// to vector of passed targets. This is to -// match scominit file updates. -// Added commented-out call to OVERRIDE -// initfile for system/bus/lane specific -// inits -// 1.1 8/11/12 jmcgill Initial release -//------------------------------------------------------------------------------ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <fapiHwpExecInitFile.H> -#include <proc_xbus_scominit.H> -#include <p8_scom_addresses.H> - -extern "C" { - -//------------------------------------------------------------------------------ -// Function definitions -//------------------------------------------------------------------------------ - -// HWP entry point, comments in header -fapi::ReturnCode proc_xbus_scominit(const fapi::Target & i_xbus_target, - const fapi::Target & i_connected_xbus_target) -{ - fapi::ReturnCode rc; - uint32_t rc_ecmd = 0x0; - - std::vector<fapi::Target> targets; - fapi::Target this_pu_target; - fapi::Target connected_pu_target; - uint8_t xbus_enable_attr; - - ecmdDataBufferBase data(64); - - // mark HWP entry - FAPI_INF("proc_xbus_scominit: Start"); - - do - { - // test target types to confirm correctness before calling initfile(s) - // to execute - if ((i_xbus_target.getType() == fapi::TARGET_TYPE_XBUS_ENDPOINT) && - (i_connected_xbus_target.getType() == fapi::TARGET_TYPE_XBUS_ENDPOINT)) - { - // get parent chip targets - rc = fapiGetParentChip(i_xbus_target, this_pu_target); - if (!rc.ok()) - { - FAPI_ERR("proc_xbus_scominit: Error from fapiGetParentChip (this target, %s)", - i_xbus_target.toEcmdString()); - break; - } - - rc = fapiGetParentChip(i_connected_xbus_target, connected_pu_target); - if (!rc.ok()) - { - FAPI_ERR("proc_xbus_scominit: Error from fapiGetParentChip (connected target, %s)", - i_connected_xbus_target.toEcmdString()); - break; - } - - // populate targets vector - targets.push_back(i_xbus_target); // chiplet target - targets.push_back(this_pu_target); // chip target - targets.push_back(i_connected_xbus_target); // connected chiplet target - targets.push_back(connected_pu_target); // connected chip target - - // query XBUS partial good attribute - rc = FAPI_ATTR_GET(ATTR_PROC_X_ENABLE, - &this_pu_target, - xbus_enable_attr); - if (!rc.ok()) - { - FAPI_ERR("proc_xbus_scominit: Error querying ATTR_PROC_X_ENABLE (%s)", - this_pu_target.toEcmdString()); - break; - } - - if (xbus_enable_attr != fapi::ENUM_ATTR_PROC_X_ENABLE_ENABLE) - { - FAPI_ERR("proc_xbus_scominit: Partial good attribute error"); - const fapi::Target & TARGET = this_pu_target; - FAPI_SET_HWP_ERROR(rc, RC_PROC_XBUS_SCOMINIT_PARTIAL_GOOD_ERR); - break; - } - - // assert IO reset to power-up bus endpoint logic - // read-modify-write, set single reset bit (HW auto-clears) - // on writeback - rc = fapiGetScom(i_xbus_target, X_XBUS_SCOM_MODE_PB_0x04011020, data); - if (!rc.ok()) - { - FAPI_ERR("proc_xbus_scominit: Error from fapiGetScom (X_XBUS_SCOM_MODE_PB_0x04011020) on %s", - i_xbus_target.toEcmdString()); - break; - } - - rc_ecmd |= data.setBit(2,5); - if (rc_ecmd) - { - FAPI_ERR("proc_xbus_scominit: Error 0x%x forming XBUS SCOM Mode PB register data buffer on %s", - rc_ecmd, i_xbus_target.toEcmdString()); - rc.setEcmdError(rc_ecmd); - break; - } - - rc = fapiPutScom(i_xbus_target, X_XBUS_SCOM_MODE_PB_0x04011020, data); - if (!rc.ok()) - { - FAPI_ERR("proc_xbus_scominit: Error from fapiPutScom (X_XBUS_SCOM_MODE_PB_0x04011020) on %s", - i_xbus_target.toEcmdString()); - break; - } - - - // Call BASE XBUS SCOMINIT - FAPI_INF("proc_xbus_scominit: fapiHwpExecInitfile executing %s on %s, %s, %s, %s", - XBUS_BASE_IF, - i_xbus_target.toEcmdString(), this_pu_target.toEcmdString(), - i_connected_xbus_target.toEcmdString(), connected_pu_target.toEcmdString()); - FAPI_EXEC_HWP(rc, fapiHwpExecInitFile, targets, XBUS_BASE_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_xbus_scominit: Error from fapiHwpExecInitfile executing %s on %s, %s, %s, %s", - XBUS_BASE_IF, - i_xbus_target.toEcmdString(), this_pu_target.toEcmdString(), - i_connected_xbus_target.toEcmdString(), connected_pu_target.toEcmdString()); - break; - } - - // Call CUSTOMIZED XBUS SCOMINIT - FAPI_INF("proc_xbus_scominit: fapiHwpExecInitfile executing %s on %s, %s, %s, %s", - XBUS_CUSTOM_IF, - i_xbus_target.toEcmdString(), this_pu_target.toEcmdString(), - i_connected_xbus_target.toEcmdString(), connected_pu_target.toEcmdString()); - FAPI_EXEC_HWP(rc, fapiHwpExecInitFile, targets, XBUS_CUSTOM_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_xbus_scominit: Error from fapiHwpExecInitfile executing %s on %s, %s, %s, %s", - XBUS_BASE_IF, - i_xbus_target.toEcmdString(), this_pu_target.toEcmdString(), - i_connected_xbus_target.toEcmdString(), connected_pu_target.toEcmdString()); - break; - } - } - // unsupported target type - else - { - FAPI_ERR("proc_xbus_scominit: Unsupported target type(s)"); - const fapi::Target & THIS_XBUS_TARGET = i_xbus_target; - const fapi::Target & CONNECTED_XBUS_TARGET = i_connected_xbus_target; - FAPI_SET_HWP_ERROR(rc, RC_PROC_XBUS_SCOMINIT_INVALID_TARGET); - break; - } - } while (0); - - // mark HWP exit - FAPI_INF("proc_xbus_scominit: End"); - return rc; -} - - -} // extern "C" diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit.H b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit.H deleted file mode 100644 index 328f1b0be..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit.H +++ /dev/null @@ -1,91 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2013,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_xbus_scominit.H,v 1.3 2013/11/09 18:37:40 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_xbus_scominit.H,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : proc_xbus_scominit.H -// *! DESCRIPTION : Invoke XBUS initfile (FAPI) -// *! -// *! OWNER NAME : Mike Jones Email: mjjones@us.ibm.com -// *! BACKUP NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -// *! ADDITIONAL COMMENTS : -// *! -//------------------------------------------------------------------------------ - -#ifndef PROC_XBUS_SCOMINIT_H_ -#define PROC_XBUS_SCOMINIT_H_ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <fapi.H> - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ -const char * const XBUS_BASE_IF = "p8.xbus.scom.if"; -const char * const XBUS_CUSTOM_IF = "p8.xbus.custom.scom.if"; - -//------------------------------------------------------------------------------ -// Structure definitions -//------------------------------------------------------------------------------ - -// function pointer typedef definition for HWP call support -typedef fapi::ReturnCode -(*proc_xbus_scominit_FP_t)(const fapi::Target & i_xbus_target, - const fapi::Target & i_connected_xbus_target); - -extern "C" { - -//------------------------------------------------------------------------------ -// Function prototypes -//------------------------------------------------------------------------------ - -/** - * @brief HWP that calls the XBUS SCOM initfiles - * - * Should be called for all valid/connected XBUS endpoints - * - * @param[in] i_xbus_target Reference to XBUS chiplet target - * i_connected_xbus_target Reference to connected XBUS chiplet target - * If TARGET_TYPE_XBUS_ENDPOINT, calls: - * - p8.xbus.scom.initfile - * - p8.xbus.custom.scom.initfile - * - * @return ReturnCode - */ -fapi::ReturnCode proc_xbus_scominit( - const fapi::Target & i_xbus_target, - const fapi::Target & i_connected_xbus_target); - - -} // extern "C" - -#endif // PROC_XBUS_SCOMINIT_H_ diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit_errors.xml b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit_errors.xml deleted file mode 100644 index 5d13d6b0a..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit_errors.xml +++ /dev/null @@ -1,46 +0,0 @@ -<!-- IBM_PROLOG_BEGIN_TAG --> -<!-- This is an automatically generated prolog. --> -<!-- --> -<!-- $Source: src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_xbus_scominit_errors.xml $ --> -<!-- --> -<!-- OpenPOWER HostBoot Project --> -<!-- --> -<!-- COPYRIGHT International Business Machines Corp. 2013,2014 --> -<!-- --> -<!-- Licensed under the Apache License, Version 2.0 (the "License"); --> -<!-- you may not use this file except in compliance with the License. --> -<!-- You may obtain a copy of the License at --> -<!-- --> -<!-- http://www.apache.org/licenses/LICENSE-2.0 --> -<!-- --> -<!-- Unless required by applicable law or agreed to in writing, software --> -<!-- distributed under the License is distributed on an "AS IS" BASIS, --> -<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or --> -<!-- implied. See the License for the specific language governing --> -<!-- permissions and limitations under the License. --> -<!-- --> -<!-- IBM_PROLOG_END_TAG --> -<!-- $Id: proc_xbus_scominit_errors.xml,v 1.4 2013/11/09 18:38:44 jmcgill Exp $ --> -<!-- Error definitions for proc_xbus_scominit procedure --> -<hwpErrors> - <!-- *********************************************************************** --> - <hwpError> - <rc>RC_PROC_XBUS_SCOMINIT_INVALID_TARGET</rc> - <ffdc>THIS_XBUS_TARGET</ffdc> - <ffdc>CONNECTED_XBUS_TARGET</ffdc> - <description>Invalid target type presented to proc_xbus_scominit HWP (expects TARGET_TYPE_XBUS_ENDPOINT).</description> - <callout> - <procedure>CODE</procedure> - <priority>HIGH</priority> - </callout> - </hwpError> - <hwpError> - <rc>RC_PROC_XBUS_SCOMINIT_PARTIAL_GOOD_ERR</rc> - <ffdc>TARGET</ffdc> - <description>Partial good attribute state does not allow for action on chiplet target.</description> - <callout> - <procedure>CODE</procedure> - <priority>HIGH</priority> - </callout> - </hwpError> -</hwpErrors> diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit/proc_pcie_scominit.C b/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit/proc_pcie_scominit.C deleted file mode 100644 index ee4080bbf..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit/proc_pcie_scominit.C +++ /dev/null @@ -1,531 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit/proc_pcie_scominit.C $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2015 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_pcie_scominit.C,v 1.11 2014/11/18 17:38:50 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_pcie_scominit.C,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : proc_pcie_scominit.C -// *! DESCRIPTION : Perform PCIe Physical IO Inits (Phase 1, Steps 1-9) (FAPI) -// *! -// *! OWNER NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -//------------------------------------------------------------------------------ - - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <fapiHwpExecInitFile.H> -#include <proc_pcie_scominit.H> - -extern "C" { - -//------------------------------------------------------------------------------ -// Function definitions -//------------------------------------------------------------------------------ - -//------------------------------------------------------------------------------ -// function: initialize IOP/PHB -// set master IOP lane configuration and IOP swap bits via PCIe GP4 -// set PHB iovalids via PCIe GP0 -// remove IOP logic from reset via PCIe GP4 -// parameters: i_target => processor chip target -// i_num_iop => number of IOP units -// i_num_phb => number of PHB units -// returns: FAPI_RC_SUCCESS if all actions are successful, -// RC_PROC_PCIE_SCOMINIT_IOP_CONFIG_ATTR_ERR if invalid IOP lane -// configuration attribute value is presented, -// RC_PROC_PCIE_SCOMINIT_IOP_SWAP_ATTR_ERR if invalid IOP swap -// attribute value is presented, -// else error -//------------------------------------------------------------------------------ -fapi::ReturnCode proc_pcie_scominit_iop_init( - const fapi::Target & i_target, - uint8_t i_num_iop, - uint8_t i_num_phb) -{ - fapi::ReturnCode rc; - uint32_t rc_ecmd = 0; - - // attribute storage - uint8_t iop_config; - uint8_t iop_swap[PROC_PCIE_SCOMINIT_NUM_IOP]; - uint8_t phb_active_mask; - bool phb_active[PROC_PCIE_SCOMINIT_NUM_PHB]; - uint8_t refclock_active_mask; - bool refclock_active[PROC_PCIE_SCOMINIT_NUM_PHB]; - - // data buffers for GP4/GP0 accesses - ecmdDataBufferBase gp4_data(64); - ecmdDataBufferBase gp0_data(64); - - // mark function entry - FAPI_INF("proc_pcie_scominit_iop_init: Start"); - - do - { - // retrieve IOP lane configuration and check value received - FAPI_DBG("proc_pcie_scominit_iop_init: Querying IOP lane configuration attribute"); - rc = FAPI_ATTR_GET(ATTR_PROC_PCIE_IOP_CONFIG, - &i_target, - iop_config); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error from FAPI_ATTR_GET (ATTR_PROC_PCIE_IOP_CONFIG)"); - break; - } - FAPI_DBG("proc_pcie_scominit_iop_init: ATTR_PROC_PCIE_IOP_CONFIG = %02X", - iop_config); - // ensure that encoded value is supported - if (iop_config > PCIE_GP4_IOP_LANE_CFG_MAX) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Invalid IOP lane configuration attribute value 0x%02X", - iop_config); - const fapi::Target & TARGET = i_target; - const uint8_t& ATTR_DATA = iop_config; - FAPI_SET_HWP_ERROR(rc, RC_PROC_PCIE_SCOMINIT_IOP_CONFIG_ATTR_ERR); - break; - } - - // retrieve per-IOP swap configuration and check value received - FAPI_DBG("proc_pcie_scominit_iop_init: Querying per-IOP swap attribute"); - rc = FAPI_ATTR_GET(ATTR_PROC_PCIE_IOP_SWAP, - &i_target, - iop_swap); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error from FAPI_ATTR_GET (ATTR_PROC_PCIE_IOP_SWAP)"); - break; - } - for (size_t i = 0; (i < i_num_iop) && rc.ok(); i++) - { - FAPI_DBG("proc_pcie_scominit_iop_init: ATTR_PROC_PCIE_IOP_SWAP[%zd]= %02X", - i, iop_swap[i]); - if (iop_swap[i] > PCIE_GP4_IOP_SWAP_MAX) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Invalid IOP%zd swap attribute value 0x%02X", - i, iop_swap[i]); - const fapi::Target & TARGET = i_target; - const uint8_t& IOP_DATA = i; - const uint8_t ATTR_DATA = iop_swap[i]; - FAPI_SET_HWP_ERROR(rc, RC_PROC_PCIE_SCOMINIT_IOP_SWAP_ATTR_ERR); - break; - } - } - if (!rc.ok()) - { - break; - } - - // set PCIe GP4 mask for IOP lane configuration/swap setup - rc_ecmd |= gp4_data.insertFromRight( - iop_config, - PCIE_GP4_IOP_LANE_CFG_START_BIT, - (PCIE_GP4_IOP_LANE_CFG_END_BIT- - PCIE_GP4_IOP_LANE_CFG_START_BIT+1)); - - for (size_t i = 0; (i < i_num_iop) && !rc_ecmd; i++) - { - rc_ecmd |= gp4_data.insertFromRight( - iop_swap[i], - PCIE_GP4_IOP_SWAP_START_BIT[i], - (PCIE_GP4_IOP_SWAP_END_BIT[i]- - PCIE_GP4_IOP_SWAP_START_BIT[i]+1)); - } - if (rc_ecmd) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error 0x%x setting up PCIe GP4 IOP config data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // write PCIe GP4 data via OR mask register - FAPI_DBG("proc_pcie_scominit_iop_init: Writing PCIe GP4 to set IOP configuration"); - rc = fapiPutScom(i_target, PCIE_GP4_OR_0x09000007, gp4_data); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error from fapiPutScom (PCIE_GP4_OR_0x09000007)"); - break; - } - - // retrieve active PHB/refclock enable attributes and check value received - FAPI_DBG("proc_pcie_scominit_iop_init: Querying PHB active attribute"); - rc = FAPI_ATTR_GET(ATTR_PROC_PCIE_PHB_ACTIVE, - &i_target, - phb_active_mask); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error from FAPI_ATTR_GET (ATTR_PROC_PCIE_PHB_ACTIVE)"); - break; - } - - FAPI_DBG("proc_pcie_scominit_iop_init: Querying refclock enable attribute"); - rc = FAPI_ATTR_GET(ATTR_PROC_PCIE_REFCLOCK_ENABLE, - &i_target, - refclock_active_mask); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error from FAPI_ATTR_GET (ATTR_PROC_PCIE_REFCLOCK_ENABLE)"); - break; - } - - for (size_t i = 0; (i < i_num_phb); i++) - { - phb_active[i] = ((phb_active_mask >> (7-i)) & 0x1)?(true):(false); - refclock_active[i] = ((refclock_active_mask >> (7-i)) & 0x1)?(true):(false); - } - - // set PCIe GP0 mask for PHB iovalid/refclock enable - for (size_t i = 0; (i < i_num_phb) && !rc_ecmd; i++) - { - rc_ecmd |= gp0_data.writeBit( - PCIE_GP0_PHB_IOVALID_BIT[i], - phb_active[i]); - rc_ecmd |= gp0_data.writeBit( - PCIE_GP0_PHB_REFCLOCK_DRIVE_EN_BIT[i], - refclock_active[i]); - } - if (rc_ecmd) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error 0x%x setting up PCIe GP0 data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // write PCIe GP0 data via OR mask register - FAPI_DBG("proc_pcie_scominit_iop_init: Writing PCIe GP0 to set PHB iovalids and refclock drive enables"); - rc = fapiPutScom(i_target, PCIE_GP0_OR_0x09000005, gp0_data); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error from fapiPutScom (PCIE_GP0_OR_0x09000005)"); - break; - } - - // set PCIe GP4 mask for IOP reset - rc_ecmd |= gp4_data.flushTo0(); - for (size_t i = 0; (i < i_num_iop) && !rc_ecmd; i++) - { - rc_ecmd |= gp4_data.setBit( - PCIE_GP4_IOP_RESET_BIT[i]); - } - if (rc_ecmd) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error 0x%x setting up PCIe GP4 IOP reset data buffer (set)", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // write PCIe GP4 OR mask register (set reset bit) - FAPI_DBG("proc_pcie_scominit_iop_init: Writing PCIe GP4 to set IOP reset"); - rc = fapiPutScom(i_target, PCIE_GP4_OR_0x09000007, gp4_data); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error from fapiPutScom (PCIE_GP4_OR_0x09000007)"); - break; - } - - // invert data buffer to clear reset bits - rc_ecmd |= gp4_data.invert(); - if (rc_ecmd) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error 0x%x setting up PCIe GP4 IOP reset data buffer (clear)", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // write PCIe GP4 AND mask register (clear reset bit) - FAPI_DBG("proc_pcie_scominit_iop_init: Writing PCIe GP4 to clear IOP reset"); - rc = fapiPutScom(i_target, PCIE_GP4_AND_0x09000006, gp4_data); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_init: Error from fapiPutScom (PCIE_GP4_AND_0x09000006)"); - break; - } - - } while(0); - - // mark function exit - FAPI_INF("proc_pcie_scominit_iop_init: End"); - return rc; -} - - -//------------------------------------------------------------------------------ -// function: apply IOP customization via SCOM initfile -// parameters: i_target => processor chip target -// returns: FAPI_RC_SUCCESS if initfile evaluation is successful, -// else error -//------------------------------------------------------------------------------ -fapi::ReturnCode proc_pcie_scominit_iop_config( - const fapi::Target & i_target) -{ - fapi::ReturnCode rc; - std::vector<fapi::Target> targets; - - // mark function entry - FAPI_INF("proc_pcie_scominit_iop_config: Start"); - - do - { - // execute Phase1 SCOM initfile - targets.push_back(i_target); - FAPI_INF("proc_pcie_scominit_iop_config: Executing %s on %s", - PROC_PCIE_SCOMINIT_PHASE1_IF, i_target.toEcmdString()); - FAPI_EXEC_HWP( - rc, - fapiHwpExecInitFile, - targets, - PROC_PCIE_SCOMINIT_PHASE1_IF); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_config: Error from fapiHwpExecInitfile executing %s on %s", - PROC_PCIE_SCOMINIT_PHASE1_IF, - i_target.toEcmdString()); - break; - } - } while(0); - - // mark function exit - FAPI_INF("proc_pcie_scominit_iop_config: End"); - return rc; -} - - -//------------------------------------------------------------------------------ -// function: mark IOP programming complete (executed after all IOP -// customization is complete) -// parameters: i_target => processor chip target -// i_num_iop => number of IOP units -// returns: FAPI_RC_SUCCESS if program complete is successful for all IOPs, -// else error -//------------------------------------------------------------------------------ -fapi::ReturnCode proc_pcie_scominit_iop_complete( - const fapi::Target & i_target, - uint8_t i_num_iop) -{ - fapi::ReturnCode rc; - uint32_t rc_ecmd = 0; - ecmdDataBufferBase data(64), mask(64); - - // mark function entry - FAPI_INF("proc_pcie_scominit_iop_complete: Start"); - - do - { - // configure data/mask required to set program complete data pattern - rc_ecmd |= data.setBit(PLL_GLOBAL_CONTROL2_PROG_COMPLETE_BIT); - rc_ecmd |= mask.setBit(PLL_GLOBAL_CONTROL2_PROG_COMPLETE_BIT); - if (rc_ecmd) - { - FAPI_ERR("proc_pcie_scominit_iop_complete: Error 0x%x setting up PCIe PLL Global Control 2 register data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // set IOP program complete - for (size_t i = 0; i < i_num_iop; i++) - { - rc = fapiPutScomUnderMask(i_target, - PROC_PCIE_SCOMINIT_PLL_GLOBAL_CONTROL2[i], - data, - mask); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_complete: Error from fapiPutScomUnderMask (PCIE_IOP%zd_PLL_GLOBAL_CONTROL2_0x%016llX)", - i, PROC_PCIE_SCOMINIT_PLL_GLOBAL_CONTROL2[i]); - break; - } - } - if (!rc.ok()) - { - break; - } - - // configure IOP FIR - for (size_t i = 0; i < i_num_iop; i++) - { - rc_ecmd |= data.flushTo0(); - if (rc_ecmd) - { - FAPI_ERR("proc_pcie_scominit_iop_complete: Error 0x%x setting up PLL FIR register clear data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // clear FIR - rc = fapiPutScom(i_target, - PROC_PCIE_SCOMINIT_PLL_FIR[i], - data); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_complete: Error from fapiPutScom (PCIE_IOP%zd_PLL_FIR_0x%08X)", - i, PROC_PCIE_SCOMINIT_PLL_FIR[i]); - break; - } - - // clear FIR WOF - rc = fapiPutScom(i_target, - PROC_PCIE_SCOMINIT_PLL_FIR_WOF[i], - data); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_complete: Error from fapiPutScom (PCIE_IOP%zd_PLL_FIR_WOF_0x%08X)", - i, PROC_PCIE_SCOMINIT_PLL_FIR_WOF[i]); - break; - } - - rc_ecmd |= data.setDoubleWord(0, PCIE_PLL_FIR_MASK_VAL); - if (rc_ecmd) - { - FAPI_ERR("proc_pcie_scominit_iop_complete: Error 0x%x setting up PLL FIR mask register data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // unmask - rc = fapiPutScom(i_target, - PROC_PCIE_SCOMINIT_PLL_FIR_MASK[i], - data); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit_iop_complete: Error from fapiPutScom (PCIE_IOP%zd_PLL_FIR_MASK_0x%08X)", - i, PROC_PCIE_SCOMINIT_PLL_FIR_MASK[i]); - break; - } - } - if (!rc.ok()) - { - break; - } - - } while(0); - - // mark function exit - FAPI_INF("proc_pcie_scominit_iop_complete: End"); - return rc; -} - - -// HWP entry point, comments in header -fapi::ReturnCode proc_pcie_scominit( - const fapi::Target & i_target) -{ - fapi::ReturnCode rc; - uint8_t pcie_enabled; - uint8_t num_phb; - uint8_t num_iop; - - // mark HWP entry - FAPI_INF("proc_pcie_scominit: Start"); - - do - { - // check for supported target type - if (i_target.getType() != fapi::TARGET_TYPE_PROC_CHIP) - { - FAPI_ERR("proc_pcie_scominit: Unsupported target type"); - const fapi::Target & TARGET = i_target; - FAPI_SET_HWP_ERROR(rc, RC_PROC_PCIE_SCOMINIT_INVALID_TARGET); - break; - } - - // query PCIE partial good attribute - rc = FAPI_ATTR_GET(ATTR_PROC_PCIE_ENABLE, - &i_target, - pcie_enabled); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit: Error querying ATTR_PROC_PCIE_ENABLE"); - break; - } - - // initialize/configure/finalize PHB & IOP programming (only if partial good - // attribute is set) - if (pcie_enabled == fapi::ENUM_ATTR_PROC_PCIE_ENABLE_ENABLE) - { - // determine PHB/IOP configuration - rc = FAPI_ATTR_GET(ATTR_PROC_PCIE_NUM_PHB, - &i_target, - num_phb); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit: Error from FAPI_ATTR_GET (ATTR_PROC_PCIE_NUM_PHB)"); - break; - } - - rc = FAPI_ATTR_GET(ATTR_PROC_PCIE_NUM_IOP, - &i_target, - num_iop); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit: Error from FAPI_ATTR_GET (ATTR_PROC_PCIE_NUM_IOP)"); - break; - } - - rc = proc_pcie_scominit_iop_init(i_target, num_iop, num_phb); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit: Error from proc_pcie_scominit_iop_init"); - break; - } - - rc = proc_pcie_scominit_iop_config(i_target); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit: Error from proc_pcie_scominit_iop_config"); - break; - } - - rc = proc_pcie_scominit_iop_complete(i_target, num_iop); - if (!rc.ok()) - { - FAPI_ERR("proc_pcie_scominit: Error from proc_pcie_scominit_iop_complete"); - break; - } - } - else - { - FAPI_DBG("proc_pcie_scominit: Skipping initialization (partial good)"); - } - - } while(0); - - // mark HWP exit - FAPI_INF("proc_pcie_scominit: End"); - return rc; -} - - -} // extern "C" diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit/proc_pcie_scominit.H b/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit/proc_pcie_scominit.H deleted file mode 100644 index 59797ffa1..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit/proc_pcie_scominit.H +++ /dev/null @@ -1,176 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_pcie_scominit/proc_pcie_scominit.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2015 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_pcie_scominit.H,v 1.7 2014/11/18 17:38:50 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_pcie_scominit.H,v $ -//------------------------------------------------------------------------------ -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -//------------------------------------------------------------------------------ -// *! TITLE : proc_pcie_scominit.H -// *! DESCRIPTION : Perform PCIe Physical IO Inits (Phase 1, Steps 1-9 & -// *! Phase 2, Step 33) (FAPI) -// *! -// *! OWNER NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -// *! ADDITIONAL COMMENTS : -// *! Set IOP lane config/swap bits -// *! Set iovalid for active PHBs -// *! Remove active IOPs from reset -// *! Perform IOP overrides/customization -// *! Mark IOP programming complete -// *! -//------------------------------------------------------------------------------ - -#ifndef PROC_PCIE_SCOMINIT_H_ -#define PROC_PCIE_SCOMINIT_H_ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <fapi.H> -#include <p8_scom_addresses.H> - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ - -// SCOM initfile to execute -const char * const PROC_PCIE_SCOMINIT_PHASE1_IF = "p8.pe.phase1.scom.if"; - -// PCIe physical constants -const uint8_t PROC_PCIE_SCOMINIT_NUM_IOP = 3; -const uint8_t PROC_PCIE_SCOMINIT_NUM_PHB = 4; - -// PCIe GP0 register field/bit definitions -const uint32_t PCIE_GP0_PHB_IOVALID_BIT[PROC_PCIE_SCOMINIT_NUM_PHB] = -{ - 48, - 49, - 50, - 51 -}; - -const uint32_t PCIE_GP0_PHB_REFCLOCK_DRIVE_EN_BIT[PROC_PCIE_SCOMINIT_NUM_PHB] = -{ - 52, - 53, - 54, - 55 -}; - -// PCIe GP4 register field/bit definitions -const uint32_t PCIE_GP4_IOP_RESET_BIT[PROC_PCIE_SCOMINIT_NUM_IOP] = -{ - 37, - 38, - 39 -}; -const uint32_t PCIE_GP4_IOP_LANE_CFG_START_BIT = 41; -const uint32_t PCIE_GP4_IOP_LANE_CFG_END_BIT = 44; -const uint32_t PCIE_GP4_IOP_SWAP_START_BIT[PROC_PCIE_SCOMINIT_NUM_IOP] = -{ - 47, - 53, - 50 -}; -const uint32_t PCIE_GP4_IOP_SWAP_END_BIT[PROC_PCIE_SCOMINIT_NUM_IOP] = -{ - 49, - 55, - 52 -}; - -// Murano/Venice support lane configurations bewtween 0x0 & 0xC, -// swap values between 0x0 & 0x7 -const uint8_t PCIE_GP4_IOP_LANE_CFG_MAX = 0xC; -const uint8_t PCIE_GP4_IOP_SWAP_MAX = 0x7; - - -// PCIe PLL Global Control Register 2 field/bit definitions -const uint64_t PROC_PCIE_SCOMINIT_PLL_GLOBAL_CONTROL2[PROC_PCIE_SCOMINIT_NUM_IOP] = -{ - PCIE_IOP0_PLL_GLOBAL_CONTROL2_0x8000080A0901143F, - PCIE_IOP1_PLL_GLOBAL_CONTROL2_0x8000080A0901187F, - PCIE_IOP2_PLL_GLOBAL_CONTROL2_0x8000080A09011C7F -}; -const uint32_t PLL_GLOBAL_CONTROL2_PROG_COMPLETE_BIT = 50; - -// PCIe PLL FIR register field/bit definitions -const uint32_t PROC_PCIE_SCOMINIT_PLL_FIR[PROC_PCIE_SCOMINIT_NUM_IOP] = -{ - PCIE_IOP0_PLL_FIR_0x09011400, - PCIE_IOP1_PLL_FIR_0x09011840, - PCIE_IOP2_PLL_FIR_0x09011C40 -}; - -const uint32_t PROC_PCIE_SCOMINIT_PLL_FIR_WOF[PROC_PCIE_SCOMINIT_NUM_IOP] = -{ - PCIE_IOP0_PLL_FIR_WOF_0x09011408, - PCIE_IOP1_PLL_FIR_WOF_0x09011848, - PCIE_IOP2_PLL_FIR_WOF_0x09011C48 -}; - -const uint32_t PROC_PCIE_SCOMINIT_PLL_FIR_MASK[PROC_PCIE_SCOMINIT_NUM_IOP] = -{ - PCIE_IOP0_PLL_FIR_MASK_0x09011403, - PCIE_IOP1_PLL_FIR_MASK_0x09011843, - PCIE_IOP2_PLL_FIR_MASK_0x09011C43 -}; - -const uint64_t PCIE_PLL_FIR_MASK_VAL = 0x0080000000000000ULL; - - -//------------------------------------------------------------------------------ -// Structure definitions -//------------------------------------------------------------------------------ - -// function pointer typedef definition for HWP call support -typedef fapi::ReturnCode -(*proc_pcie_scominit_FP_t)(const fapi::Target & i_target); - -extern "C" { - -//------------------------------------------------------------------------------ -// Function prototypes -//------------------------------------------------------------------------------ - -//------------------------------------------------------------------------------ -// function: perform PCIe Physical IO Inits (Phase 1, Steps 1-9) -// parameters: i_target => processor chip target -// returns: FAPI_RC_SUCCESS if all programming is successful, -// RC_PROC_PCIE_SCOMINIT_IOP_CONFIG_ATTR_ERR if invalid IOP lane -// configuration attribute value is presented, -// RC_PROC_PCIE_SCOMINIT_IOP_SWAP_ATTR_ERR if invalid IOP swap -// attribute value is presented, -// RC_PROC_PCIE_SCOMINIT_INVALID_TARGET if invalid target is supplied, -// else error -//------------------------------------------------------------------------------ -fapi::ReturnCode proc_pcie_scominit(const fapi::Target & i_target); - - -} // extern "C" - -#endif // PROC_PCIE_SCOMINIT_H_ diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets/proc_scomoverride_chiplets.C b/src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets/proc_scomoverride_chiplets.C deleted file mode 100644 index 260f3563d..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets/proc_scomoverride_chiplets.C +++ /dev/null @@ -1,72 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets/proc_scomoverride_chiplets.C $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_scomoverride_chiplets.C,v 1.3 2013/10/28 03:57:15 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_scomoverride_chiplets.C,v $ -//------------------------------------------------------------------------------ -// *| -// *! (C) Copyright International Business Machines Corp. 2011 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -// *| -// *! TITLE : proc_scomoverride_chiplets.C -// *! DESCRIPTION : Placeholder for chiplet SCOM overrides -// *! -// *! OWNER NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! OWNER NAME : Jeshua Smith Email: jeshua@us.ibm.com -// *! -//------------------------------------------------------------------------------ - - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <proc_scomoverride_chiplets.H> - -extern "C" -{ - -//------------------------------------------------------------------------------ -// Function definitions -//------------------------------------------------------------------------------ - - -//------------------------------------------------------------------------------ -// HWP entry point -//------------------------------------------------------------------------------ -fapi::ReturnCode proc_scomoverride_chiplets() -{ - // return code - fapi::ReturnCode rc; - - // mark HWP entry - FAPI_IMP("proc_scomoverride_chiplets : Entering ..."); - - - // log function exit - FAPI_IMP("proc_scomoverride_chiplets : Exiting ..."); - return rc; -} - -} diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets/proc_scomoverride_chiplets.H b/src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets/proc_scomoverride_chiplets.H deleted file mode 100644 index 99b5c69ce..000000000 --- a/src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets/proc_scomoverride_chiplets.H +++ /dev/null @@ -1,70 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/nest_chiplets/proc_scomoverride_chiplets/proc_scomoverride_chiplets.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_scomoverride_chiplets.H,v 1.1 2012/03/13 06:02:39 venton Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_scomoverride_chiplets.H,v $ -//------------------------------------------------------------------------------ -// *| -// *! (C) Copyright International Business Machines Corp. 2011 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -// *| -// *! TITLE : proc_scomoverride_chiplets.H -// *! DESCRIPTION : -// *! -// *! OWNER NAME : Jeshua Smith Email: jeshua@us.ibm.com -// *! -// *! ADDITIONAL COMMENTS: -// *! -// *! -//------------------------------------------------------------------------------ - -#ifndef _PROC_SCOMOVERRIDE_CHIPLETS_H_ -#define _PROC_SCOMOVERRIDE_CHIPLETS_H_ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ - -#include <fapi.H> - -//------------------------------------------------------------------------------ -// Structure definitions -//------------------------------------------------------------------------------ - -// function pointer typedef definition for HWP call support -typedef fapi::ReturnCode -(*proc_scomoverride_chiplets_FP_t)(); - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ - -extern "C" -{ -fapi::ReturnCode proc_scomoverride_chiplets(); - -} // extern "C" - -#endif // _PROC_SCOMOVERRIDE_CHIPLETS_H_ diff --git a/src/usr/hwpf/hwp/slave_sbe/makefile b/src/usr/hwpf/hwp/slave_sbe/makefile index 93a08aef3..876ebaaac 100644 --- a/src/usr/hwpf/hwp/slave_sbe/makefile +++ b/src/usr/hwpf/hwp/slave_sbe/makefile @@ -38,7 +38,6 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/include ## Include sub dirs ## NOTE: add a new EXTRAINCDIR when you add a new HWP EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe -EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_getecid EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable @@ -53,12 +52,9 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/core_activate/proc_stop_deadman_time ## NOTE: add new object files when you add a new HWP OBJS += slave_sbe.o -OBJS += proc_revert_sbe_mcs_setup.o -OBJS += proc_check_slave_sbe_seeprom_complete.o OBJS += proc_extract_sbe_rc.o OBJS += proc_read_seeprom.o OBJS += proc_getecid.o -OBJS += proc_cen_ref_clk_enable.o OBJS += proc_spless_sbe_startWA.o OBJS += proc_reset_i2cm_bus_fence.o OBJS += proc_check_master_sbe_seeprom.o @@ -69,7 +65,6 @@ OBJS += proc_extract_pore_halt_ffdc.o ## NOTE: add a new directory onto the vpaths when you add a new HWP VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable -VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_getecid VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/slave_sbe/proc_spless_sbe_startWA diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable.C b/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable.C deleted file mode 100644 index 0f585da26..000000000 --- a/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable.C +++ /dev/null @@ -1,240 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable.C $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2013,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_cen_ref_clk_enable.C,v 1.4 2014/04/14 18:57:01 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_cen_ref_clk_enable.C,v $ -//------------------------------------------------------------------------------ -// *| -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -// *| -// *! TITLE : proc_cen_ref_clk_enable.C -// *! DESCRIPTION : Enable Centaur reference clocks (FAPI) -// *! -// *! OWNER NAME : Benedikt Geukes Email: benedikt.geukes@de.ibm.com -// *! BACKUP NAME : Ralph Koester Email: rkoester@de.ibm.com -// *! -//------------------------------------------------------------------------------ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include "proc_check_master_sbe_seeprom.H" -#include "proc_cen_ref_clk_enable.H" - -//------------------------------------------------------------------------------ -// Function definitions -//------------------------------------------------------------------------------ - -extern "C" -{ - - -//------------------------------------------------------------------------------ -// Hardware Procedure -//------------------------------------------------------------------------------ -// parameters: i_target => chip target -// i_attached_centaurs => bitmask representing attached Centaur -// positions -// returns: FAPI_RC_SUCCESS if operation was successful, else error -//------------------------------------------------------------------------------ -fapi::ReturnCode proc_cen_ref_clk_enable(const fapi::Target & i_target, - const uint8_t i_attached_centaurs) -{ - - ecmdDataBufferBase reg_data(32); - uint32_t rc_ecmd = 0; - fapi::ReturnCode rc; - bool is_master = false; - uint8_t configured_centaurs = 0x00; - std::vector<fapi::Target> mcs_targets; - - - do - { - // determine chip status (master/slave) to differentiate access path to FSI GP8 register - // master: SCOM - // slave: CFAM - rc = proc_check_master_sbe_seeprom(i_target, is_master); - if (!rc.ok()) - { - FAPI_ERR("proc_cen_ref_clk_enable: Error from proc_check_master_sbe_seeprom"); - break; - } - - FAPI_INF("proc_cen_ref_clk_enable: Target %s is %s, attached Centaurs: 0x%02X", - i_target.toEcmdString(), (is_master)?("master"):("slave"), i_attached_centaurs); - - // obtain set of functional MCS chiplets - rc = fapiGetChildChiplets(i_target, - fapi::TARGET_TYPE_MCS_CHIPLET, - mcs_targets, - fapi::TARGET_STATE_FUNCTIONAL); - if (!rc.ok()) - { - FAPI_ERR("proc_cen_ref_clk_enable: Error from fapiGetChildChiplets"); - break; - } - - // loop through MCS chiplets, match with attached Centaurs - for (std::vector<fapi::Target>::iterator i = mcs_targets.begin(); - (i != mcs_targets.end()) && !rc && !rc_ecmd; - i++) - { - uint8_t mcs_unit_id = 0x00; - uint8_t refclock_bit = 0x00; - - rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, - &(*i), - mcs_unit_id); - if (rc) - { - FAPI_ERR("proc_cen_ref_clk_enable: Error querying ATTR_CHIP_UNIT_POS"); - break; - } - - // continue to next iteration if this MCS is not connected to a Centaur - if (!(i_attached_centaurs & (1 << ((NUM_CENTAUR_POS-1)-mcs_unit_id)))) - { - FAPI_DBG("proc_cen_ref_clk_enable: MCS %d is not connected to a Centaur, skipping...\n", mcs_unit_id); - } - else - { - // mark that we have configured this MCS/Centaur pair - configured_centaurs |= (1 << ((NUM_CENTAUR_POS-1)-mcs_unit_id)); - FAPI_DBG("proc_cen_ref_clk_enable: MCS %d is connected to a Centaur, configured_centaurs: %02X\n", mcs_unit_id,configured_centaurs); - - // query attribute which defines reflock bit associated with this Centaur - rc = FAPI_ATTR_GET(ATTR_DMI_REFCLOCK_SWIZZLE, - &(*i), - refclock_bit); - if (rc) - { - FAPI_ERR("proc_cen_ref_clk_enable: Error querying ATTR_DMI_REFCLOCK_SWIZZLE"); - break; - } - FAPI_DBG("proc_cen_ref_clk_enable: refclock_bit: %02X\n", refclock_bit); - - if ((FSI_GP8_CENTAUR_REFCLOCK_START_BIT + refclock_bit) > FSI_GP8_CENTAUR_REFCLOCK_END_BIT) - { - // bit offset exceeds field range - FAPI_ERR("proc_cen_ref_clk_enable: Translated Centaur refclock enable bit position is out of range!"); - const fapi::Target& PROC_TARGET = i_target; - const uint8_t& CENTAUR_POSITION = mcs_unit_id; - const uint8_t& REFCLOCK_BIT = refclock_bit; - FAPI_SET_HWP_ERROR(rc, - RC_PROC_CEN_REF_CLK_ENABLE_SWIZZLE_ERR); - break; - } - - rc_ecmd |= reg_data.setBit(FSI_GP8_CENTAUR_REFCLOCK_START_BIT+ - refclock_bit); - } - } - if (rc) - { - break; - } - if (rc_ecmd) - { - FAPI_ERR("proc_cen_ref_clk_enable: Error (0x%x) setting up refclock enable OR data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - if (configured_centaurs != i_attached_centaurs) - { - FAPI_ERR("proc_cen_ref_clk_enable: Not all Centaurs marked as attached were configured"); - const fapi::Target& PROC_TARGET = i_target; - const uint8_t& CONFIGURED_CENTAUR_POSITIONS = configured_centaurs; - const uint8_t& ATTACHED_CENTAUR_POSITIONS = i_attached_centaurs; - FAPI_SET_HWP_ERROR(rc, - RC_PROC_CEN_REF_CLK_ENABLE_CONFIG_ERR); - break; - } - - FAPI_INF("proc_cen_ref_clk_enable: Enable refclk for functional Centaur chips..."); - if (is_master) - { - ecmdDataBufferBase scom_data(64); - rc = fapiGetScom(i_target, MBOX_FSIGP8_0x00050017, scom_data); - if (rc) - { - FAPI_ERR("proc_cen_ref_clk_enable: fapiGetScom error (MBOX_FSIGP8_0x00050017)"); - break; - } - - rc_ecmd |= scom_data.setOr(reg_data.getWord(0), 0, 32); - if (rc_ecmd) - { - FAPI_ERR("proc_cen_ref_clk_enable: Error (0x%x) setting up FSI GP8 write data buffer (SCOM)", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - rc = fapiPutScom(i_target, MBOX_FSIGP8_0x00050017, scom_data); - if (rc) - { - FAPI_ERR("proc_cen_ref_clk_enable: fapiPutScom error (MBOX_FSIGP8_0x00050017)"); - break; - } - } - else - { - ecmdDataBufferBase cfam_data(32); - rc = fapiGetCfamRegister(i_target, CFAM_FSI_GP8_0x00002817, cfam_data); - if (rc) - { - FAPI_ERR("proc_cen_ref_clk_enable: fapiGetCfamRegister error (CFAM_FSI_GP8_0x00001017)"); - break; - } - - rc_ecmd |= cfam_data.setOr(reg_data.getWord(0), 0, 32); - if (rc_ecmd) - { - FAPI_ERR("proc_cen_ref_clk_enable: Error (0x%x) setting up FSI GP8 write data buffer (CFAM)", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - rc = fapiPutCfamRegister(i_target, CFAM_FSI_GP8_0x00002817, cfam_data); - if (rc) - { - FAPI_ERR("proc_cen_ref_clk_enable: fapiPutCfamRegister error (CFAM_FSI_GP8_0x00001017)"); - break; - } - } - } while(0); // end do - - // mark function exit - FAPI_INF("proc_cen_ref_clk_enable: Exit"); - return rc; -} // end FAPI procedure proc_cen_ref_clk_enable - - -} // extern "C" diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable.H b/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable.H deleted file mode 100644 index ee23ec1d7..000000000 --- a/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable.H +++ /dev/null @@ -1,88 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2013,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_cen_ref_clk_enable.H,v 1.1 2013/08/12 18:19:30 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_cen_ref_clk_enable.H,v $ -//------------------------------------------------------------------------------ -// *| -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -// *| -// *! TITLE : proc_cen_ref_clk_enable.H -// *! DESCRIPTION : Enable Centaur reference clocks (FAPI) -// *! -// *! OWNER NAME : Benedikt Geukes Email: benedikt.geukes@de.ibm.com -// *! -//------------------------------------------------------------------------------ - -#ifndef _PROC_CEN_REF_CLK_ENABLE_H_ -#define _PROC_CEN_REF_CLK_ENABLE_H_ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ - -#include <fapi.H> -#include "p8_scom_addresses.H" - -//------------------------------------------------------------------------------ -// Structure definitions -//------------------------------------------------------------------------------ - -// function pointer typedef definition for HWP call support -typedef fapi::ReturnCode (*proc_cen_ref_clk_enable_FP_t)(const fapi::Target &, - const uint8_t); - - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ - -const uint8_t NUM_CENTAUR_POS = 8; -const uint8_t FSI_GP8_CENTAUR_REFCLOCK_START_BIT = 16; -const uint8_t FSI_GP8_CENTAUR_REFCLOCK_END_BIT = (FSI_GP8_CENTAUR_REFCLOCK_START_BIT + NUM_CENTAUR_POS - 1); - -//------------------------------------------------------------------------------ -// Function prototypes -//------------------------------------------------------------------------------ - - -extern "C" -{ - -/** - * @brief Enble Centaur reference clocks - * - * @param[in] i_target chip target - * @param[in] i_attached_centaurs Bitmask representing attached Centaur positions - * - * @return ReturnCode - */ - fapi::ReturnCode proc_cen_ref_clk_enable(const fapi::Target & i_target, - const uint8_t i_attached_centaurs); - -} // extern "C" - -#endif // _PROC_CEN_REF_CLK_ENABLE_H diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable_errors.xml b/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable_errors.xml deleted file mode 100644 index 46a7fabfd..000000000 --- a/src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable_errors.xml +++ /dev/null @@ -1,49 +0,0 @@ -<!-- IBM_PROLOG_BEGIN_TAG --> -<!-- This is an automatically generated prolog. --> -<!-- --> -<!-- $Source: src/usr/hwpf/hwp/slave_sbe/proc_cen_ref_clk_enable/proc_cen_ref_clk_enable_errors.xml $ --> -<!-- --> -<!-- OpenPOWER HostBoot Project --> -<!-- --> -<!-- COPYRIGHT International Business Machines Corp. 2013,2014 --> -<!-- --> -<!-- Licensed under the Apache License, Version 2.0 (the "License"); --> -<!-- you may not use this file except in compliance with the License. --> -<!-- You may obtain a copy of the License at --> -<!-- --> -<!-- http://www.apache.org/licenses/LICENSE-2.0 --> -<!-- --> -<!-- Unless required by applicable law or agreed to in writing, software --> -<!-- distributed under the License is distributed on an "AS IS" BASIS, --> -<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or --> -<!-- implied. See the License for the specific language governing --> -<!-- permissions and limitations under the License. --> -<!-- --> -<!-- IBM_PROLOG_END_TAG --> -<!-- $Id: proc_cen_ref_clk_enable_errors.xml,v 1.2 2014/02/28 17:53:41 jmcgill Exp $ --> -<!-- Error definitions for proc_cen_ref_clk_enable --> -<hwpErrors> - <!-- *********************************************************************** --> - <hwpError> - <rc>RC_PROC_CEN_REF_CLK_ENABLE_SWIZZLE_ERR</rc> - <description>Translated Centaur refclock enable bit position is out of range.</description> - <ffdc>PROC_TARGET</ffdc> - <ffdc>CENTAUR_POSITION</ffdc> - <ffdc>REFCLOCK_BIT</ffdc> - <callout> - <procedure>CODE</procedure> - <priority>HIGH</priority> - </callout> - </hwpError> - <hwpError> - <rc>RC_PROC_CEN_REF_CLK_ENABLE_CONFIG_ERR</rc> - <description>Not all Centaurs marked as attached were configured.</description> - <ffdc>PROC_TARGET</ffdc> - <ffdc>CONFIGURED_CENTAUR_POSITIONS</ffdc> - <ffdc>ATTACHED_CENTAUR_POSITIONS</ffdc> - <callout> - <procedure>CODE</procedure> - <priority>HIGH</priority> - </callout> - </hwpError> -</hwpErrors> diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete.C b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete.C deleted file mode 100644 index 7f13acc5c..000000000 --- a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete.C +++ /dev/null @@ -1,254 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete.C $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2015 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// -*- mode: C++; c-file-style: "linux"; -*- -// $Id: proc_check_slave_sbe_seeprom_complete.C,v 1.18 2015/07/27 00:36:23 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_check_slave_sbe_seeprom_complete.C,v $ -//------------------------------------------------------------------------------ -// *| -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -// *| -// *! TITLE : proc_check_slave_sbe_seeprom_complete.C -// *! DESCRIPTION : Check if a slave has completed the seeprom code -// *! -// *! OWNER NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -//------------------------------------------------------------------------------ - - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include <proc_check_slave_sbe_seeprom_complete.H> -#include <p8_scom_addresses.H> -#include <p8_istep_num.H> -#include <proc_sbe_check_master.H> -#include <proc_sbe_enable_pnor.H> -#include <proc_sbe_scan_service.H> -#include <proc_extract_sbe_rc.H> -#include <proc_reset_i2cm_bus_fence.H> -#include <proc_sbe_utils.H> - - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ -const uint64_t NS_TO_FINISH = 10000000; //(10 ms) -const uint64_t MS_TO_FINISH = NS_TO_FINISH/1000000; -const uint64_t SIM_CYCLES_TO_FINISH = 10000000; - -const uint8_t SBE_EXIT_SUCCESS_0xF = 0xF; - -//------------------------------------------------------------------------------ -// Function definitions -//------------------------------------------------------------------------------ - -extern "C" -{ - -fapi::ReturnCode proc_check_slave_sbe_seeprom_complete( - const fapi::Target & i_target, - const void * i_pSEEPROM, - const size_t i_wait_in_ms) -{ - // return codes - fapi::ReturnCode rc; - - // track if procedure has cleared I2C master bus fence - bool i2cm_bus_fence_cleared = false; - - // mark function entry - FAPI_INF("Start"); - - do - { - // - // ensure SBE was started - // - - ecmdDataBufferBase sbe_vital_data(32); - FAPI_DBG("Checking SBE Vital register"); - rc = fapiGetCfamRegister(i_target, CFAM_FSI_SBE_VITAL_0x0000281C, sbe_vital_data); - if (!rc.ok()) - { - FAPI_ERR("Error reading SBE Vital register"); - break; - } - if (sbe_vital_data.isBitClear(12,20)) - { - // status has not been updated, something is wrong - FAPI_ERR("SBE does not appear to have started"); - // Call proc_extract_sbe_rc here to see what went wrong - FAPI_EXEC_HWP(rc, proc_extract_sbe_rc, i_target, NULL, i_pSEEPROM, SBE); - break; - } - - // - // check SBE progress - // Loop until: - // SBE stopped OR - // scan service ready loop is reached OR - // loop time is exceeded - // - - bool sbe_running = true; - size_t loop_time = 0; - uint8_t halt_code = 0; - uint16_t istep_num = 0; - uint8_t substep_num = 0; - bool scan_service_loop_reached = false; - while (sbe_running && - !scan_service_loop_reached && - (loop_time < i_wait_in_ms)) - { - // sleep 10ms, then check again - loop_time += MS_TO_FINISH; - rc = fapiDelay(NS_TO_FINISH, SIM_CYCLES_TO_FINISH); - if (rc) - { - FAPI_ERR("Error from fapiDelay"); - break; - } - - // retrieve status - rc = proc_sbe_utils_check_status( - i_target, - sbe_running, - halt_code, - istep_num, - substep_num); - if (!rc.ok()) - { - FAPI_ERR("Error from proc_check_sbe_state_check_status"); - break; - } - - scan_service_loop_reached = - sbe_running && - !halt_code && - (istep_num == PROC_SBE_SCAN_SERVICE_ISTEP_NUM) && - (substep_num == SUBSTEP_SBE_READY); - } - - // break if we took an error in the while loop - if (rc) - { - break; - } - - FAPI_INF("SBE is running [%d], loop time [%zd], scan service loop reached [%d]", - sbe_running, loop_time, scan_service_loop_reached); - - - // two valid possibilities - // 1) SBE halted with success - // 2) scan service routine is running - if (!sbe_running) - { - //SBE is stopped. Let's see where - // before analysis proceeds, make sure that I2C master bus fence is cleared - FAPI_EXEC_HWP(rc, proc_reset_i2cm_bus_fence, i_target); - if (!rc.ok()) - { - FAPI_ERR("Error from proc_reset_i2cm_bus_fence"); - break; - } - // mark that fence has been cleared - i2cm_bus_fence_cleared = true; - - // did it stop with success? - if (halt_code != SBE_EXIT_SUCCESS_0xF) - { - FAPI_ERR("SBE halted with error %i (istep 0x%X, substep %i)", - halt_code, - istep_num, - substep_num); - FAPI_EXEC_HWP(rc, proc_extract_sbe_rc, i_target, NULL, i_pSEEPROM, SBE); - break; - } - - // did it stop in the correct istep? - if (!(((istep_num == PROC_SBE_CHECK_MASTER_MAGIC_ISTEP_NUM ) && - (substep_num == SUBSTEP_CHECK_MASTER_SLAVE_CHIP)) || - ((istep_num == PROC_SBE_ENABLE_PNOR_MAGIC_ISTEP_NUM ) && - (substep_num == SUBSTEP_ENABLE_PNOR_SLAVE_CHIP)) || - (istep_num == PROC_SBE_EX_HOST_RUNTIME_SCOM_MAGIC_ISTEP_NUM))) - { - FAPI_ERR( - "SBE halted in wrong istep (istep 0x%X, substep %i)", - istep_num, - substep_num); - const fapi::Target & CHIP_IN_ERROR = i_target; - uint16_t & ISTEP_NUM = istep_num; - uint8_t & SUBSTEP_NUM = substep_num; - FAPI_SET_HWP_ERROR(rc, RC_PROC_CHECK_SLAVE_SBE_SEEPROM_COMPLETE_BAD_ISTEP_NUM); - break; - } - - // reset the SBE so it can be used for MPIPL if needed - rc = proc_sbe_utils_reset_sbe(i_target); - if (!rc.ok()) - { - FAPI_ERR("Error from proc_sbe_utils_reset_sbe"); - break; - } - } - else if (scan_service_loop_reached) - { - FAPI_INF("SBE finished, scan service is running!"); - break; - } - // error - else - { - FAPI_ERR("SBE did not reach acceptable final state!"); - const fapi::Target & CHIP_IN_ERROR = i_target; - const bool & SBE_RUNNING = sbe_running; - const uint8_t & HALT_CODE = halt_code; - const uint16_t & ISTEP_NUM = istep_num; - const uint8_t & SUBSTEP_NUM = substep_num; - FAPI_SET_HWP_ERROR(rc, RC_PROC_CHECK_SLAVE_SBE_SEEPROM_COMPLETE_UNEXPECTED_FINAL_STATE); - break; - } - - } while (0); - - // if an error occurred prior to the I2C master bus fence - // being cleared, attempt to clear it prior to exit - if (!rc.ok() && !i2cm_bus_fence_cleared) - { - // discard rc, return that of original fail - fapi::ReturnCode rc_unused; - FAPI_EXEC_HWP(rc_unused, proc_reset_i2cm_bus_fence, i_target); - } - - // mark function exit - FAPI_INF("Exit"); - return rc; -} - - -} // extern "C" diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete.H b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete.H deleted file mode 100644 index fba9ca5bb..000000000 --- a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete.H +++ /dev/null @@ -1,88 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_check_slave_sbe_seeprom_complete.H,v 1.5 2014/06/10 12:41:42 dsanner Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_check_slave_sbe_seeprom_complete.H,v $ -//------------------------------------------------------------------------------ -// *| -// *! (C) Copyright International Business Machines Corp. 2012 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -// *| -// *! TITLE : proc_check_slave_sbe_seeprom_complete.H -// *! DESCRIPTION : Check if a slave has completed the seeprom code -// *! -// *! OWNER NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -//------------------------------------------------------------------------------ - -#ifndef _PROC_CHECK_SLAVE_SBE_SEEPROM_COMPLETE_H_ -#define _PROC_CHECK_SLAVE_SBE_SEEPROM_COMPLETE_H_ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ - -#include <fapi.H> - -//------------------------------------------------------------------------------ -// Structure definitions -//------------------------------------------------------------------------------ - -// function pointer typedef definition for HWP call support -typedef fapi::ReturnCode (*proc_check_slave_sbe_seeprom_complete_FP_t)(const fapi::Target &, - const void *, - const size_t); - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ - -//------------------------------------------------------------------------------ -// Function prototypes -//------------------------------------------------------------------------------ - - -extern "C" -{ - -/** - * @brief Check if the slave chip stopped successfully at the end of - * proc_sbe_check_master / proc_sbe_enable_pnor - * - * @param[in] i_target Reference to processor slave chip target - * @param[in] i_pSEEPROM Pointer to the seeprom image (for errors) - * @param[in] i_wait_in_ms Amount of time to wait in ms for SBE to complete - * - * @return ReturnCode Success if slave chip stopped at correct place, - * else error - */ - fapi::ReturnCode proc_check_slave_sbe_seeprom_complete( - const fapi::Target & i_target, - const void * i_pSEEPROM, - const size_t i_wait_in_ms = 1000); - -} // extern "C" - -#endif // _PROC_CHECK_SLAVE_SBE_SEEPROM_COMPLETE_H_ diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete_errors.xml b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete_errors.xml deleted file mode 100644 index ee658c384..000000000 --- a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete_errors.xml +++ /dev/null @@ -1,67 +0,0 @@ -<!-- IBM_PROLOG_BEGIN_TAG --> -<!-- This is an automatically generated prolog. --> -<!-- --> -<!-- $Source: src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_check_slave_sbe_seeprom_complete_errors.xml $ --> -<!-- --> -<!-- OpenPOWER HostBoot Project --> -<!-- --> -<!-- Contributors Listed Below - COPYRIGHT 2012,2015 --> -<!-- [+] International Business Machines Corp. --> -<!-- --> -<!-- --> -<!-- Licensed under the Apache License, Version 2.0 (the "License"); --> -<!-- you may not use this file except in compliance with the License. --> -<!-- You may obtain a copy of the License at --> -<!-- --> -<!-- http://www.apache.org/licenses/LICENSE-2.0 --> -<!-- --> -<!-- Unless required by applicable law or agreed to in writing, software --> -<!-- distributed under the License is distributed on an "AS IS" BASIS, --> -<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or --> -<!-- implied. See the License for the specific language governing --> -<!-- permissions and limitations under the License. --> -<!-- --> -<!-- IBM_PROLOG_END_TAG --> -<!-- $Id: proc_check_slave_sbe_seeprom_complete_errors.xml,v 1.8 2015/07/27 00:37:13 jmcgill Exp $ --> -<!-- Error definitions for proc_check_slave_sbe_seeprom_complete procedure --> -<hwpErrors> - <!-- *********************************************************************** --> - <hwpError> - <rc>RC_PROC_CHECK_SLAVE_SBE_SEEPROM_COMPLETE_BAD_ISTEP_NUM</rc> - <description> - Procedure: proc_check_slave_sbe_seeprom_complete - The slave SBE is not at the correct istep number - </description> - <ffdc>ISTEP_NUM</ffdc> - <ffdc>SUBSTEP_NUM</ffdc> - <collectRegisterFfdc> - <id>REG_FFDC_PROC_STATUS_AND_SBE_VITAL_REGISTERS</id> - <id>REG_FFDC_PROC_SBE_REGISTERS</id> - <target>CHIP_IN_ERROR</target> - </collectRegisterFfdc> - <deconfigure> - <target>CHIP_IN_ERROR</target> - </deconfigure> - </hwpError> - <!-- *********************************************************************** --> - <hwpError> - <rc>RC_PROC_CHECK_SLAVE_SBE_SEEPROM_COMPLETE_UNEXPECTED_FINAL_STATE</rc> - <description> - Procedure: proc_check_slave_sbe_seeprom_complete - The slave SBE did not reach a valid final state - </description> - <ffdc>SBE_RUNNING</ffdc> - <ffdc>HALT_CODE</ffdc> - <ffdc>ISTEP_NUM</ffdc> - <ffdc>SUBSTEP_NUM</ffdc> - <collectRegisterFfdc> - <id>REG_FFDC_PROC_STATUS_AND_SBE_VITAL_REGISTERS</id> - <id>REG_FFDC_PROC_SBE_REGISTERS</id> - <target>CHIP_IN_ERROR</target> - </collectRegisterFfdc> - <deconfigure> - <target>CHIP_IN_ERROR</target> - </deconfigure> - </hwpError> - <!-- *********************************************************************** --> -</hwpErrors> diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup/proc_revert_sbe_mcs_setup.C b/src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup/proc_revert_sbe_mcs_setup.C deleted file mode 100644 index ecd211596..000000000 --- a/src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup/proc_revert_sbe_mcs_setup.C +++ /dev/null @@ -1,304 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup/proc_revert_sbe_mcs_setup.C $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_revert_sbe_mcs_setup.C,v 1.7 2013/04/27 17:23:41 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_revert_sbe_mcs_setup.C,v $ -//------------------------------------------------------------------------------ -// *| -// *! (C) Copyright International Business Machines Corp. 2011 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -// *| -// *! TITLE : proc_revert_sbe_mcs_setup.C -// *! DESCRIPTION : Revert MCS configuration applied by SBE (FAPI) -// *! -// *! OWNER NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -//------------------------------------------------------------------------------ - - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ -#include "p8_scom_addresses.H" -#include "proc_revert_sbe_mcs_setup.H" - -extern "C" -{ - -//------------------------------------------------------------------------------ -// Function definitions -//------------------------------------------------------------------------------ - - -//------------------------------------------------------------------------------ -// function: translate base SCOM address to chiplet specific offset -// parameters: i_input_addr => input SCOM address -// i_mcs_unit_num => chip unit number -// returns: translated SCOM address -//------------------------------------------------------------------------------ -uint64_t proc_revert_sbe_mcs_setup_xlate_address( - const uint64_t i_input_addr, - const uint8_t i_mcs_unit_num) -{ - return(i_input_addr + - (0x400 * (i_mcs_unit_num / 4)) + - (0x80 * (i_mcs_unit_num % 4))); -} - - -//------------------------------------------------------------------------------ -// function: reset MCFGP BAR valid bit, base address and size fields to restore -// register flush state -// parameters: i_target => chip target -// i_mcs_unit_num => chip unit number -// returns: FAPI_RC_SUCCESS if register write is successful, -// else failing return code -//------------------------------------------------------------------------------ -fapi::ReturnCode proc_revert_sbe_mcs_setup_reset_mcfgp( - const fapi::Target& i_target, - const uint8_t i_mcs_unit_num) -{ - fapi::ReturnCode rc; - uint32_t rc_ecmd = 0x0; - ecmdDataBufferBase mcfgp_data(64); - ecmdDataBufferBase mcfgp_mask(64); - - // mark function entry - FAPI_DBG("proc_revert_sbe_mcs_setup_reset_mcfgp: Start"); - - do - { - // clear fields manipulated by SBE (to restore logic flush state) - rc_ecmd |= mcfgp_mask.setBit(MCFGP_VALID_BIT); - rc_ecmd |= mcfgp_mask.setBit( - MCFGP_UNITS_PER_GROUP_START_BIT, - (MCFGP_UNITS_PER_GROUP_END_BIT - - MCFGP_UNITS_PER_GROUP_START_BIT + 1)); - rc_ecmd |= mcfgp_mask.setBit( - MCFGP_GROUP_MEMBER_ID_START_BIT, - (MCFGP_GROUP_MEMBER_ID_END_BIT - - MCFGP_GROUP_MEMBER_ID_START_BIT + 1)); - rc_ecmd |= mcfgp_mask.setBit( - MCFGP_GROUP_SIZE_START_BIT, - (MCFGP_GROUP_SIZE_END_BIT - - MCFGP_GROUP_SIZE_START_BIT + 1)); - rc_ecmd |= mcfgp_mask.setBit(MCFGP_FASTPATH_ENABLE_BIT); - rc_ecmd |= mcfgp_mask.setBit( - MCFGP_GROUP_BASE_ADDR_START_BIT, - (MCFGP_GROUP_BASE_ADDR_END_BIT - - MCFGP_GROUP_BASE_ADDR_START_BIT + 1)); - - // check buffer manipulation return code - if (rc_ecmd) - { - FAPI_ERR("proc_revert_sbe_mcs_setup_reset_mcfgp: Error 0x%X setting up MCFGP mask data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // write register - rc = fapiPutScomUnderMask( - i_target, - proc_revert_sbe_mcs_setup_xlate_address(MCS_MCFGP_0x02011800, - i_mcs_unit_num), - mcfgp_data, - mcfgp_mask); - if (!rc.ok()) - { - FAPI_ERR("proc_revert_sbe_mcs_setup_reset_mcfgp: fapiPutScomUnderMask error (MCS_MCFGP_0x%08llX)", - proc_revert_sbe_mcs_setup_xlate_address(MCS_MCFGP_0x02011800, - i_mcs_unit_num)); - break; - } - } while(0); - - // mark function exit - FAPI_DBG("proc_revert_sbe_mcs_setup_reset_mcfgp: End"); - return rc; -} - - -//------------------------------------------------------------------------------ -// function: set MCI FIR Mask channel timeout bits, to restore register flush -// state -// parameters: i_target => chip target -// i_mcs_unit_num => chip unit number -// returns: FAPI_RC_SUCCESS if register write is successful, -// else failing return code -//------------------------------------------------------------------------------ -fapi::ReturnCode proc_revert_sbe_mcs_setup_reset_mcifirmask( - const fapi::Target& i_target, - const uint8_t i_mcs_unit_num) -{ - fapi::ReturnCode rc; - uint32_t rc_ecmd = 0x0; - ecmdDataBufferBase mcifirmask_or_data(64); - - // mark function entry - FAPI_DBG("proc_revert_sbe_mcs_setup_reset_mcifirmask: Start"); - - do - { - // set fields manipulated by SBE (to restore logic flush state) - rc_ecmd |= mcifirmask_or_data.setBit( - MCIFIR_CL_TIMEOUT_BIT); - rc_ecmd |= mcifirmask_or_data.setBit( - MCIFIR_CL_TIMEOUT_DUE_TO_CHANNEL_BIT); - - // check buffer manipulation return code - if (rc_ecmd) - { - FAPI_ERR("proc_revert_sbe_mcs_setup_reset_mcifirmask: Error 0x%X setting up MCI FIR Mask register data buffer", - rc_ecmd); - rc.setEcmdError(rc_ecmd); - break; - } - - // write register - rc = fapiPutScom( - i_target, - proc_revert_sbe_mcs_setup_xlate_address(MCS_MCIFIRMASK_OR_0x02011845, - i_mcs_unit_num), - mcifirmask_or_data); - if (!rc.ok()) - { - FAPI_ERR("proc_revert_sbe_mcs_setup_reset_mcifirmask: fapiPutScom error (MCS_MCIFIRMASK_OR_0x%08llX)", - proc_revert_sbe_mcs_setup_xlate_address(MCS_MCIFIRMASK_OR_0x02011845, - i_mcs_unit_num)); - break; - } - } while(0); - - // mark function exit - FAPI_DBG("proc_revert_sbe_mcs_setup_reset_mcifirmask: End"); - return rc; -} - - -//------------------------------------------------------------------------------ -// function: proc_revert_sbe_mcs_setup HWP entry point -// NOTE: see comments above function prototype in header -//------------------------------------------------------------------------------ -fapi::ReturnCode proc_revert_sbe_mcs_setup( - const fapi::Target& i_target) -{ - fapi::ReturnCode rc; - ecmdDataBufferBase gp0_data(64); - ecmdDataBufferBase mcsmode1_reset_data(64); - bool mc_fenced[2] = { true, true }; - uint8_t mcs_unit_id = 0x0; - - // vector to hold MCS chiplet targets - std::vector<fapi::Target> mcs_chiplets; - - // mark HWP entry - FAPI_IMP("proc_revert_sbe_mcs_setup: Entering ..."); - - do - { - // read GP0 to determine MCL/MCR partial good state - rc = fapiGetScom(i_target, NEST_GP0_0x02000000, gp0_data); - - if (!rc.ok()) - { - FAPI_ERR("proc_revert_sbe_mcs_setup: fapiGetScom error (NEST_GP0_0x02000000)"); - break; - } - - mc_fenced[0] = gp0_data.isBitClear(NEST_GP0_MCL_FENCE_B_BIT); - mc_fenced[1] = gp0_data.isBitClear(NEST_GP0_MCR_FENCE_B_BIT); - - // loop over all present MCS chiplets, revert SBE configuration - // of BAR/FIR mask registers back to flush state - rc = fapiGetChildChiplets(i_target, - fapi::TARGET_TYPE_MCS_CHIPLET, - mcs_chiplets, - fapi::TARGET_STATE_PRESENT); - if (!rc.ok()) - { - FAPI_ERR("proc_revert_sbe_mcs_setup: Error from fapiGetChildChiplets"); - break; - } - - for (std::vector<fapi::Target>::iterator i = mcs_chiplets.begin(); - i != mcs_chiplets.end(); - i++) - { - // read chip unit number - rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, - &(*i), - mcs_unit_id); - - if (!rc.ok()) - { - FAPI_ERR("proc_revert_sbe_mcs_setup: Error from FAPI_ATTR_GET (ATTR_CHIP_UNIT_POS)"); - break; - } - - // reset all chiplets which are present (based on GP0 partial good data) - // this handles the case of reverting configuration which was written - // by SBE code for chiplets which are not considered functional by platform - if (!mc_fenced[mcs_unit_id / 4]) - { - rc = proc_revert_sbe_mcs_setup_reset_mcfgp(i_target, - mcs_unit_id); - if (!rc.ok()) - { - FAPI_ERR("proc_revert_sbe_mcs_setup: Error from proc_revert_sbe_mcs_setup_reset_mcfgp"); - break; - } - - FAPI_DBG("proc_revert_sbe_mcs_setup: reset MCSMODE1"); - rc = fapiPutScom( - i_target, - proc_revert_sbe_mcs_setup_xlate_address(MCS_MCSMODE1_0x02011808, - mcs_unit_id), - mcsmode1_reset_data); - if (!rc.ok()) - { - FAPI_ERR("proc_revert_sbe_mcs_setup: fapiPutScom error (MCS_MCSMODE1_0x%08llX)", - proc_revert_sbe_mcs_setup_xlate_address(MCS_MCSMODE1_0x02011808, mcs_unit_id)); - break; - } - - rc = proc_revert_sbe_mcs_setup_reset_mcifirmask(i_target, - mcs_unit_id); - if (!rc.ok()) - { - FAPI_ERR("proc_revert_sbe_mcs_setup: Error from proc_revert_sbe_mcs_setup_reset_mcfgp"); - break; - } - } - } - } while(0); - - // log function exit - FAPI_IMP("proc_revert_sbe_mcs_setup: Exiting ..."); - return rc; -} - - -} // extern "C" diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup/proc_revert_sbe_mcs_setup.H b/src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup/proc_revert_sbe_mcs_setup.H deleted file mode 100644 index 92d3f6942..000000000 --- a/src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup/proc_revert_sbe_mcs_setup.H +++ /dev/null @@ -1,112 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: src/usr/hwpf/hwp/slave_sbe/proc_revert_sbe_mcs_setup/proc_revert_sbe_mcs_setup.H $ */ -/* */ -/* OpenPOWER HostBoot Project */ -/* */ -/* Contributors Listed Below - COPYRIGHT 2012,2014 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* Licensed under the Apache License, Version 2.0 (the "License"); */ -/* you may not use this file except in compliance with the License. */ -/* You may obtain a copy of the License at */ -/* */ -/* http://www.apache.org/licenses/LICENSE-2.0 */ -/* */ -/* Unless required by applicable law or agreed to in writing, software */ -/* distributed under the License is distributed on an "AS IS" BASIS, */ -/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ -/* implied. See the License for the specific language governing */ -/* permissions and limitations under the License. */ -/* */ -/* IBM_PROLOG_END_TAG */ -// $Id: proc_revert_sbe_mcs_setup.H,v 1.4 2013/04/27 17:23:43 jmcgill Exp $ -// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_revert_sbe_mcs_setup.H,v $ -//------------------------------------------------------------------------------ -// *| -// *! (C) Copyright International Business Machines Corp. 2011 -// *! All Rights Reserved -- Property of IBM -// *! *** *** -// *| -// *! TITLE : proc_revert_sbe_mcs_setup.H -// *! DESCRIPTION : Revert MCS configuration applied by SBE (FAPI) -// *! -// *! OWNER NAME : Joe McGill Email: jmcgill@us.ibm.com -// *! -// *! ADDITIONAL COMMENTS: -// *! -// *! Disable MCS configuration written by SBE to enable initial phase of -// *! HBI execution (providing lpc_ack for dcbz prior to initialization -// *! of memory). Registers touched by SBE (MCFGP, MCIFIRMASK) will be -// *! reset to flush state by this procedure. -// *! -//------------------------------------------------------------------------------ - -#ifndef _PROC_REVERT_SBE_MCS_SETUP_H_ -#define _PROC_REVERT_SBE_MCS_SETUP_H_ - -//------------------------------------------------------------------------------ -// Includes -//------------------------------------------------------------------------------ - -#include <vector> -#include <fapi.H> - -//------------------------------------------------------------------------------ -// Constant definitions -//------------------------------------------------------------------------------ - -// Nest GP0 register constants -const uint32_t NEST_GP0_MCL_FENCE_B_BIT = 51; -const uint32_t NEST_GP0_MCR_FENCE_B_BIT = 52; - -// MCFGP register constants -const uint32_t MCFGP_VALID_BIT = 0; -const uint32_t MCFGP_UNITS_PER_GROUP_START_BIT = 1; -const uint32_t MCFGP_UNITS_PER_GROUP_END_BIT = 3; -const uint32_t MCFGP_GROUP_MEMBER_ID_START_BIT = 4; -const uint32_t MCFGP_GROUP_MEMBER_ID_END_BIT = 8; -const uint32_t MCFGP_GROUP_SIZE_START_BIT = 11; -const uint32_t MCFGP_GROUP_SIZE_END_BIT = 23; -const uint32_t MCFGP_FASTPATH_ENABLE_BIT = 25; -const uint32_t MCFGP_GROUP_BASE_ADDR_START_BIT = 26; -const uint32_t MCFGP_GROUP_BASE_ADDR_END_BIT = 43; - -// MCIFIR register constants -const uint32_t MCIFIR_CL_TIMEOUT_BIT = 27; -const uint32_t MCIFIR_CL_TIMEOUT_DUE_TO_CHANNEL_BIT = 40; - - -//------------------------------------------------------------------------------ -// Structure definitions -//------------------------------------------------------------------------------ - -// function pointer typedef definition for HWP call support -typedef fapi::ReturnCode -(*proc_revert_sbe_mcs_setup_FP_t)(const fapi::Target&); - - -extern "C" -{ - -//------------------------------------------------------------------------------ -// Function prototypes -//------------------------------------------------------------------------------ - -//------------------------------------------------------------------------------ -// function: disable MCS configuration written by SBE to enable initial phase of -// HBI execution (providing lpc_ack for dcbz prior to initialization -// of memory) -// parameters: i_target => P8 master chip target -// returns: FAPI_RC_SUCCESS if all register writes are successful, -// else failing return code -fapi::ReturnCode proc_revert_sbe_mcs_setup( - const fapi::Target& i_target); - - -} // extern "C" - - -#endif // _PROC_REVERT_SBE_MCS_SETUP_H_ diff --git a/src/usr/hwpf/hwp/slave_sbe/slave_sbe.C b/src/usr/hwpf/hwp/slave_sbe/slave_sbe.C index 1634d6c06..5bdeee5e0 100644 --- a/src/usr/hwpf/hwp/slave_sbe/slave_sbe.C +++ b/src/usr/hwpf/hwp/slave_sbe/slave_sbe.C @@ -58,10 +58,7 @@ #include <fapi.H> #include <fapiPlatHwpInvoker.H> -#include "proc_cen_ref_clk_enable.H" #include "slave_sbe.H" -#include "proc_revert_sbe_mcs_setup.H" -#include "proc_check_slave_sbe_seeprom_complete.H" #include "proc_getecid.H" #include "proc_spless_sbe_startWA.H" #include <sbe/sbeif.H> @@ -82,56 +79,6 @@ uint8_t getMembufsAttachedBitMask( TARGETING::Target * i_procChipHandle ); void fenceAttachedMembufs( TARGETING::Target * i_procChipHandle ); //****************************************************************************** -// call_proc_revert_sbe_mcs_setup function -//****************************************************************************** -void* call_proc_revert_sbe_mcs_setup(void *io_pArgs) -{ - errlHndl_t l_errl = NULL; - IStepError l_stepError; - - TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "call_proc_revert_sbe_mcs_setup entry" ); - - // Note: Even though Cronus trace shows this HWP runs on all proc, - // this should be done only for Master chip per Dean. - - TARGETING::Target* l_pProcTarget = NULL; - TARGETING::targetService().masterProcChipTargetHandle(l_pProcTarget); - - fapi::Target l_fapiProcTarget(fapi::TARGET_TYPE_PROC_CHIP, l_pProcTarget); - - // Invoke the HWP - FAPI_INVOKE_HWP(l_errl, proc_revert_sbe_mcs_setup, l_fapiProcTarget); - - if (l_errl) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR : failed executing proc_revert_sbe_mcs_setup " - "returning error"); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_pProcTarget).addToLog( l_errl ); - - // Create IStep error log and cross reference error that occurred - l_stepError.addErrorDetails( l_errl ); - - errlCommit( l_errl, HWPF_COMP_ID ); - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS : proc_revert_sbe_mcs_setup completed ok"); - } - - TRACDCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "call_proc_revert_sbe_mcs_setup exit"); - - // end task, returning any errorlogs to IStepDisp - return l_stepError.getErrorHandle(); -} - - -//****************************************************************************** // call_host_slave_sbe function //****************************************************************************** void* call_host_slave_sbe_config(void *io_pArgs) @@ -142,7 +89,13 @@ void* call_host_slave_sbe_config(void *io_pArgs) "call_host_slave_sbe_config entry" ); // execute proc_read_nest_freq.C - // execute proc_setup_sbe_config.C + // execute p9_setup_sbe_config.C + // FAPI_INVOKE_HWP(l_errl,p9_setup_sbe_config); + if(l_errl) + { + l_stepError.addErrorDetails(l_errl); + errlCommit(l_errl, HWPF_COMP_ID); + } #ifdef CONFIG_HTMGT // Set system frequency attributes @@ -205,6 +158,50 @@ void* call_host_slave_sbe_config(void *io_pArgs) } +//****************************************************************************** +// call_host_setup_sbe() +//****************************************************************************** +void* call_host_setup_sbe(void *io_pArgs) +{ + errlHndl_t l_errl = NULL; + IStepError l_stepError; + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_host_setup_sbe entry" ); + + //call host_setup_sbe + //FAPI_INVOKE_HWP(l_errl,p9_set_fsi_gp_shadow); + if(l_errl) + { + l_stepError.addErrorDetails(l_errl); + errlCommit(l_errl, HWPF_COMP_ID); + } + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_host_setup_sbe exit" ); + return l_stepError.getErrorHandle(); +} + +//****************************************************************************** +// call_host_cbs_start() +//****************************************************************************** +void* call_host_cbs_start(void *io_pArgs) +{ + errlHndl_t l_errl = NULL; + IStepError l_stepError; + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_host_cbs_start entry" ); + + //call host_cbs_start + //FAPI_INVOKE_HWP(l_errl,p9_start_cbs); + if(l_errl) + { + l_stepError.addErrorDetails(l_errl); + errlCommit(l_errl, HWPF_COMP_ID); + } + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "call_host_cbs_start exit" ); + return l_stepError.getErrorHandle(); +} + //****************************************************************************** // set_proc_boot_voltage_vid @@ -440,17 +437,17 @@ void* call_proc_check_slave_sbe_seeprom_complete( void *io_pArgs ) IStepError l_stepError; void* sbeImgPtr = NULL; size_t sbeImgSize = 0; - size_t l_wait_time = MS_TO_WAIT_OTHERS; + //size_t l_wait_time = MS_TO_WAIT_OTHERS; TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_proc_check_slave_sbe_seeprom_complete entry" ); //If in FSPless environment -- give time for SBE to complete on first chip - if (!INITSERVICE::spBaseServicesEnabled()) + /*if (!INITSERVICE::spBaseServicesEnabled()) { l_wait_time = MS_TO_WAIT_FIRST; - } + }*/ // // get the master Proc target, we want to IGNORE this one. @@ -501,11 +498,11 @@ void* call_proc_check_slave_sbe_seeprom_complete( void *io_pArgs ) // Invoke the HWP fapi::ReturnCode rc_fapi = fapi::FAPI_RC_SUCCESS; - FAPI_EXEC_HWP(rc_fapi, - proc_check_slave_sbe_seeprom_complete, + /*FAPI_EXEC_HWP(rc_fapi, + p9_check_slave_sbe_seeprom_complete, l_fapiProcTarget, sbeImgPtr, - l_wait_time); + l_wait_time);*/ // check for re ipl request if(static_cast<uint32_t>(rc_fapi) == @@ -559,7 +556,7 @@ void* call_proc_check_slave_sbe_seeprom_complete( void *io_pArgs ) } //after first one default to quick check time - l_wait_time = MS_TO_WAIT_OTHERS; + //l_wait_time = MS_TO_WAIT_OTHERS; } // endfor @@ -705,9 +702,10 @@ void* call_proc_cen_ref_clk_enable(void *io_pArgs ) // Invoke the HWP passing in the proc target and // a bit mask indicating connected centaurs - FAPI_INVOKE_HWP(l_errl, - proc_cen_ref_clk_enable, - l_fapiProcTarget, l_membufsAttached ); + // Cumulus only + //FAPI_INVOKE_HWP(l_errl, + // p9_proc_cen_ref_clk_enable, + // l_fapiProcTarget, l_membufsAttached ); if (l_errl) { diff --git a/src/usr/hwpf/hwp/slave_sbe/slave_sbe.H b/src/usr/hwpf/hwp/slave_sbe/slave_sbe.H index ccb5733be..0a42ce9e4 100644 --- a/src/usr/hwpf/hwp/slave_sbe/slave_sbe.H +++ b/src/usr/hwpf/hwp/slave_sbe/slave_sbe.H @@ -48,12 +48,6 @@ * @istepdesc Slave SBE * * @{ - * @substepnum 8 - * @substepname proc_revert_sbe_mcs_setup - * @substepdesc : Clean up MCS Extent regs - * @target_sched serial - * @} - * @{ * @substepnum 9 * @substepname host_slave_sbe_config * @substepdesc : @@ -78,24 +72,31 @@ namespace SLAVE_SBE { /** - * @brief proc_revert_sbe_mcs_setup + * @brief host_slave_sbe_config * - * Clean up MCS Extent regs + * param[in,out] - pointer to any arguments, usually NULL + * + * return any error logs to istep + */ +void* call_host_slave_sbe_config(void *io_pArgs); + +/** + * @brief call_host_setup_sbe * * param[in,out] - pointer to any arguments, usually NULL * * return any error logs to istep */ -void* call_proc_revert_sbe_mcs_setup(void *io_pArgs); +void* call_host_setup_sbe(void *io_pArgs); /** - * @brief host_slave_sbe_config + * @brief call_host_cbs_start * * param[in,out] - pointer to any arguments, usually NULL * - * return any error logs to istep + * return any error logs to istep */ -void* call_host_slave_sbe_config(void *io_pArgs); +void* call_host_cbs_start(void *io_pArgs); /** |