diff options
Diffstat (limited to 'drivers/mmc')
| -rw-r--r-- | drivers/mmc/mmc.c | 19 | 
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 9988cb1f2..1355735a5 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -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;  |