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.marc...@samsung.com>
> Cc: Pantelis Antoniou <pa...@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@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot

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

Reply via email to