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

Reply via email to