mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 16:10:58 +00:00
MMC: Max blocks value adjustable
The maximum blocks value was hardcoded to 65535 due to a 16 bit register length. The value can change for different platforms. This patch makes the default the current value of 65535, but it is configurable for other platforms. Signed-off-by: Matt Waddel <matt.waddel@linaro.org> Signed-off-by: Andy Fleming <afleming@freescale.com>
This commit is contained in:
parent
b44c70837a
commit
ce0fbcd2e1
1 changed files with 9 additions and 10 deletions
|
@ -33,6 +33,11 @@
|
|||
#include <mmc.h>
|
||||
#include <div64.h>
|
||||
|
||||
/* Set block count limit because of 16 bit register limit on some hardware*/
|
||||
#ifndef CONFIG_SYS_MMC_MAX_BLK_COUNT
|
||||
#define CONFIG_SYS_MMC_MAX_BLK_COUNT 65535
|
||||
#endif
|
||||
|
||||
static struct list_head mmc_devices;
|
||||
static int cur_dev_num = -1;
|
||||
|
||||
|
@ -139,11 +144,8 @@ mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt, const void*src)
|
|||
return 0;
|
||||
|
||||
do {
|
||||
/*
|
||||
* The 65535 constraint comes from some hardware has
|
||||
* only 16 bit width block number counter
|
||||
*/
|
||||
cur = (blocks_todo > 65535) ? 65535 : blocks_todo;
|
||||
cur = (blocks_todo > CONFIG_SYS_MMC_MAX_BLK_COUNT) ?
|
||||
CONFIG_SYS_MMC_MAX_BLK_COUNT : blocks_todo;
|
||||
if(mmc_write_blocks(mmc, start, cur, src) != cur)
|
||||
return 0;
|
||||
blocks_todo -= cur;
|
||||
|
@ -215,11 +217,8 @@ static ulong mmc_bread(int dev_num, ulong start, lbaint_t blkcnt, void *dst)
|
|||
return 0;
|
||||
|
||||
do {
|
||||
/*
|
||||
* The 65535 constraint comes from some hardware has
|
||||
* only 16 bit width block number counter
|
||||
*/
|
||||
cur = (blocks_todo > 65535) ? 65535 : blocks_todo;
|
||||
cur = (blocks_todo > CONFIG_SYS_MMC_MAX_BLK_COUNT) ?
|
||||
CONFIG_SYS_MMC_MAX_BLK_COUNT : blocks_todo;
|
||||
if(mmc_read_blocks(mmc, dst, start, cur) != cur)
|
||||
return 0;
|
||||
blocks_todo -= cur;
|
||||
|
|
Loading…
Reference in a new issue