summaryrefslogtreecommitdiffstats
path: root/src/usr/i2c/i2c.C
diff options
context:
space:
mode:
authorMatt Derksen <mderkse1@us.ibm.com>2019-06-05 17:45:24 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2019-06-12 09:45:34 -0500
commit1a8e06d43d362217d1c1dfcc95c0e3d73758125f (patch)
tree0e67d6c6058d4552f2bb3e8036c5f803f6b081ae /src/usr/i2c/i2c.C
parent98bd24eebf87be2813a8e41c412f5d1e1509b501 (diff)
downloadtalos-hostboot-1a8e06d43d362217d1c1dfcc95c0e3d73758125f.tar.gz
talos-hostboot-1a8e06d43d362217d1c1dfcc95c0e3d73758125f.zip
Use i2c word write for NVDIMM update
Trying to reduce the update time and this reduced teh time to about 12.3 minutes. Change-Id: I97cd29a8bcda58902089480f2cc0849381e7d2cf CQ:SW466226 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/78422 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/i2c/i2c.C')
-rwxr-xr-xsrc/usr/i2c/i2c.C16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C
index 63b579202..97334408b 100755
--- a/src/usr/i2c/i2c.C
+++ b/src/usr/i2c/i2c.C
@@ -449,12 +449,13 @@ errlHndl_t i2cPerformOp( DeviceFW::OperationType i_opType,
{
if( (subop==DeviceFW::I2C_SMBUS_BLOCK)
|| (subop==DeviceFW::I2C_SMBUS_BYTE)
- || (subop==DeviceFW::I2C_SMBUS_WORD))
+ || (subop==DeviceFW::I2C_SMBUS_WORD)
+ || (subop == DeviceFW::I2C_SMBUS_WORD_NO_PEC) )
{
args.smbus.commandCode =
static_cast<decltype(args.smbus.commandCode)>(
va_arg(i_args,uint64_t));
- args.smbus.usePec = true; // All implementations use PEC
+ args.smbus.usePec = true; // Most implementations use PEC
args.i2cMuxBusSelector = va_arg(i_args,uint64_t);
args.i2cMuxPath = reinterpret_cast<const TARGETING::EntityPath*>(
va_arg(i_args, uint64_t));
@@ -477,11 +478,18 @@ errlHndl_t i2cPerformOp( DeviceFW::OperationType i_opType,
if ( args.offset_length != 0 )
{
args.offset_buffer = temp;
-
}
}
- args.subop=subop;
+ if (subop == DeviceFW::I2C_SMBUS_WORD_NO_PEC)
+ {
+ args.smbus.usePec = false;
+ args.subop = DeviceFW::I2C_SMBUS_WORD;
+ }
+ else
+ {
+ args.subop=subop;
+ }
err = i2cCommonOp( i_opType,
i_target,
OpenPOWER on IntegriCloud