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/partition.h> 11 12 #define PARTITION_TYPE_GPT 0xee 13 #define GPT_HEADER_OFFSET PLAT_PARTITION_BLOCK_SIZE 14 #define GPT_ENTRY_OFFSET (GPT_HEADER_OFFSET + \ 15 PLAT_PARTITION_BLOCK_SIZE) 16 #define GUID_LEN 16 17 18 #define GPT_SIGNATURE "EFI PART" 19 20 typedef struct gpt_entry { 21 unsigned char type_uuid[GUID_LEN]; 22 unsigned char unique_uuid[GUID_LEN]; 23 unsigned long long first_lba; 24 unsigned long long last_lba; 25 unsigned long long attr; 26 unsigned short name[EFI_NAMELEN]; 27 } gpt_entry_t; 28 29 typedef struct gpt_header { 30 unsigned char signature[8]; 31 unsigned int revision; 32 unsigned int size; 33 unsigned int header_crc; 34 unsigned int reserved; 35 unsigned long long current_lba; 36 unsigned long long backup_lba; 37 unsigned long long first_lba; 38 unsigned long long last_lba; 39 unsigned char disk_uuid[16]; 40 /* starting LBA of array of partition entries */ 41 unsigned long long part_lba; 42 /* number of partition entries in array */ 43 unsigned int list_num; 44 /* size of a single partition entry (usually 128) */ 45 unsigned int part_size; 46 unsigned int part_crc; 47 } gpt_header_t; 48 49 int parse_gpt_entry(gpt_entry_t *gpt_entry, partition_entry_t *entry); 50 51 #endif /* GPT_H */ 52