]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
cmd: mmc: Allow using partition name in mmc erase command
authorTomas Paukrt <tomaspaukrt@email.cz>
Mon, 2 Sep 2024 18:49:17 +0000 (20:49 +0200)
committerTom Rini <trini@konsulko.com>
Mon, 16 Sep 2024 22:45:55 +0000 (16:45 -0600)
The mmc erase command currently requires blk# and cnt parameters
which can be obtained using the part start and part size commands
if the entire partition needs to be erased.

Simplify the use of the mmc erase command by allowing the partition
name to be specified directly.

Signed-off-by: Tomas Paukrt <tomaspaukrt@email.cz>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
cmd/mmc.c
doc/usage/cmd/mmc.rst

index 9a841c25d3d12f0c997e727d86d9fb54ae8c08fb..c0c23ee24b66ee28b97ca1c6be9bcb0e07180f00 100644 (file)
--- a/cmd/mmc.c
+++ b/cmd/mmc.c
@@ -473,18 +473,26 @@ static int do_mmc_erase(struct cmd_tbl *cmdtp, int flag,
                        int argc, char *const argv[])
 {
        struct mmc *mmc;
+       struct disk_partition info;
        u32 blk, cnt, n;
 
-       if (argc != 3)
+       if (argc < 2 || argc > 3)
                return CMD_RET_USAGE;
 
-       blk = hextoul(argv[1], NULL);
-       cnt = hextoul(argv[2], NULL);
-
        mmc = init_mmc_device(curr_device, false);
        if (!mmc)
                return CMD_RET_FAILURE;
 
+       if (argc == 3) {
+               blk = hextoul(argv[1], NULL);
+               cnt = hextoul(argv[2], NULL);
+       } else if (part_get_info_by_name(mmc_get_blk_desc(mmc), argv[1], &info) >= 0) {
+               blk = info.start;
+               cnt = info.size;
+       } else {
+               return CMD_RET_FAILURE;
+       }
+
        printf("MMC erase: dev # %d, block # %d, count %d ... ",
               curr_device, blk, cnt);
 
@@ -1290,6 +1298,7 @@ U_BOOT_CMD(
        "mmc swrite addr blk#\n"
 #endif
        "mmc erase blk# cnt\n"
+       "mmc erase partname\n"
        "mmc rescan [mode]\n"
        "mmc part - lists available partition on current mmc device\n"
        "mmc dev [dev] [part] [mode] - show or set current mmc device [partition] and set mode\n"
index 5a64400eeaedd6eb77271c26f8d83eedea5c508e..55391fda24c177b6d478e53bbed48fb7a36df6d7 100644 (file)
@@ -15,6 +15,7 @@ Synopsis
     mmc read addr blk# cnt
     mmc write addr blk# cnt
     mmc erase blk# cnt
+    mmc erase partname
     mmc rescan [mode]
     mmc part
     mmc dev [dev] [part] [mode]
@@ -44,12 +45,15 @@ The 'mmc write' command writes raw data to MMC device from memory address with b
     cnt
         block count
 
-The 'mmc erase' command erases *cnt* blocks on the MMC device starting at block *blk#*.
+The 'mmc erase' command erases *cnt* blocks on the MMC device starting at block *blk#* or
+the entire partition specified by *partname*.
 
     blk#
         start block offset
     cnt
         block count
+    partname
+        partition name
 
 The 'mmc rescan' command scans the available MMC device.