On Thu, Oct 26, 2017 at 03:19:30AM +0200, Marcin Wojtas wrote: > From: David Greeson <[email protected]> > > During each transaction start, clearing the I2C_CONTROL_FLAG > was surrounded by 3 uncoditional stalls. This was not necessary, > so replace them with one busy-wait loop, whose polling > count could be also safely reduced. > > Above improvements result in faster transfer initialization > and allow to reduce the I2C bus occupation.
See now why I keep nagging about explanations for delays? :) > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: David Greeson <[email protected]> > Signed-off-by: Marcin Wojtas <[email protected]> Reviewed-by: Leif Lindholm <[email protected]> > --- > Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c | 6 +----- > Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h | 2 +- > 2 files changed, 2 insertions(+), 6 deletions(-) > > diff --git a/Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c > b/Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c > index 8ed96f0..3c26d18 100755 > --- a/Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c > +++ b/Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.c > @@ -243,9 +243,8 @@ MvI2cClearIflg ( > IN I2C_MASTER_CONTEXT *I2cMasterContext > ) > { > - gBS->Stall(I2C_OPERATION_TIMEOUT); > + MvI2cPollCtrl (I2cMasterContext, I2C_OPERATION_TIMEOUT, I2C_CONTROL_IFLG); > MvI2cControlClear(I2cMasterContext, I2C_CONTROL_IFLG); > - gBS->Stall(I2C_OPERATION_TIMEOUT); > } > > /* Timeout is given in us */ > @@ -295,9 +294,6 @@ MvI2cLockedStart ( > MvI2cClearIflg(I2cMasterContext); > } > > - /* Without this delay we Timeout checking IFLG if the Timeout is 0 */ > - gBS->Stall(I2C_OPERATION_TIMEOUT); > - > if (MvI2cPollCtrl(I2cMasterContext, Timeout, I2C_CONTROL_IFLG)) { > DEBUG((DEBUG_ERROR, "MvI2cDxe: Timeout sending %sSTART condition\n", > Mask == I2C_STATUS_START ? "" : "repeated ")); > diff --git a/Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h > b/Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h > index 028fd54..3c9beaf 100644 > --- a/Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h > +++ b/Platform/Marvell/Drivers/I2c/MvI2cDxe/MvI2cDxe.h > @@ -68,7 +68,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > > #define I2C_SOFT_RESET 0x1c > #define I2C_TRANSFER_TIMEOUT 10000 > -#define I2C_OPERATION_TIMEOUT 1000 > +#define I2C_OPERATION_TIMEOUT 100 > > #define I2C_UNKNOWN 0x0 > #define I2C_SLOW 0x1 > -- > 2.7.4 > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

