On 5 April 2016 at 11:18, Haojian Zhuang <haojian.zhu...@linaro.org> wrote:
> On 5 April 2016 at 17:49, Ryan Harkin <ryan.har...@linaro.org> wrote:
>> On 5 April 2016 at 09:37, Ryan Harkin <ryan.har...@linaro.org> wrote:
>>> On 5 April 2016 at 03:57, Haojian Zhuang <haojian.zhu...@linaro.org> wrote:
>>>> On 5 April 2016 at 01:17, Ryan Harkin <ryan.har...@linaro.org> wrote:
>>>>> Hi Haojian,
>>>>>
>>>>> I've had time to investigate where TC2 is hanging with your patches
>>>>> applied and narrowed it down to the single line of code marked below.
>>>>>
>>>>> I'm going to read the code now and see if I can work out what it's
>>>>> trying to do, but I thought I'd tell you sooner because you might have
>>>>> a better idea.
>>>>>
>>>>> On 22 March 2016 at 12:48, Haojian Zhuang <haojian.zhu...@linaro.org> 
>>>>> wrote:
>>>>>> Add more SD commands to support 4-bit bus width & iospeed. It's not
>>>>>> formal code. And it needs to be updated later.
>>>>>>
>>>>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>>>>> Signed-off-by: Haojian Zhuang <haojian.zhu...@linaro.org>
>>>>>> ---
>>>>>>  EmbeddedPkg/Include/Protocol/MmcHost.h           |   3 +
>>>>>>  EmbeddedPkg/Universal/MmcDxe/Mmc.h               |  17 +++
>>>>>>  EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c | 138 
>>>>>> ++++++++++++++++++++---
>>>>>>  3 files changed, 142 insertions(+), 16 deletions(-)
>>>>>>
>>>>>> diff --git a/EmbeddedPkg/Include/Protocol/MmcHost.h 
>>>>>> b/EmbeddedPkg/Include/Protocol/MmcHost.h
>>>>>> index 5e3a2b7..e9a74f0 100644
>>>>>> --- a/EmbeddedPkg/Include/Protocol/MmcHost.h
>>>>>> +++ b/EmbeddedPkg/Include/Protocol/MmcHost.h
>
>>>>>> +
>>>>>> +  /* SCR */
>>>>>> +  Status = MmcHost->SendCommand (MmcHost, MMC_ACMD51, 0);
>>>>>> +  if (EFI_ERROR (Status)) {
>>>>>> +    DEBUG ((EFI_D_ERROR, "%a(MMC_ACMD51): Error and Status = %r\n", 
>>>>>> __func__, Status));
>>>>>> +    return Status;
>>>>>> +  } else {
>>>>>> +    Status = MmcHost->ReadBlockData (MmcHost, 0, 8, Buffer);
>>>>>
>>>>> ^^ TC2 hangs at this line
>>>>>
>>>>
>>>> Ryan,
>>>>
>>>> Could you help to check where it hangs in
>>>> ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c?
>>>>
>>>
>>> I guess you mean, "where in function MciReadBlockData does it hang?".
>>>
>>> I'll have a look this asap.
>>>
>>
>> I made this mod to the code to add DEBUG:
>>
>> diff --git a/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c
>> b/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c
>> index 5526aac..7ddcf46 100644
>> --- a/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c
>> +++ b/ArmPlatformPkg/Drivers/PL180MciDxe/PL180Mci.c
>> @@ -231,6 +231,7 @@ MciReadBlockData (
>>    do {
>>      // Read the Status flags
>>      Status = MmioRead32 (MCI_STATUS_REG);
>> +DEBUG ((EFI_D_ERROR, "RMH: MciReadBlockData(%d): 0x%x\n", __LINE__, 
>> Status));^M
>>
>>      // Do eight reads if possible else a single read
>>      if (Status & MCI_STATUS_CMD_RXFIFOHALFFULL) {
>>
>>
>> And after the InitializeSdMmcDevice debug, I see this output continuously:
>>
>> RMH: MciReadBlockData(234): 0x40
>>
>> If I add an MmioWrite32 to clear the flags at the start of the read
>> block function, I see the same behaviour, except it reads 0x00
>> continuously instead of 0x40.
>>
>
> There's a loop count in MciReadBlockData(). Could you print the value
> of variable Loop and
> variable Finish? Then I could know whether it reads any data from FIFO.
>

Sorry for the delay.  I added those two variables to the output and
they never change; no data is read:

RMH: MciReadBlockData(237): Status 0x0 Loop 0 Finish 128


> Regards
> Haojian
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to