在 8/3/2018 6:40 PM, Leif Lindholm 写道:
> 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?
> 

OK, I will correct it in v2.

>>      I2C0_ENABLE_STATUS_U    I2cEnableStatusReg;
>> +    UINT32                  ulTimeCnt = I2C_READ_TIMEOUT;
> 
> What is ul?
> 

It is wrong name and will be corrected in v2.

>>  
>>      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 ()?
> 

The delay is need for I2C. This is a empirical value.
MemoryFance is no need. I will add this as comment.

>> +
>> +        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