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

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
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@gmail.com --- 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,

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@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,

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.
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@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@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,

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@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@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,
participants (3)
-
gtXfined H.
-
hmz007
-
Jaehoon Chung