On some of our boards containing Micron eMMC chips compatible with the eMMC 5.0 specification we starting seeing boot failures due to timeouts: mmc1: error -110 whilst initialising MMC card It turns out that switching the cache on after a power loss event can take quite long. In some simple testing thusfar we've seen values up to 700ms, which is far longer then the GENERIC_CMD6_TIME of the chip (250ms). Looking at both the eMMC 4.51 and 5.0 specification there doesn't seem to be a defined upper bound for the CACHE_CTRL ON command. For both CACHE_CTRL OFF and FLUSH_CACHE it is documented that they can take essentially unbounded time, but CACHE_CTRL ON i get the impression that it's assumed to be "fast". Unfortunately this is not true in reality. To resolve this, simply drop the timeout from CACHE_CTRL ON and assume it might take an unbounded time similar to the FLUSH_CACHE command. Signed-off-by: Sjoerd Simons <sjoerd.simons@xxxxxxxxxxxxxxx> --- drivers/mmc/core/mmc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index bc1bd2c25613..ac70b508a939 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -1794,8 +1794,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, if (!mmc_card_broken_hpi(card) && card->ext_csd.cache_size > 0) { err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, - EXT_CSD_CACHE_CTRL, 1, - card->ext_csd.generic_cmd6_time); + EXT_CSD_CACHE_CTRL, 1, 0); if (err && err != -EBADMSG) goto free_card; -- 2.19.1