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