On Tue, Jul 24, 2018 at 03:08:58PM +0800, Ming Huang wrote:
> From: shaochangliang <[email protected]>
> 
> I2C may enable failed in D06, so retry I2C enable while
> enable failed.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: shaochangliang <[email protected]>
> Signed-off-by: Ming Huang <[email protected]>
> Signed-off-by: Heyi Guo <[email protected]>
> ---
>  Silicon/Hisilicon/Library/I2CLib/I2CLib.c | 22 ++++++++++++--------
>  1 file changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c 
> b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c
> index b5b388d756..ecd2f07c4d 100644
> --- a/Silicon/Hisilicon/Library/I2CLib/I2CLib.c
> +++ b/Silicon/Hisilicon/Library/I2CLib/I2CLib.c
> @@ -83,6 +83,7 @@ I2C_Enable(UINT32 Socket,UINT8 Port)
>  {
>      I2C0_ENABLE_U           I2cEnableReg;

Ugh, indentation is incorrect in the original.
Can you correct that in a patch preceding this one?

>      I2C0_ENABLE_STATUS_U    I2cEnableStatusReg;
> +    UINT32                  ulTimeCnt = I2C_READ_TIMEOUT;

What is ul?

>  
>      UINTN Base = GetI2cBase(Socket, Port);
>  
> @@ -91,16 +92,19 @@ I2C_Enable(UINT32 Socket,UINT8 Port)
>      I2cEnableReg.bits.enable = 1;
>      I2C_REG_WRITE(Base + I2C_ENABLE_OFFSET, I2cEnableReg.Val32);
>  
> -
> -    I2C_REG_READ(Base + I2C_ENABLE_STATUS_OFFSET, I2cEnableStatusReg.Val32);
> -    if (1 == I2cEnableStatusReg.bits.ic_en)
> +    do
>      {

Move that brace up to the previous line.

> -        return EFI_SUCCESS;
> -    }
> -    else
> -    {
> -        return EFI_DEVICE_ERROR;
> -    }
> +        I2C_Delay(10000);

Why 10000?
Do we need a MemoryFence ()?

> +
> +        ulTimeCnt--;
> +        I2C_REG_READ(Base + I2C_ENABLE_STATUS_OFFSET, 
> I2cEnableStatusReg.Val32);
> +        if (0 == ulTimeCnt)
> +        {

Move that brace up to previous line.

> +            return EFI_DEVICE_ERROR;
> +        }
> +    }while (0 == I2cEnableStatusReg.bits.ic_en);

Space after }

/
    Leif

> +
> +    return EFI_SUCCESS;
>  }
>  
>  void I2C_SetTarget(UINT32 Socket,UINT8 Port,UINT32 I2cDeviceAddr)
> -- 
> 2.17.0
> 
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to