[PATCH] cmd: mmc: Allow using partition name in mmc erase command
Tomas Paukrt
tomaspaukrt at email.cz
Sun Sep 1 15:59:12 CEST 2024
The mmc erase command currently requires blk# and cnt parameters
which can be obtained using the part command if the entire partition
needs to be deleted.
Simplify the use of the mmc erase command by allowing the partition
name to be specified directly.
Signed-off-by: Tomas Paukrt <tomaspaukrt at email.cz>
---
cmd/mmc.c | 21 ++++++++++++++-------
doc/usage/cmd/mmc.rst | 4 +++-
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/cmd/mmc.c b/cmd/mmc.c
index 7244a90..ba2f506 100644
--- a/cmd/mmc.c
+++ b/cmd/mmc.c
@@ -472,18 +472,25 @@ 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)
- 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 == 2) {
+ if (part_get_info_by_name(mmc_get_blk_desc(mmc), argv[1], &info) < 0)
+ return CMD_RET_FAILURE;
+ blk = info.start;
+ cnt = info.size & ~(mmc->erase_grp_size - 1);
+ } else if (argc == 3) {
+ blk = hextoul(argv[1], NULL);
+ cnt = hextoul(argv[2], NULL);
+ } else {
+ return CMD_RET_USAGE;
+ }
+
printf("\nMMC erase: dev # %d, block # %d, count %d ... ",
curr_device, blk, cnt);
@@ -1270,7 +1277,7 @@ U_BOOT_CMD(
#if CONFIG_IS_ENABLED(CMD_MMC_SWRITE)
"mmc swrite addr blk#\n"
#endif
- "mmc erase blk# cnt\n"
+ "mmc erase blk# cnt | 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"
diff --git a/doc/usage/cmd/mmc.rst b/doc/usage/cmd/mmc.rst
index 5a64400..b919b75 100644
--- a/doc/usage/cmd/mmc.rst
+++ b/doc/usage/cmd/mmc.rst
@@ -14,7 +14,7 @@ Synopsis
mmc info
mmc read addr blk# cnt
mmc write addr blk# cnt
- mmc erase blk# cnt
+ mmc erase blk# cnt | partname
mmc rescan [mode]
mmc part
mmc dev [dev] [part] [mode]
@@ -50,6 +50,8 @@ The 'mmc erase' command erases *cnt* blocks on the MMC device starting at block
start block offset
cnt
block count
+ partname
+ partition name
The 'mmc rescan' command scans the available MMC device.
--
2.7.4
More information about the U-Boot
mailing list