]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_mmc.c
Merge branch 'at91' of git://git.denx.de/u-boot-atmel
[karo-tx-uboot.git] / common / cmd_mmc.c
index 698157f6b8583291a2cafe98a955527c48ebdf27..4323f76b30549cb0a83b19c8c95b755259d2af14 100644 (file)
@@ -32,10 +32,8 @@ int do_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        int dev;
 
-       if (argc < 2) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
+       if (argc < 2)
+               return cmd_usage(cmdtp);
 
        if (strcmp(argv[1], "init") == 0) {
                if (argc == 2) {
@@ -46,8 +44,7 @@ int do_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                } else if (argc == 3) {
                        dev = (int)simple_strtoul(argv[2], NULL, 10);
                } else {
-                       cmd_usage(cmdtp);
-                       return 1;
+                       return cmd_usage(cmdtp);
                }
 
                if (mmc_legacy_init(dev) != 0) {
@@ -72,14 +69,12 @@ int do_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #endif
                        curr_device = dev;
                } else {
-                       cmd_usage(cmdtp);
-                       return 1;
+                       return cmd_usage(cmdtp);
                }
 
                printf("mmc%d is current device\n", curr_device);
        } else {
-               cmd_usage(cmdtp);
-               return 1;
+               return cmd_usage(cmdtp);
        }
 
        return 0;
@@ -135,8 +130,11 @@ int do_mmcinfo (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        return 0;
 }
 
-U_BOOT_CMD(mmcinfo, 2, 0, do_mmcinfo,
-       "mmcinfo <dev num>-- display MMC info",
+U_BOOT_CMD(
+       mmcinfo, 2, 0, do_mmcinfo,
+       "display MMC info",
+       "<dev num>\n"
+       "    - device number of the device to dislay info of\n"
        ""
 );
 
@@ -156,13 +154,31 @@ int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        mmc_init(mmc);
 
                        return 0;
+               } else if (strncmp(argv[1], "part", 4) == 0) {
+                       int dev = simple_strtoul(argv[2], NULL, 10);
+                       block_dev_desc_t *mmc_dev;
+                       struct mmc *mmc = find_mmc_device(dev);
+
+                       if (!mmc) {
+                               puts("no mmc devices available\n");
+                               return 1;
+                       }
+                       mmc_init(mmc);
+                       mmc_dev = mmc_get_dev(dev);
+                       if (mmc_dev != NULL &&
+                           mmc_dev->type != DEV_TYPE_UNKNOWN) {
+                               print_part(mmc_dev);
+                               return 0;
+                       }
+
+                       puts("get mmc type error!\n");
+                       return 1;
                }
 
        case 0:
        case 1:
        case 4:
-               printf("Usage:\n%s\n", cmdtp->usage);
-               return 1;
+               return cmd_usage(cmdtp);
 
        case 2:
                if (!strcmp(argv[1], "list")) {
@@ -217,10 +233,8 @@ int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        printf("%d blocks written: %s\n",
                                n, (n == cnt) ? "OK" : "ERROR");
                        return (n == cnt) ? 0 : 1;
-               } else {
-                       printf("Usage:\n%s\n", cmdtp->usage);
-                       rc = 1;
-               }
+               } else
+                       rc = cmd_usage(cmdtp);
 
                return rc;
        }
@@ -232,5 +246,6 @@ U_BOOT_CMD(
        "read <device num> addr blk# cnt\n"
        "mmc write <device num> addr blk# cnt\n"
        "mmc rescan <device num>\n"
+       "mmc part <device num> - lists available partition on mmc\n"
        "mmc list - lists available devices");
 #endif