From: Wolfgang Muees Date: Wed, 11 Mar 2009 13:28:39 +0000 (+0100) Subject: mmc_spi: allow higher timeouts for SPI mode X-Git-Tag: v2.6.30-rc1~209^2~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c0c88871574ccb4ee53dde1bbb678931b38ed47b;p=thirdparty%2Flinux.git mmc_spi: allow higher timeouts for SPI mode Some SD cards have very high timeouts in SPI mode. So adjust the timeouts from theory to practice. Signed-off-by: Wolfgang Muees Acked-by: David Brownell Signed-off-by: Pierre Ossman --- diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 4a18d90556d95..5c83c67b186ce 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -297,6 +297,21 @@ void mmc_set_data_timeout(struct mmc_data *data, const struct mmc_card *card) data->timeout_clks = 0; } } + /* + * Some cards need very high timeouts if driven in SPI mode. + * The worst observed timeout was 900ms after writing a + * continuous stream of data until the internal logic + * overflowed. + */ + if (mmc_host_is_spi(card->host)) { + if (data->flags & MMC_DATA_WRITE) { + if (data->timeout_ns < 1000000000) + data->timeout_ns = 1000000000; /* 1s */ + } else { + if (data->timeout_ns < 100000000) + data->timeout_ns = 100000000; /* 100ms */ + } + } } EXPORT_SYMBOL(mmc_set_data_timeout);