1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 16:52:14 +02:00

dm: part: Convert partition API use to linker lists

We can use linker lists instead of explicitly declaring each function.
This makes the code shorter by avoiding switch() statements and lots of
header file declarations.

While this does clean up the code it introduces a few code issues with SPL.
SPL never needs to print partition information since this all happens from
commands. SPL mostly doesn't need to obtain information about a partition
either, except in a few cases. Add these cases so that the code will be
dropped from each partition driver when not needed. This avoids code bloat.

I think this is still a win, since it is not a bad thing to be explicit
about which features are used in SPL. But others may like to weigh in.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
Simon Glass
2016-02-29 15:25:47 -07:00
parent 14142811f4
commit 96e5b03c8a
7 changed files with 162 additions and 173 deletions

View File

@@ -319,7 +319,7 @@ int get_partition_info_efi_by_name(struct blk_desc *dev_desc,
return -2;
}
int test_part_efi(struct blk_desc *dev_desc)
static int test_part_efi(struct blk_desc *dev_desc)
{
ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, legacymbr, 1, dev_desc->blksz);
@@ -953,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(get_partition_info_efi),
.print = part_print_ptr(print_part_efi),
.test = test_part_efi,
};
#endif