s5p: cmd_mmc: fix wrong erase block count
authorJaehoon Chung <jh80.chung@samsung.com>
Fri, 7 Jan 2011 04:33:05 +0000 (13:33 +0900)
committerJaehoon Chung <jh80.chung@samsung.com>
Fri, 7 Jan 2011 04:33:05 +0000 (13:33 +0900)
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
common/cmd_mmc.c

index e1bc123..f05545e 100644 (file)
@@ -276,7 +276,7 @@ int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        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;
 
@@ -286,15 +286,13 @@ int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        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;
                        }