在 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