summaryrefslogtreecommitdiffstats
path: root/src/usr/sbe
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2016-10-06 06:14:09 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-10-12 11:52:32 -0400
commit3ab150991f977e81505114f0a20a9d5e5e29f230 (patch)
treea0ce06da2a5ae9a884fba5ed15e3a132ede72ef5 /src/usr/sbe
parent84ed4ae0bc19d64b6e9ac3a33420a3ff4d93fb4c (diff)
downloadtalos-hostboot-3ab150991f977e81505114f0a20a9d5e5e29f230.tar.gz
talos-hostboot-3ab150991f977e81505114f0a20a9d5e5e29f230.zip
Save away mbox scratch regs before using
The debug tools use the scratch regs for communication purposes with the debug tools, however the initial values of the scratch regs are used for boot. Save the initial values away so the mbox scratch regs can be used for debug tools Change-Id: I372f7d23bc03cf0c88c845a18ebb1c9657c364c5 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30880 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/sbe')
-rw-r--r--src/usr/sbe/sbe_update.C85
1 files changed, 24 insertions, 61 deletions
diff --git a/src/usr/sbe/sbe_update.C b/src/usr/sbe/sbe_update.C
index 3307fd5ae..4e85e886f 100644
--- a/src/usr/sbe/sbe_update.C
+++ b/src/usr/sbe/sbe_update.C
@@ -3344,11 +3344,7 @@ namespace SBE
/////////////////////////////////////////////////////////////////////
void setNestFreqAttributes(uint32_t i_nestFreq)
{
-
- errlHndl_t l_err = nullptr;
- uint64_t l_mboxScratchReg4 = 0;
INITSERVICE::SPLESS::MboxScratch4_t l_scratch4;
- size_t l_indexSize = sizeof(l_mboxScratchReg4);
uint32_t l_i2cBusDiv = 0;
// Call targeting function to update NEST_FREQ
@@ -3364,21 +3360,11 @@ namespace SBE
"Master Proc target is NULL");
// Get the i2c bus divisor
- l_err = deviceRead( l_masterProc,
- &l_mboxScratchReg4,
- l_indexSize,
- DEVICE_SCOM_ADDRESS(
- INITSERVICE::SPLESS::MBOX_SCRATCH_REG4) );
-
- if( l_err )
- {
- TRACFCOMP( g_trac_sbe,
- "setNestFreqAttributes::"
- "Failed to get the bucket index from scom address");
- errlCommit( l_err, SBE_COMP_ID );
- }
-
- l_scratch4.data32 = static_cast<uint32_t>(l_mboxScratchReg4 >> 32);
+ TARGETING::ATTR_MASTER_MBOX_SCRATCH_type l_scratchRegs;
+ assert(l_sys->tryGetAttr
+ <TARGETING::ATTR_MASTER_MBOX_SCRATCH>(l_scratchRegs),
+ "setNestFreqAttributes() failed to get MASTER_MBOX_SCRATCH");
+ l_scratch4.data32 = l_scratchRegs[INITSERVICE::SPLESS::SCRATCH_4];
// The Nest PLL Bucket ID ranges 1-5. Subtract 1 for zero-based indexing
l_i2cBusDiv = NEST_PLL_FREQ_I2CDIV_LIST[l_scratch4.nestPllBucket-1];
@@ -4534,35 +4520,26 @@ namespace SBE
errlHndl_t getBootNestFreq( uint32_t & o_bootNestFreq )
{
errlHndl_t l_err = nullptr;
- uint64_t l_mboxScratchReg4 = 0;
INITSERVICE::SPLESS::MboxScratch4_t l_scratch4;
- size_t l_indexSize = sizeof(l_mboxScratchReg4);
TARGETING::Target * l_masterProcTarget = NULL;
TARGETING::targetService()
.masterProcChipTargetHandle( l_masterProcTarget );
+ TARGETING::Target * l_sys = nullptr;
+ (void) TARGETING::targetService().getTopLevelTarget( l_sys );
+ assert( l_sys, "getBootNestFreq() system target is NULL");
+
+
TRACFCOMP( g_trac_sbe, ENTER_MRK"Enter getBootNestFreq()");
do
{
- l_err = deviceRead( l_masterProcTarget,
- &l_mboxScratchReg4,
- l_indexSize,
- DEVICE_SCOM_ADDRESS(
- INITSERVICE::SPLESS::MBOX_SCRATCH_REG4) );
-
- if( l_err )
- {
- TRACFCOMP(g_trac_sbe,
- "getBootNestFreq::"
- "Failed to get the bucket index from scom address");
- errlCommit(l_err, SBE_COMP_ID);
- break;
- }
-
- l_scratch4.data32 = static_cast<uint32_t>(l_mboxScratchReg4 >> 32);
-
+ TARGETING::ATTR_MASTER_MBOX_SCRATCH_type l_scratchRegs;
+ assert(l_sys->tryGetAttr
+ <TARGETING::ATTR_MASTER_MBOX_SCRATCH>(l_scratchRegs),
+ "getBootNestFreq() failed to get MASTER_MBOX_SCRATCH");
+ l_scratch4.data32 = l_scratchRegs[INITSERVICE::SPLESS::SCRATCH_4];
TRACFCOMP(g_trac_sbe,
"The nest PLL bucket id is %d",
@@ -4877,35 +4854,21 @@ namespace SBE
errlHndl_t getBootMcSyncMode( uint8_t& o_mcSyncMode )
{
errlHndl_t l_err = nullptr;
- uint64_t l_mboxScratchReg5 = 0;
INITSERVICE::SPLESS::MboxScratch5_t l_scratch5;
- size_t l_indexSize = sizeof(l_mboxScratchReg5);
-
- TARGETING::Target * l_masterProcTarget = NULL;
- TARGETING::targetService()
- .masterProcChipTargetHandle( l_masterProcTarget );
TRACFCOMP( g_trac_sbe, ENTER_MRK"Enter getBootMcSyncMode()");
do
{
- l_err = deviceRead( l_masterProcTarget,
- &l_mboxScratchReg5,
- l_indexSize,
- DEVICE_SCOM_ADDRESS(
- INITSERVICE::SPLESS::MBOX_SCRATCH_REG5) );
-
- if( l_err )
- {
- TRACFCOMP(g_trac_sbe,
- "getBootMcSyncMode::"
- "Failed to get the bucket index from scom address");
- errlCommit(l_err, SBE_COMP_ID);
- break;
- }
-
- l_scratch5.data32 = static_cast<uint32_t>(l_mboxScratchReg5 >> 32);
-
+ TARGETING::Target * l_sys = nullptr;
+ (void) TARGETING::targetService().getTopLevelTarget( l_sys );
+ assert( l_sys, "getBootMcSyncMode() system target is NULL");
+
+ TARGETING::ATTR_MASTER_MBOX_SCRATCH_type l_scratchRegs;
+ assert(l_sys->tryGetAttr
+ <TARGETING::ATTR_MASTER_MBOX_SCRATCH>(l_scratchRegs),
+ "getBootMcSyncMode() failed to get MASTER_MBOX_SCRATCH");
+ l_scratch5.data32 = l_scratchRegs[INITSERVICE::SPLESS::SCRATCH_5];
TRACFCOMP(g_trac_sbe,
"The MC Sync Bit is %d",
OpenPOWER on IntegriCloud