aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host
diff options
context:
space:
mode:
authorPierre Ossman <drzeus@drzeus.cx>2008-07-05 19:10:27 -0400
committerPierre Ossman <drzeus@drzeus.cx>2008-07-15 08:14:49 -0400
commit23af60398af2f5033e2f53665538a09f498dbc03 (patch)
treefc244139d7d6bb1a82b80cc60fae86970e60c8c5 /drivers/mmc/host
parent97067d5581ec831a75a45a52e417bee0f7943dbf (diff)
mmc: remove multiwrite capability
Relax requirements on host controllers and only require that they do not report a transfer count than is larger than the actual one (i.e. a lower value is okay). This is how many other parts of the kernel behaves so upper layers should already be prepared to handle that scenario. This gives us a performance boost on MMC cards. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Diffstat (limited to 'drivers/mmc/host')
-rw-r--r--drivers/mmc/host/at91_mci.c2
-rw-r--r--drivers/mmc/host/atmel-mci.c2
-rw-r--r--drivers/mmc/host/mmc_spi.c5
-rw-r--r--drivers/mmc/host/mmci.c1
-rw-r--r--drivers/mmc/host/omap.c2
-rw-r--r--drivers/mmc/host/tifm_sd.c2
-rw-r--r--drivers/mmc/host/wbsd.c2
7 files changed, 6 insertions, 10 deletions
diff --git a/drivers/mmc/host/at91_mci.c b/drivers/mmc/host/at91_mci.c
index 16df235fcc2e..f15e2064305c 100644
--- a/drivers/mmc/host/at91_mci.c
+++ b/drivers/mmc/host/at91_mci.c
@@ -995,7 +995,7 @@ static int __init at91_mci_probe(struct platform_device *pdev)
995 mmc->f_min = 375000; 995 mmc->f_min = 375000;
996 mmc->f_max = 25000000; 996 mmc->f_max = 25000000;
997 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; 997 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
998 mmc->caps = MMC_CAP_MULTIWRITE | MMC_CAP_SDIO_IRQ; 998 mmc->caps = MMC_CAP_SDIO_IRQ;
999 999
1000 mmc->max_blk_size = 4095; 1000 mmc->max_blk_size = 4095;
1001 mmc->max_blk_count = mmc->max_req_size; 1001 mmc->max_blk_count = mmc->max_req_size;
diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index 25d5324ab7e2..cce873c5a149 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -849,7 +849,7 @@ static int __init atmci_probe(struct platform_device *pdev)
849 mmc->f_min = (host->bus_hz + 511) / 512; 849 mmc->f_min = (host->bus_hz + 511) / 512;
850 mmc->f_max = host->bus_hz / 2; 850 mmc->f_max = host->bus_hz / 2;
851 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; 851 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
852 mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_MULTIWRITE; 852 mmc->caps |= MMC_CAP_4_BIT_DATA;
853 853
854 mmc->max_hw_segs = 64; 854 mmc->max_hw_segs = 64;
855 mmc->max_phys_segs = 64; 855 mmc->max_phys_segs = 64;
diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
index 4e82f64a96bc..41cc63360e43 100644
--- a/drivers/mmc/host/mmc_spi.c
+++ b/drivers/mmc/host/mmc_spi.c
@@ -1252,10 +1252,7 @@ static int mmc_spi_probe(struct spi_device *spi)
1252 mmc->ops = &mmc_spi_ops; 1252 mmc->ops = &mmc_spi_ops;
1253 mmc->max_blk_size = MMC_SPI_BLOCKSIZE; 1253 mmc->max_blk_size = MMC_SPI_BLOCKSIZE;
1254 1254
1255 /* As long as we keep track of the number of successfully 1255 mmc->caps = MMC_CAP_SPI;
1256 * transmitted blocks, we're good for multiwrite.
1257 */
1258 mmc->caps = MMC_CAP_SPI | MMC_CAP_MULTIWRITE;
1259 1256
1260 /* SPI doesn't need the lowspeed device identification thing for 1257 /* SPI doesn't need the lowspeed device identification thing for
1261 * MMC or SD cards, since it never comes up in open drain mode. 1258 * MMC or SD cards, since it never comes up in open drain mode.
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index da5fecad74d9..696cf3647ceb 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -535,7 +535,6 @@ static int mmci_probe(struct amba_device *dev, void *id)
535 mmc->f_min = (host->mclk + 511) / 512; 535 mmc->f_min = (host->mclk + 511) / 512;
536 mmc->f_max = min(host->mclk, fmax); 536 mmc->f_max = min(host->mclk, fmax);
537 mmc->ocr_avail = plat->ocr_mask; 537 mmc->ocr_avail = plat->ocr_mask;
538 mmc->caps = MMC_CAP_MULTIWRITE;
539 538
540 /* 539 /*
541 * We can do SGIO 540 * We can do SGIO
diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
index 549517c35675..dbc26eb6a89e 100644
--- a/drivers/mmc/host/omap.c
+++ b/drivers/mmc/host/omap.c
@@ -1317,7 +1317,7 @@ static int __init mmc_omap_new_slot(struct mmc_omap_host *host, int id)
1317 1317
1318 host->slots[id] = slot; 1318 host->slots[id] = slot;
1319 1319
1320 mmc->caps = MMC_CAP_MULTIWRITE; 1320 mmc->caps = 0;
1321 if (host->pdata->conf.wire4) 1321 if (host->pdata->conf.wire4)
1322 mmc->caps |= MMC_CAP_4_BIT_DATA; 1322 mmc->caps |= MMC_CAP_4_BIT_DATA;
1323 1323
diff --git a/drivers/mmc/host/tifm_sd.c b/drivers/mmc/host/tifm_sd.c
index 1c14a186f000..13844843e8de 100644
--- a/drivers/mmc/host/tifm_sd.c
+++ b/drivers/mmc/host/tifm_sd.c
@@ -973,7 +973,7 @@ static int tifm_sd_probe(struct tifm_dev *sock)
973 973
974 mmc->ops = &tifm_sd_ops; 974 mmc->ops = &tifm_sd_ops;
975 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; 975 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
976 mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_MULTIWRITE; 976 mmc->caps = MMC_CAP_4_BIT_DATA;
977 mmc->f_min = 20000000 / 60; 977 mmc->f_min = 20000000 / 60;
978 mmc->f_max = 24000000; 978 mmc->f_max = 24000000;
979 979
diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c
index f7dcd8ec0d7f..adda37952032 100644
--- a/drivers/mmc/host/wbsd.c
+++ b/drivers/mmc/host/wbsd.c
@@ -1219,7 +1219,7 @@ static int __devinit wbsd_alloc_mmc(struct device *dev)
1219 mmc->f_min = 375000; 1219 mmc->f_min = 375000;
1220 mmc->f_max = 24000000; 1220 mmc->f_max = 24000000;
1221 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; 1221 mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
1222 mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_MULTIWRITE; 1222 mmc->caps = MMC_CAP_4_BIT_DATA;
1223 1223
1224 spin_lock_init(&host->lock); 1224 spin_lock_init(&host->lock);
1225 1225