[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