cmd/part.c: implement "part name" subcommand

This is a natural buddy to the existing "part number", allowing one to
get the partition name for a given partition number.

Acked-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Rasmus Villemoes <ravi@prevas.dk>
Acked-by: Quentin Schuloz <quentin.schulz@cherry.de>
Tested-by: Anshul Dalal <anshuld@ti.com>
This commit is contained in:
Rasmus Villemoes
2025-11-10 21:54:11 +01:00
committed by Tom Rini
parent 3c2a947533
commit 30890051ab
2 changed files with 28 additions and 1 deletions

View File

@@ -25,7 +25,8 @@
enum cmd_part_info {
CMD_PART_INFO_START = 0,
CMD_PART_INFO_SIZE,
CMD_PART_INFO_NUMBER
CMD_PART_INFO_NUMBER,
CMD_PART_INFO_NAME,
};
static int do_part_uuid(int argc, char *const argv[])
@@ -154,6 +155,9 @@ static int do_part_info(int argc, char *const argv[], enum cmd_part_info param)
case CMD_PART_INFO_NUMBER:
snprintf(buf, sizeof(buf), "0x%x", part);
break;
case CMD_PART_INFO_NAME:
snprintf(buf, sizeof(buf), "%s", info.name);
break;
default:
printf("** Unknown cmd_part_info value: %d\n", param);
return 1;
@@ -182,6 +186,11 @@ static int do_part_number(int argc, char *const argv[])
return do_part_info(argc, argv, CMD_PART_INFO_NUMBER);
}
static int do_part_name(int argc, char *const argv[])
{
return do_part_info(argc, argv, CMD_PART_INFO_NAME);
}
static int do_part_set(int argc, char *const argv[])
{
const char *devname, *partstr, *typestr;
@@ -273,6 +282,8 @@ static int do_part(struct cmd_tbl *cmdtp, int flag, int argc,
return do_part_size(argc - 2, argv + 2);
else if (!strcmp(argv[1], "number"))
return do_part_number(argc - 2, argv + 2);
else if (!strcmp(argv[1], "name"))
return do_part_name(argc - 2, argv + 2);
else if (!strcmp(argv[1], "types"))
return do_part_types(argc - 2, argv + 2);
else if (!strcmp(argv[1], "set"))
@@ -305,6 +316,9 @@ U_BOOT_CMD(
"part number <interface> <dev> <part> <varname>\n"
" - set environment variable to the partition number using the partition name\n"
" part must be specified as partition name\n"
"part name <interface> <dev> <part> <varname>\n"
" - set environment variable to the partition name using the partition number\n"
" part must be specified as partition number\n"
#ifdef CONFIG_PARTITION_TYPE_GUID
"part type <interface> <dev>:<part>\n"
" - print partition type\n"

View File

@@ -16,6 +16,7 @@ Synopsis
part start <interface> <dev> <part> <varname>
part size <interface> <dev> <part> <varname>
part number <interface> <dev> <part> <varname>
part name <interface> <dev> <part> <varname>
part set <interface> <dev> <part> <type>
part type <interface> <dev>:<part> [varname]
part types
@@ -86,6 +87,18 @@ part must be specified as partition name.
varname
a variable to store the current partition number value into
The 'part name' command sets an environment variable to the partition name using the partition number,
part must be specified as partition number.
interface
interface for accessing the block device (mmc, sata, scsi, usb, ....)
dev
device number
part
partition number
varname
a variable to store the current partition name into
The 'part set' command sets the type of a partition. This is useful when
autodetection fails or does not do the correct thing: