diff options
author | Pierre Ossman <drzeus@drzeus.cx> | 2006-11-21 11:55:45 -0500 |
---|---|---|
committer | Pierre Ossman <drzeus@drzeus.cx> | 2007-02-04 14:54:10 -0500 |
commit | 55db890a838c7b37256241b1fc53d6344aa79cc0 (patch) | |
tree | 02d5868f69a15eea69aaf517b67bc9cbdffe2ff8 /drivers/mmc/wbsd.c | |
parent | fe4a3c7a20f14d86022a8132adbf6ddb98e7197c (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.c | 15 |
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; |