diff options
author | Wolfgang Muees <wolfgang.mues@auerswald.de> | 2009-04-08 10:14:07 +0100 |
---|---|---|
committer | Pierre Ossman <pierre@ossman.eu> | 2009-06-13 22:42:56 +0200 |
commit | 5cf20aa557e8f9dd5af302b8f33972082479753a (patch) | |
tree | 3883605cb5202c85ee7ff95493a43895d9b2183b /drivers/mmc | |
parent | 94d89efb2c347a82a08a61dbac8565b1087c3259 (diff) | |
download | kernel-crypto-5cf20aa557e8f9dd5af302b8f33972082479753a.tar.gz kernel-crypto-5cf20aa557e8f9dd5af302b8f33972082479753a.tar.xz kernel-crypto-5cf20aa557e8f9dd5af302b8f33972082479753a.zip |
mmc_spi: speedup for slow cards, less wear-out
Speedup for slow cards by transfering more data at once.
This patch also reduces the amount of wear-out of the flash
blocks because fewer partial blocks are written.
Signed-off-by: Wolfgang Muees <wolfgang.mues@auerswald.de>
Signed-off-by: Pierre Ossman <pierre@ossman.eu>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/mmc_spi.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c index f48349d18c9..a789db8eed2 100644 --- a/drivers/mmc/host/mmc_spi.c +++ b/drivers/mmc/host/mmc_spi.c @@ -97,6 +97,14 @@ */ #define r1b_timeout (HZ * 3) +/* One of the critical speed parameters is the amount of data which may + * be transfered in one command. If this value is too low, the SD card + * controller has to do multiple partial block writes (argggh!). With + * today (2008) SD cards there is little speed gain if we transfer more + * than 64 KBytes at a time. So use this value until there is any indication + * that we should do more here. + */ +#define MMC_SPI_BLOCKSATONCE 128 /****************************************************************************/ @@ -1366,6 +1374,10 @@ static int mmc_spi_probe(struct spi_device *spi) mmc->ops = &mmc_spi_ops; mmc->max_blk_size = MMC_SPI_BLOCKSIZE; + mmc->max_hw_segs = MMC_SPI_BLOCKSATONCE; + mmc->max_phys_segs = MMC_SPI_BLOCKSATONCE; + mmc->max_req_size = MMC_SPI_BLOCKSATONCE * MMC_SPI_BLOCKSIZE; + mmc->max_blk_count = MMC_SPI_BLOCKSATONCE; mmc->caps = MMC_CAP_SPI; |