summaryrefslogtreecommitdiffstats
path: root/src/usr/i2c
diff options
context:
space:
mode:
authorRobert Lippert <rlippert@google.com>2015-03-27 16:32:13 -0700
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-02-14 09:12:49 -0500
commit28bfab63a26982fe32b7711729ee79f58aaa623a (patch)
tree0eb7a9102a32b938028baf8dab0193161a0a9cb8 /src/usr/i2c
parent0782948ce7cf6c1da9d2c5a66929891ac5f85625 (diff)
downloadtalos-hostboot-28bfab63a26982fe32b7711729ee79f58aaa623a.tar.gz
talos-hostboot-28bfab63a26982fe32b7711729ee79f58aaa623a.zip
i2c: only send 1 master stop in FORCE_UNLOCK reset mode
The existing code path would send 2 master stops, one in i2cForceResetAndUnlock() and another in i2cSendSlaveStop(). The one in i2cSendSlaveStop() can cause IPL failures if the VSPD voltage is not online for a centaur I2C port because it requires checking that the I2C bus is "free" (pulled up) before reporting success. Change-Id: I435f4e738d1c000e23167221a42f6747f0dce93b Signed-off-by: Robert Lippert <rlippert@google.com> Signed-off-by: William A. Kennington III <wak@google.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36263 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/i2c')
-rwxr-xr-xsrc/usr/i2c/i2c.C12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C
index 7e134a5bc..d8cde876e 100755
--- a/src/usr/i2c/i2c.C
+++ b/src/usr/i2c/i2c.C
@@ -6,6 +6,7 @@
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2011,2017 */
+/* [+] Google Inc. */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -2723,12 +2724,13 @@ errlHndl_t i2cReset ( TARGETING::Target * i_target,
// So just commit the log here and let the function continue.
errlCommit( err, I2C_COMP_ID );
}
- }
+ } else {
- // Part of doing the I2C Master reset is also sending a stop
- // command to the slave device.
- err = i2cSendSlaveStop( i_target,
- i_args );
+ // Part of doing the I2C Master reset is also sending a stop
+ // command to the slave device.
+ err = i2cSendSlaveStop( i_target,
+ i_args );
+ }
if( err )
{
OpenPOWER on IntegriCloud