diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2016-10-06 06:14:09 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-10-12 11:52:32 -0400 |
commit | 3ab150991f977e81505114f0a20a9d5e5e29f230 (patch) | |
tree | a0ce06da2a5ae9a884fba5ed15e3a132ede72ef5 /src/usr/sbe | |
parent | 84ed4ae0bc19d64b6e9ac3a33420a3ff4d93fb4c (diff) | |
download | talos-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.C | 85 |
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", |