aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/wbsd.c
diff options
context:
space:
mode:
authorPierre Ossman <drzeus@drzeus.cx>2006-11-21 11:55:45 -0500
committerPierre Ossman <drzeus@drzeus.cx>2007-02-04 14:54:10 -0500
commit55db890a838c7b37256241b1fc53d6344aa79cc0 (patch)
tree02d5868f69a15eea69aaf517b67bc9cbdffe2ff8 /drivers/mmc/wbsd.c
parentfe4a3c7a20f14d86022a8132adbf6ddb98e7197c (diff)
mmc: Allow host drivers to specify max block count
Many controllers have an upper limit on the number of blocks that can be transferred in one request. Allow the host drivers to specify this and make sure we avoid hitting this limit. Also change the max_sectors field to avoid confusion. This makes it map less directly to the block layer limits, but as they didn't apply directly on MMC cards anyway, this isn't a great loss. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Diffstat (limited to 'drivers/mmc/wbsd.c')
-rw-r--r--drivers/mmc/wbsd.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/mmc/wbsd.c b/drivers/mmc/wbsd.c
index 5711beecb4e8..cf16e44c0301 100644
--- a/drivers/mmc/wbsd.c
+++ b/drivers/mmc/wbsd.c
@@ -1343,16 +1343,15 @@ static int __devinit wbsd_alloc_mmc(struct device *dev)
1343 mmc->max_phys_segs = 128; 1343 mmc->max_phys_segs = 128;
1344 1344
1345 /* 1345 /*
1346 * Maximum number of sectors in one transfer. Also limited by 64kB 1346 * Maximum request size. Also limited by 64KiB buffer.
1347 * buffer.
1348 */ 1347 */
1349 mmc->max_sectors = 128; 1348 mmc->max_req_size = 65536;
1350 1349
1351 /* 1350 /*
1352 * Maximum segment size. Could be one segment with the maximum number 1351 * Maximum segment size. Could be one segment with the maximum number
1353 * of segments. 1352 * of bytes.
1354 */ 1353 */
1355 mmc->max_seg_size = mmc->max_sectors * 512; 1354 mmc->max_seg_size = mmc->max_req_size;
1356 1355
1357 /* 1356 /*
1358 * Maximum block size. We have 12 bits (= 4095) but have to subtract 1357 * Maximum block size. We have 12 bits (= 4095) but have to subtract
@@ -1360,6 +1359,12 @@ static int __devinit wbsd_alloc_mmc(struct device *dev)
1360 */ 1359 */
1361 mmc->max_blk_size = 4087; 1360 mmc->max_blk_size = 4087;
1362 1361
1362 /*
1363 * Maximum block count. There is no real limit so the maximum
1364 * request size will be the only restriction.
1365 */
1366 mmc->max_blk_count = mmc->max_req_size;
1367
1363 dev_set_drvdata(dev, mmc); 1368 dev_set_drvdata(dev, mmc);
1364 1369
1365 return 0; 1370 return 0;