From mboxrd@z Thu Jan 1 00:00:00 1970 From: Przemyslaw Marczak Date: Mon, 28 Sep 2015 15:43:50 +0200 Subject: [U-Boot] [PATCH] mmc: dw_mmc: Increase timeout to 4 minutes (as in Linux kernel) In-Reply-To: <1443198325-22460-1-git-send-email-l.majewski@samsung.com> References: <1440769821-24005-1-git-send-email-l.majewski@samsung.com> <1443198325-22460-1-git-send-email-l.majewski@samsung.com> Message-ID: <56094416.5080600@samsung.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Lukasz, On 09/25/2015 06:25 PM, Lukasz Majewski wrote: > The commit: d9dbb97be0e4a550457aec5f11afefb446169c90 > "mmc: dw_mmc: Zap endless timeout" removed endless loop waiting for end > of dw mmc transfer. > > For some workloads - dfu test @ Odroid XU3 (sending 8MiB file) - > and SD cards (e.g. MicroSD Kingston 4GiB, Adata 4GiB) > the default timeout is to short. > > The new value - 4 minutes (240 seconds) - is the same as the one used in > Linux kernel driver. Such fix should be good enough until we come up > with better fix for this issue. > I think, that you should adjust the commit message, because it describes the result of the real problem which is in the background. It doesn't fix the DFU, because it wasn't broken. What is the real problem and how does this commit fix it? > Signed-off-by: Lukasz Majewski > Cc: Marek Vasut > Cc: Pantelis Antoniou > Cc: Tom Rini > --- > 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 a84c1e1..26d34ae 100644 > --- a/drivers/mmc/dw_mmc.c > +++ b/drivers/mmc/dw_mmc.c > @@ -214,7 +214,7 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, > > if (data) { > start = get_timer(0); > - timeout = 1000; > + timeout = 240000; > for (;;) { > mask = dwmci_readl(host, DWMCI_RINTSTS); > /* Error during data transfer. */ > I tested this patch on Odroid XU3 and Odroid U3, with SD and eMMC cards. For read/write data of size 1800MB, it doesn't break the operation. Read takes about one minute for some eMMC card, and the write takes about 2 and a half minute. The normal read/write operations are done partially for big size data, so it should be good, which shows test with write 1800MB to SD card. Writing 1800MB of data takes about 8 minutes on some SD card and then I can see only the info that something was started - but I don't know if it's going on, or the board is dead... So maybe we should get some info from this part of code, that the transfer is going on, e.g. after each next 10% of data portion? Tested-by: Przemyslaw Marczak Best regards, -- Przemyslaw Marczak Samsung R&D Institute Poland Samsung Electronics p.marczak at samsung.com