+ state = MMC_INVALID;
+ if (argc == 5 && strcmp(argv[1], "read") == 0)
+ state = MMC_READ;
+ else if (argc == 5 && strcmp(argv[1], "write") == 0)
+ state = MMC_WRITE;
+ else if (argc == 4 && strcmp(argv[1], "erase") == 0)
+ state = MMC_ERASE;
+
+ if (state != MMC_INVALID) {
+ struct mmc *mmc = find_mmc_device(curr_device);
+ int idx = 2;
+ u32 blk, cnt, n;
+ void *addr;
+
+ if (state != MMC_ERASE) {
+ addr = (void *)simple_strtoul(argv[idx], NULL, 16);
+ ++idx;
+ } else
+ addr = NULL;
+ blk = simple_strtoul(argv[idx], NULL, 16);
+ cnt = simple_strtoul(argv[idx + 1], NULL, 16);