[PATCH] cmd: mmc: Allow using partition name in mmc erase command

Simon Glass sjg at chromium.org
Sun Sep 1 22:10:07 CEST 2024


Hi Tomas,

On Sun, 1 Sept 2024 at 07:59, Tomas Paukrt <tomaspaukrt at email.cz> wrote:
>
> 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(-)
>

Does doc/usage/cmd/mmc.rst need an update too?

> 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.
>

Regards,
Simon


More information about the U-Boot mailing list