]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - disk/part_efi.c
dm: part: Rename some partition functions
[people/ms/u-boot.git] / disk / part_efi.c
index e1b58c54b45b9c03e515a0b0ddca18f9825308c5..209a671d3eed7f3af337817495ec90a601691874 100644 (file)
@@ -41,10 +41,10 @@ static inline u32 efi_crc32(const void *buf, u32 len)
 
 static int pmbr_part_valid(struct partition *part);
 static int is_pmbr_valid(legacy_mbr * mbr);
-static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
+static int is_gpt_valid(struct blk_desc *dev_desc, u64 lba,
                                gpt_header *pgpt_head, gpt_entry **pgpt_pte);
-static gpt_entry *alloc_read_gpt_entries(block_dev_desc_t * dev_desc,
-                               gpt_header * pgpt_head);
+static gpt_entry *alloc_read_gpt_entries(struct blk_desc *dev_desc,
+                                        gpt_header *pgpt_head);
 static int is_pte_valid(gpt_entry * pte);
 
 static char *print_efiname(gpt_entry *pte)
@@ -176,7 +176,7 @@ static void prepare_backup_gpt_header(gpt_header *gpt_h)
  * Public Functions (include/part.h)
  */
 
-void print_part_efi(block_dev_desc_t * dev_desc)
+void print_part_efi(struct blk_desc *dev_desc)
 {
        ALLOC_CACHE_ALIGN_BUFFER_PAD(gpt_header, gpt_head, 1, dev_desc->blksz);
        gpt_entry *gpt_pte = NULL;
@@ -237,8 +237,8 @@ void print_part_efi(block_dev_desc_t * dev_desc)
        return;
 }
 
