On Thu, Oct 26, 2017 at 03:19:30AM +0200, Marcin Wojtas wrote:
> From: David Greeson <dgreeson@cisco.com>
>
> 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 <dgreeson@cisco.com>
> Signed-off-by: Marcin Wojtas <mw@semihalf.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
> ---
> 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
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel