[U-Boot] [PATCH] mmc:sdhci: Fix card ready status timeout.

Pantelis Antoniou panto at antoniou-consulting.com
Fri Sep 6 15:24:30 CEST 2013


Hi there,

On Sep 3, 2013, at 3:50 PM, 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 does 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 |   14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
> index 4261991..c495482 100644
> --- a/drivers/mmc/sdhci.c
> +++ b/drivers/mmc/sdhci.c
> @@ -121,8 +121,18 @@ 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;
> +	/*
> +	 * For some commands this function is called with NULL mmc_data
> +	 * pointer. One of those is CMD13 - send card status.
> +	 * After read/write data transfer or block erase commands - host sends
> +	 * CMD13 and is waiting for card ready status with some timeout.
> +	 * According to some internal cards operations after those commands
> +	 * this time must be increased.
> +	 */
> +	if (data)
> +		timeout = 10; /* ms */
> +	else
> +		timeout = 200;
> 
> 	sdhci_writel(host, SDHCI_INT_ALL_MASK, SDHCI_INT_STATUS);
> 	mask = SDHCI_CMD_INHIBIT | SDHCI_DATA_INHIBIT;
> -- 
> 1.7.9.5
> 

Can we have a config option for these two values instead of magic numbers?

With the defaults being set at 10 & 200 ms.

Regards

-- Pantelis


> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot



More information about the U-Boot mailing list