-int get_partition_info_efi(block_dev_desc_t * dev_desc, int part,
-                               disk_partition_t * info)
+int part_get_info_efi(struct blk_desc *dev_desc, int part,
+                     disk_partition_t *info)
 {
        ALLOC_CACHE_ALIGN_BUFFER_PAD(gpt_header, gpt_head, 1, dev_desc->blksz);
        gpt_entry *gpt_pte = NULL;
@@ -300,13 +300,13 @@ 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,
+int part_get_info_efi_by_name(struct blk_desc *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);
+               ret = part_get_info_efi(dev_desc, i, info);
                if (ret != 0) {
                        /* no more entries in table */
                        return -1;
@@ -319,7 +319,7 @@ int get_partition_info_efi_by_name(block_dev_desc_t *dev_desc,
        return -2;
 }
 
-int test_part_efi(block_dev_desc_t * dev_desc)
+static int test_part_efi(struct blk_desc *dev_desc)
 {
        ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, legacymbr, 1, dev_desc->blksz);
 
@@ -337,7 +337,7 @@ int test_part_efi(block_dev_desc_t * dev_desc)
  *
  * @return - zero on success, otherwise error
  */
-static int set_protective_mbr(block_dev_desc_t *dev_desc)
+static int set_protective_mbr(struct blk_desc *dev_desc)
 {
        /* Setup the Protective MBR */
        ALLOC_CACHE_ALIGN_BUFFER(legacy_mbr, p_mbr, 1);
@@ -363,7 +363,7 @@ static int set_protective_mbr(block_dev_desc_t *dev_desc)
        return 0;
 }
 
-int write_gpt_table(block_dev_desc_t *dev_desc,
+int write_gpt_table(struct blk_desc *dev_desc,
                gpt_header *gpt_h, gpt_entry *gpt_e)
 {
        const int pte_blk_cnt = BLOCK_CNT((gpt_h->num_partition_entries
@@ -517,7 +517,7 @@ int gpt_fill_pte(gpt_header *gpt_h, gpt_entry *gpt_e,
        return 0;
 }
 
-int gpt_fill_header(block_dev_desc_t *dev_desc, gpt_header *gpt_h,
+int gpt_fill_header(struct blk_desc *dev_desc, gpt_header *gpt_h,
                char *str_guid, int parts_count)
 {
        gpt_h->signature = cpu_to_le64(GPT_HEADER_SIGNATURE);
@@ -539,7 +539,7 @@ int gpt_fill_header(block_dev_desc_t *dev_desc, gpt_header *gpt_h,
        return 0;
 }
 
-int gpt_restore(block_dev_desc_t *dev_desc, char *str_disk_guid,
+int gpt_restore(struct blk_desc *dev_desc, char *str_disk_guid,
                disk_partition_t *partitions, int parts_count)
 {
        int ret;
@@ -595,7 +595,7 @@ static void gpt_convert_efi_name_to_char(char *s, efi_char16_t *es, int n)
        }
 }
 
-int gpt_verify_headers(block_dev_desc_t *dev_desc, gpt_header *gpt_head,
+int gpt_verify_headers(struct blk_desc *dev_desc, gpt_header *gpt_head,
                       gpt_entry **gpt_pte)
 {
        /*
@@ -619,7 +619,7 @@ int gpt_verify_headers(block_dev_desc_t *dev_desc, gpt_header *gpt_head,
        return 0;
 }
 
-int gpt_verify_partitions(block_dev_desc_t *dev_desc,
+int gpt_verify_partitions(struct blk_desc *dev_desc,
                          disk_partition_t *partitions, int parts,
                          gpt_header *gpt_head, gpt_entry **gpt_pte)
 {
@@ -658,11 +658,13 @@ int gpt_verify_partitions(block_dev_desc_t *dev_desc,
                gpt_part_size = le64_to_cpu(gpt_e[i].ending_lba) -
                        le64_to_cpu(gpt_e[i].starting_lba) + 1;
                debug("size(LBA) - GPT: %8llu, ENV: %8llu ",
-                     gpt_part_size, (u64) partitions[i].size);
+                     (unsigned long long)gpt_part_size,
+                     (unsigned long long)partitions[i].size);
 
                if (le64_to_cpu(gpt_part_size) != partitions[i].size) {
                        error("Partition %s size: %llu does not match %llu!\n",
-                             efi_str, gpt_part_size, (u64) partitions[i].size);
+                             efi_str, (unsigned long long)gpt_part_size,
+                             (unsigned long long)partitions[i].size);
                        return -1;
                }
 
@@ -678,12 +680,12 @@ int gpt_verify_partitions(block_dev_desc_t *dev_desc,
                /* Check if GPT and ENV start LBAs match */
                debug("start LBA - GPT: %8llu, ENV: %8llu\n",
                      le64_to_cpu(gpt_e[i].starting_lba),
-                     (u64) partitions[i].start);
+                     (unsigned long long)partitions[i].start);
 
                if (le64_to_cpu(gpt_e[i].starting_lba) != partitions[i].start) {
                        error("Partition %s start: %llu does not match %llu!\n",
                              efi_str, le64_to_cpu(gpt_e[i].starting_lba),
-                             (u64) partitions[i].start);
+                             (unsigned long long)partitions[i].start);
                        return -1;
                }
        }
@@ -691,7 +693,7 @@ int gpt_verify_partitions(block_dev_desc_t *dev_desc,
        return 0;
 }
 
-int is_valid_gpt_buf(block_dev_desc_t *dev_desc, void *buf)
+int is_valid_gpt_buf(struct blk_desc *dev_desc, void *buf)
 {
        gpt_header *gpt_h;
        gpt_entry *gpt_e;
@@ -712,7 +714,7 @@ int is_valid_gpt_buf(block_dev_desc_t *dev_desc, void *buf)
        return 0;
 }
 
-int write_mbr_and_gpt_partitions(block_dev_desc_t *dev_desc, void *buf)
+int write_mbr_and_gpt_partitions(struct blk_desc *dev_desc, void *buf)
 {
        gpt_header *gpt_h;
        gpt_entry *gpt_e;
@@ -834,7 +836,7 @@ static int is_pmbr_valid(legacy_mbr * mbr)
  * Description: returns 1 if valid,  0 on error.
  * If valid, returns pointers to PTEs.
  */
-static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
+static int is_gpt_valid(struct blk_desc *dev_desc, u64 lba,
                        gpt_header *pgpt_head, gpt_entry **pgpt_pte)
 {
        if (!dev_desc || !pgpt_head) {
@@ -876,8 +878,8 @@ static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
  * Allocates space for PTEs based on information found in @gpt.
  * Notes: remember to free pte when you're done!
  */
-static gpt_entry *alloc_read_gpt_entries(block_dev_desc_t * dev_desc,
-                                        gpt_header * pgpt_head)
+static gpt_entry *alloc_read_gpt_entries(struct blk_desc *dev_desc,
+                                        gpt_header *pgpt_head)
 {
        size_t count = 0, blk_cnt;
        lbaint_t blk;
@@ -951,4 +953,17 @@ static int is_pte_valid(gpt_entry * pte)
                return 1;
        }
 }
+
+/*
+ * Add an 'a_' prefix so it comes before 'dos' in the linker list. We need to
+ * check EFI first, since a DOS partition is often used as a 'protective MBR'
+ * with EFI.
+ */
+U_BOOT_PART_TYPE(a_efi) = {
+       .name           = "EFI",
+       .part_type      = PART_TYPE_EFI,
+       .get_info       = part_get_info_ptr(part_get_info_efi),
+       .print          = part_print_ptr(print_part_efi),
+       .test           = test_part_efi,
+};
 #endif