{
enum bus_mode speed_mode = MMC_MODES_END;
int dev = curr_device, part = 0, ret;
+ char *endp;
struct mmc *mmc;
switch (argc) {
case 4:
- speed_mode = (int)dectoul(argv[3], NULL);
+ speed_mode = (int)dectoul(argv[3], &endp);
+ if (*endp) {
+ printf("Invalid speed mode index '%s', "
+ "did you specify a mode name?\n", argv[3]);
+ return CMD_RET_USAGE;
+ }
+
fallthrough;
case 3:
- part = (int)dectoul(argv[2], NULL);
- if (part > PART_ACCESS_MASK) {
+ part = (int)dectoul(argv[2], &endp);
+ if (*endp) {
+ printf("Invalid part number '%s'\n", argv[2]);
+ return CMD_RET_USAGE;
+ } else if (part > PART_ACCESS_MASK) {
printf("#part_num shouldn't be larger than %d\n",
PART_ACCESS_MASK);
return CMD_RET_FAILURE;
fallthrough;
case 2:
- dev = (int)dectoul(argv[1], NULL);
+ dev = (int)dectoul(argv[1], &endp);
+ if (*endp) {
+ printf("Invalid device number '%s'\n", argv[1]);
+ return CMD_RET_USAGE;
+ }
+
fallthrough;
case 1:
mmc = __init_mmc_device(dev, true, speed_mode);