diff options
-rw-r--r-- | src/sbefw/app/power/ipl_table.C | 18 | ||||
-rw-r--r-- | src/sbefw/core/sberegaccess.H | 14 |
2 files changed, 30 insertions, 2 deletions
diff --git a/src/sbefw/app/power/ipl_table.C b/src/sbefw/app/power/ipl_table.C index ca3298bf..21b70a58 100644 --- a/src/sbefw/app/power/ipl_table.C +++ b/src/sbefw/app/power/ipl_table.C @@ -189,6 +189,7 @@ ReturnCode istepWithCoreConditional( voidfuncptr_t i_hwp); ReturnCode istepWithEqConditional( voidfuncptr_t i_hwp); ReturnCode istepNestFreq( voidfuncptr_t i_hwp); ReturnCode istepCacheInitf( voidfuncptr_t i_hwp ); +ReturnCode istepLpcInit( voidfuncptr_t i_hwp ); //MPIPL Specific ReturnCode istepWithCoreSetBlock( voidfuncptr_t i_hwp ); @@ -301,7 +302,7 @@ static istepMap_t g_istep3PtrTbl[] = ISTEP_MAP( istepWithProc, p9_sbe_io_initf ), ISTEP_MAP( istepWithProc, p9_sbe_startclock_chiplets ), ISTEP_MAP( istepWithProc, p9_sbe_scominit ), - ISTEP_MAP( istepWithProc, p9_sbe_lpc_init ), + ISTEP_MAP( istepLpcInit, p9_sbe_lpc_init ), ISTEP_MAP( istepWithProc, p9_sbe_fabricinit ), ISTEP_MAP( istepCheckSbeMaster, NULL ), ISTEP_MAP( istepWithProc, p9_sbe_mcs_setup ), @@ -640,6 +641,21 @@ ReturnCode istepLoadBootLoader( voidfuncptr_t i_hwp) //---------------------------------------------------------------------------- +ReturnCode istepLpcInit( voidfuncptr_t i_hwp) +{ + ReturnCode rc = FAPI2_RC_SUCCESS; + // Only call lpc init if we are on master proc or + // are in mnfg mode. + if( !(SbeRegAccess::theSbeRegAccess().isSbeSlave()) || + (SbeRegAccess::theSbeRegAccess().isMnfgMode())) + { + rc = istepWithProc(i_hwp); + } + return rc; +} + +//---------------------------------------------------------------------------- + ReturnCode istepStartInstruction( voidfuncptr_t i_hwp) { ReturnCode rc = FAPI2_RC_SUCCESS; diff --git a/src/sbefw/core/sberegaccess.H b/src/sbefw/core/sberegaccess.H index b2d7e1d7..56f4775f 100644 --- a/src/sbefw/core/sberegaccess.H +++ b/src/sbefw/core/sberegaccess.H @@ -146,6 +146,17 @@ class SbeRegAccess } /** + * @brief Check if we are in mnfg mode + * + * @return true if in mnfg mode, false otherwise + * + */ + inline bool isMnfgMode() const + { + return iv_mnfgMode; + } + + /** * @brief Check if SBE should directly go to runtime state * * @return true if SBE should go directly to runtime state, @@ -296,7 +307,8 @@ class SbeRegAccess uint64_t iv_mbx3DontCare1 : 5; uint64_t iv_disableScomFiltering : 1; uint64_t iv_disableInvalidScomAddrCheck : 1; - uint64_t iv_mbx3DontCare2 : 19; + uint64_t iv_mnfgMode : 1; + uint64_t iv_mbx3DontCare2 : 18; uint64_t iv_mbx3Unused : 32; }; uint64_t iv_mbx3; |