int dev = simple_strtoul(argv[2], NULL, 10);
u32 blk = simple_strtoul(argv[3], NULL, 16);
u32 cnt = simple_strtoul(argv[4], NULL, 16);
- u32 n, i, max_cnt;
+ u32 n, i, max_cnt = 10;
struct mmc *mmc = find_mmc_device(dev);
void *addr = (void *)CONFIG_SYS_SDRAM_BASE + 0x02200000;
if (!mmc)
return 1;
- if (cnt < 10)
- max_cnt = cnt;
- else
- max_cnt = 10;
-
printf("\nMMC erase: dev # %d, block # %d, count %d ... ",
dev, blk, cnt);
- for (i = 0; i < cnt; i++) {
+ for (i = 0; i < cnt; i += max_cnt) {
+ if (i < 10)
+ max_cnt = cnt;
+
n = mmc->block_dev.block_write(dev, blk, max_cnt, addr);
blk += n;
}