diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c index 2b14a42dcb..4e7bcdf82a 100644 --- a/common/cmd_mmc.c +++ b/common/cmd_mmc.c @@ -154,6 +154,25 @@ 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: @@ -230,5 +249,6 @@ U_BOOT_CMD( "read addr blk# cnt\n" "mmc write addr blk# cnt\n" "mmc rescan \n" + "mmc part - lists available partition on mmc\n" "mmc list - lists available devices"); #endif diff --git a/disk/part.c b/disk/part.c index 3ba88c7e81..1806fe6e18 100644 --- a/disk/part.c +++ b/disk/part.c @@ -364,6 +364,9 @@ static void print_part_header (const char *type, block_dev_desc_t * dev_desc) case IF_TYPE_DOC: puts ("DOC"); break; + case IF_TYPE_MMC: + puts ("MMC"); + break; default: puts ("UNKNOWN"); break;