summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMike Baiocchi <baiocchi@us.ibm.com>2015-02-25 20:54:35 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-03-01 15:41:40 -0600
commit89cfb2021343c7e90f067e8a2ea4d5d4a1f9b928 (patch)
tree672403022dee423a8a53e06abbb114a70f0656a7 /src
parenta91a8f7b3d35490845272e839e372329114df7a4 (diff)
downloadtalos-hostboot-89cfb2021343c7e90f067e8a2ea4d5d4a1f9b928.tar.gz
talos-hostboot-89cfb2021343c7e90f067e8a2ea4d5d4a1f9b928.zip
Remove Early I2C Reset Masters on Power Systems
This commit removes the call for i2cResetActiveMasters() during istep 6.3 host_init_fsi for POWER Systems. This call was attempting to reset the Slace Processors' FSI-based I2C Engines and was intermittently causing problems. It was determined this call was not needed for POWER systems as the FSP should have the system initialized properly for Hostboot. Change-Id: Ic6087ecd5ae82ea6a2807017e1d584e8c4072f9f CQ: SW296222 Backport: release-fips830 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/16017 Tested-by: Jenkins Server Reviewed-by: Nicholas E. Bofferding <bofferdn@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/usr/hwas/hostbootIstep.C12
-rwxr-xr-xsrc/usr/i2c/i2c.C36
2 files changed, 34 insertions, 14 deletions
diff --git a/src/usr/hwas/hostbootIstep.C b/src/usr/hwas/hostbootIstep.C
index 9df0c4390..df994cba7 100644
--- a/src/usr/hwas/hostbootIstep.C
+++ b/src/usr/hwas/hostbootIstep.C
@@ -105,11 +105,15 @@ void* host_init_fsi( void *io_pArgs )
break;
}
- l_errl = I2C::i2cResetActiveMasters(I2C::I2C_ALL, false);
- if (l_errl)
+ // Only reset the I2C Masters if FSP is not running
+ if ( !INITSERVICE::spBaseServicesEnabled() )
{
- // Commit this error
- errlCommit( l_errl, HWPF_COMP_ID );
+ l_errl = I2C::i2cResetActiveMasters(I2C::I2C_ALL, false);
+ if (l_errl)
+ {
+ // Commit this error
+ errlCommit( l_errl, HWPF_COMP_ID );
+ }
}
} while (0);
diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C
index 6cc3bdf95..bc4bb7bfd 100755
--- a/src/usr/i2c/i2c.C
+++ b/src/usr/i2c/i2c.C
@@ -1525,24 +1525,40 @@ errlHndl_t i2cCheckForErrors ( TARGETING::Target * i_target,
TRACFCOMP( g_trac_i2c,
ERR_MRK"i2cCheckForErrors() - Error(s) found" );
+ // Combine the status registers
+ uint64_t userdata1 = (0xFFFFFFFF00000000 & i_statusVal.value);
+ userdata1 |= ( 0xFFFFFFFF00000000 & intRegVal) >> 32;
+
+
+ // Combine multiple input arguments
+ uint64_t userdata2 = 0;
+ userdata2 = static_cast<uint64_t>(i_args.engine) << 56;
+ userdata2 |= static_cast<uint64_t>(i_args.port) << 48;
+ userdata2 |= static_cast<uint64_t>(i_args.bit_rate_divisor) << 32;
+ userdata2 |= TARGETING::get_huid(i_target);
+
/*@
* @errortype
- * @reasoncode I2C_HW_ERROR_FOUND
- * @severity ERRL_SEV_UNRECOVERABLE
- * @moduleid I2C_CHECK_FOR_ERRORS
- * @userdata1 Status Register Value
- * @userdata2 Interrupt Register Value (only valid in
- * Interrupt case)
- * @devdesc Error was found in I2C status register.
- * Check userdata1 to determine what the error was.
+ * @reasoncode I2C_HW_ERROR_FOUND
+ * @severity ERRL_SEV_UNRECOVERABLE
+ * @moduleid I2C_CHECK_FOR_ERRORS
+ * @userdata1[0:31 Status Register Value
+ * @userdata1[32:63] Interrupt Register Value (only valid in
+ * Interrupt case)
+ * @userdata2[0:7] I2C Master Engine
+ * @userdata2[8:15] I2C Master Port
+ * @userdata2[16:31] I2C Mode Register Bit Rate Divisor
+ * @userdata2[32:63] I2C Master Target HUID
+ * @devdesc Error was found in I2C status register.
+ * Check userdata to determine what the error was.
* @custdesc A problem occurred during the IPL of the system:
* An error was found in the I2C status register.
*/
err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE,
I2C_CHECK_FOR_ERRORS,
I2C_HW_ERROR_FOUND,
- i_statusVal.value,
- intRegVal );
+ userdata1,
+ userdata2);
// For now limited in what we can call out:
// Could be an issue with Processor or its bus
OpenPOWER on IntegriCloud