1 /* 2 * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef GPT_H 8 #define GPT_H 9 10 #include <drivers/partition/efi.h> 11 #include <drivers/partition/partition.h> 12 #include <tools_share/uuid.h> 13 14 #define PARTITION_TYPE_GPT 0xee 15 #define GPT_HEADER_OFFSET PLAT_PARTITION_BLOCK_SIZE 16 #define GPT_ENTRY_OFFSET (GPT_HEADER_OFFSET + \ 17 PLAT_PARTITION_BLOCK_SIZE) 18 19 #define GPT_SIGNATURE "EFI PART" 20 21 typedef struct gpt_entry { 22 struct efi_guid type_uuid; 23 struct efi_guid unique_uuid; 24 unsigned long long first_lba; 25 unsigned long long last_lba; 26 unsigned long long attr; 27 unsigned short name[EFI_NAMELEN]; 28 } gpt_entry_t; 29 30 typedef struct gpt_header { 31 unsigned char signature[8]; 32 unsigned int revision; 33 unsigned int size; 34 unsigned int header_crc; 35 unsigned int reserved; 36 unsigned long long current_lba; 37 unsigned long long backup_lba; 38 unsigned long long first_lba; 39 unsigned long long last_lba; 40 struct efi_guid disk_uuid; 41 /* starting LBA of array of partition entries */ 42 unsigned long long part_lba; 43 /* number of partition entries in array */ 44 unsigned int list_num; 45 /* size of a single partition entry (usually 128) */ 46 unsigned int part_size; 47 unsigned int part_crc; 48 } gpt_header_t; 49 50 int parse_gpt_entry(gpt_entry_t *gpt_entry, partition_entry_t *entry); 51 52 #endif /* GPT_H */ 53