diff options
author | Matt Derksen <mderkse1@us.ibm.com> | 2019-06-05 17:45:24 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2019-06-12 09:45:34 -0500 |
commit | 1a8e06d43d362217d1c1dfcc95c0e3d73758125f (patch) | |
tree | 0e67d6c6058d4552f2bb3e8036c5f803f6b081ae /src/usr/i2c | |
parent | 98bd24eebf87be2813a8e41c412f5d1e1509b501 (diff) | |
download | talos-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')
-rwxr-xr-x | src/usr/i2c/i2c.C | 16 |
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, |