1 /* 2 * Copyright (c) 2016-2022, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef PARTITION_H 8 #define PARTITION_H 9 10 #include <stdint.h> 11 12 #include "efi.h" 13 #include "uuid.h" 14 15 #if !PLAT_PARTITION_MAX_ENTRIES 16 #define PLAT_PARTITION_MAX_ENTRIES 16 17 #endif /* PLAT_PARTITION_MAX_ENTRIES */ 18 19 #if !PLAT_PARTITION_BLOCK_SIZE 20 #define PLAT_PARTITION_BLOCK_SIZE 512 21 #endif /* PLAT_PARTITION_BLOCK_SIZE */ 22 23 #define LEGACY_PARTITION_BLOCK_SIZE 512 24 25 #define DEFAULT_GPT_HEADER_SIZE 92 26 27 typedef struct partition_entry { 28 uint64_t start; 29 uint64_t length; 30 char name[EFI_NAMELEN]; 31 struct efi_guid part_guid; 32 struct efi_guid type_guid; 33 } partition_entry_t; 34 35 typedef struct partition_entry_list { 36 partition_entry_t list[PLAT_PARTITION_MAX_ENTRIES]; 37 int entry_count; 38 } partition_entry_list_t; 39 40 int load_partition_table(unsigned int image_id); 41 const partition_entry_t *get_partition_entry(const char *name); 42 const partition_entry_t *get_partition_entry_by_type(const uuid_t *type_guid); 43 const partition_entry_t *get_partition_replica_by_type(const uuid_t *type_uuid); 44 const partition_entry_t *get_partition_entry_by_uuid(const uuid_t *part_uuid); 45 const partition_entry_list_t *get_partition_entry_list(void); 46 void partition_init(unsigned int image_id); 47 48 #endif /* PARTITION_H */ 49