]> git.sur5r.net Git - u-boot/commitdiff
disk: part_efi: add get_partition_info_efi_by_name()
authorSteve Rae <srae@broadcom.com>
Mon, 26 May 2014 18:52:24 +0000 (11:52 -0700)
committerTom Rini <trini@ti.com>
Thu, 5 Jun 2014 18:44:56 +0000 (14:44 -0400)
Add function to find a GPT table entry by name.

Tested on little endian ARMv7 and ARMv8 configurations

Signed-off-by: Steve Rae <srae@broadcom.com>
disk/part_efi.c
include/part.h

index 78a37829f0407df825d66baf61afd5ac055381e1..612f0926b62bbceb8b35ef9fc6aa259145c35c95 100644 (file)
@@ -181,7 +181,7 @@ int get_partition_info_efi(block_dev_desc_t * dev_desc, int part,
                        UUID_STR_FORMAT_GUID);
 #endif
 
-       debug("%s: start 0x" LBAF ", size 0x" LBAF ", name %s", __func__,
+       debug("%s: start 0x" LBAF ", size 0x" LBAF ", name %s\n", __func__,
              info->start, info->size, info->name);
 
        /* Remember to free pte */
@@ -189,6 +189,25 @@ int get_partition_info_efi(block_dev_desc_t * dev_desc, int part,
        return 0;
 }
 
+int get_partition_info_efi_by_name(block_dev_desc_t *dev_desc,
+       const char *name, disk_partition_t *info)
+{
+       int ret;
+       int i;
+       for (i = 1; i < GPT_ENTRY_NUMBERS; i++) {
+               ret = get_partition_info_efi(dev_desc, i, info);
+               if (ret != 0) {
+                       /* no more entries in table */
+                       return -1;
+               }
+               if (strcmp(name, (const char *)info->name) == 0) {
+                       /* matched */
+                       return 0;
+               }
+       }
+       return -2;
+}
+
 int test_part_efi(block_dev_desc_t * dev_desc)
 {
        ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, legacymbr, 1, dev_desc->blksz);
index f2c8c641faa8e77c0d47a7fdfaae10d210a25515..a496a4ad4a9061012939a513f1f5298207b5dbba 100644 (file)
@@ -180,6 +180,17 @@ int   test_part_amiga (block_dev_desc_t *dev_desc);
 #include <part_efi.h>
 /* disk/part_efi.c */
 int get_partition_info_efi (block_dev_desc_t * dev_desc, int part, disk_partition_t *info);
+/**
+ * get_partition_info_efi_by_name() - Find the specified GPT partition table entry
+ *
+ * @param dev_desc - block device descriptor
+ * @param gpt_name - the specified table entry name
+ * @param info - returns the disk partition info
+ *
+ * @return - '0' on match, '-1' on no match, otherwise error
+ */
+int get_partition_info_efi_by_name(block_dev_desc_t *dev_desc,
+       const char *name, disk_partition_t *info);
 void print_part_efi (block_dev_desc_t *dev_desc);
 int   test_part_efi (block_dev_desc_t *dev_desc);