[U-Boot] [PATCH] mmc:sdhci: Fix card ready status timeout.
Jaehoon Chung
jh80.chung at samsung.com
Thu Aug 29 05:16:05 CEST 2013
Hi Przemyslaw,
Could you give me the test-case?
I want to test this problem.
On 08/29/2013 01:49 AM, Przemyslaw Marczak wrote:
> According to JEDEC eMMC specification, after data transfer
> (multiple or single block) host must wait for card ready
> status. This is done by waiting for command and data lines
> to be at idle state after transfer. JEDEC does not specify
> maximum timeout.
>
> Before this change max timeout was 10 ms but in case of UMS
> - when system do multiple read/write operations on random
> card blocks - timeout causes I/O errors.
> The timeout has been increased to 200ms after data transfer.
> For other transfers it stays unchanged.
>
> Tested on Goni and Trats.
>
> Signed-off-by: Przemyslaw Marczak <p.marczak at samsung.com>
> Cc: Pantelis Antoniou <panto at antoniou-consulting.com>
> ---
> drivers/mmc/sdhci.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
> index 4261991..22c18d1 100644
> --- a/drivers/mmc/sdhci.c
> +++ b/drivers/mmc/sdhci.c
> @@ -121,8 +121,10 @@ int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
> unsigned int timeout, start_addr = 0;
> unsigned int retry = 10000;
>
> - /* Wait max 10 ms */
> - timeout = 10;
> + if (!data)
> + timeout = 200;
> + else
> + timeout = 10;
And timeout = data ? 10 : 200; ?
Best Regards,
Jaehoon Chung
>
> sdhci_writel(host, SDHCI_INT_ALL_MASK, SDHCI_INT_STATUS);
> mask = SDHCI_CMD_INHIBIT | SDHCI_DATA_INHIBIT;
>
More information about the U-Boot
mailing list