mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-01 17:10:11 +00:00
mmc: fsl_esdhc: increase data transaction timeout to 500ms
The MMC spec says "It is strongly recommended for hosts to implement more than 500ms timeout value even if the card indicates the 250ms maximum busy length." Even the previous value of 300ms is known to be insufficient for some cards. So, increase the timeout to 500ms. Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
parent
335b1936eb
commit
e978a31b63
1 changed files with 8 additions and 1 deletions
|
@ -252,8 +252,15 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
|
||||||
* Rounding up to next power of 2
|
* Rounding up to next power of 2
|
||||||
* => timeout + 13 = log2(mmc->clock/4) + 1
|
* => timeout + 13 = log2(mmc->clock/4) + 1
|
||||||
* => timeout + 13 = fls(mmc->clock/4)
|
* => timeout + 13 = fls(mmc->clock/4)
|
||||||
|
*
|
||||||
|
* However, the MMC spec "It is strongly recommended for hosts to
|
||||||
|
* implement more than 500ms timeout value even if the card
|
||||||
|
* indicates the 250ms maximum busy length." Even the previous
|
||||||
|
* value of 300ms is known to be insufficient for some cards.
|
||||||
|
* So, we use
|
||||||
|
* => timeout + 13 = fls(mmc->clock/2)
|
||||||
*/
|
*/
|
||||||
timeout = fls(mmc->clock/4);
|
timeout = fls(mmc->clock/2);
|
||||||
timeout -= 13;
|
timeout -= 13;
|
||||||
|
|
||||||
if (timeout > 14)
|
if (timeout > 14)
|
||||||
|
|
Loading…
Reference in a new issue