[PATCH] mmc: dw_mmc: Fixes timeout issue for FIFO mode

Jaehoon Chung jh80.chung at samsung.com
Wed Jan 12 00:04:49 CET 2022


On 1/11/22 8:05 PM, gtXfined H. wrote:
> Hi,
> 
>>  Which board did you test? When you do power-on, is it reproduced every
> time?
> 
> I am using Rockchip RK3399 based board - NanoPi R4S for this test.
> It doesn't appear every time, but it should be encountered once about 20
> times.
> I have run "setenv bootcmd reset; saveenv; reset" for automated testing.

This patch doesn't clarify.

The below commit had been fixed that doesn't work when data read. 
"mmc: dw_mmc: Fixes data read when receiving DTO interrupt in FIFO mode"

It seems that not clearing during reset card.
(power glitch or other problem..?)

Best Regards,
Jaehoon Chung

> 
> 
>> Could you change from your ID to your name?
> 
> This is my first time sending a patch, sorry I didn't notice this, do I
> need to resend this patch?
> 
> 
> BR,
> Jensen, Huang
> 
> 
> On Tue, Jan 11, 2022 at 6:38 PM Jaehoon Chung <jh80.chung at samsung.com>
> wrote:
> 
>> Hi,
>>
>> On 1/11/22 7:24 PM, hmz007 wrote:
>>> Clearing the DTO interrupt should be unnecessary, and it would
>>> potentially result in never receiving this interrupt again.
>>>
>>> Do power-on or reset from uboot for a while can reproduce the issue:
>>>   dwmci_data_transfer: Timeout waiting for data!
>>>   mmc_load_image_raw_sector: mmc block read error
>>
>> Which board did you test? When you do power-on, is it reproduced every
>> time?
>>
>>>
>>> Tested on NanoPi R4S with SanDisk Extreme PRO 32GB.
>>>
>>> Fixes: 8cb9d3ed3a ("mmc: dw_mmc: Fixes data read when receiving DTO
>> interrupt in FIFO mode")
>>> Signed-off-by: hmz007 <hmz007 at gmail.com>
>>
>> Could you change from your ID to your name?
>>
>> Best Regards,
>> Jaehoon Chung
>>
>>> ---
>>>  drivers/mmc/dw_mmc.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
>>> index a949dad574..8fa26b340b 100644
>>> --- a/drivers/mmc/dw_mmc.c
>>> +++ b/drivers/mmc/dw_mmc.c
>>> @@ -168,7 +168,7 @@ static int dwmci_data_transfer(struct dwmci_host
>> *host, struct mmc_data *data)
>>>                       if (data->flags == MMC_DATA_READ &&
>>>                           (mask & (DWMCI_INTMSK_RXDR |
>> DWMCI_INTMSK_DTO))) {
>>>                               dwmci_writel(host, DWMCI_RINTSTS,
>>> -                                          DWMCI_INTMSK_RXDR |
>> DWMCI_INTMSK_DTO);
>>> +                                          DWMCI_INTMSK_RXDR);
>>>                               while (size) {
>>>                                       ret = dwmci_fifo_ready(host,
>>>                                                       DWMCI_FIFO_EMPTY,
>>>
>>
>>
> 



More information about the U-Boot mailing list