xref: /rk3399_ARM-atf/include/drivers/partition/gpt.h (revision fce8a70edd0d302113757d2d1a7d9225ecacfb03)
1201b66b7SHaojian Zhuang /*
2*fce8a70eSGovindraj Raja  * Copyright (c) 2016-2023, Arm Limited and Contributors. All rights reserved.
3201b66b7SHaojian Zhuang  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
5201b66b7SHaojian Zhuang  */
6201b66b7SHaojian Zhuang 
7c3cf06f1SAntonio Nino Diaz #ifndef GPT_H
8c3cf06f1SAntonio Nino Diaz #define GPT_H
9201b66b7SHaojian Zhuang 
102029f930SSughosh Ganu #include <drivers/partition/efi.h>
1109d40e0eSAntonio Nino Diaz #include <drivers/partition/partition.h>
122029f930SSughosh Ganu #include <tools_share/uuid.h>
13201b66b7SHaojian Zhuang 
14201b66b7SHaojian Zhuang #define PARTITION_TYPE_GPT		0xee
15201b66b7SHaojian Zhuang #define GPT_SIGNATURE			"EFI PART"
16201b66b7SHaojian Zhuang 
17201b66b7SHaojian Zhuang typedef struct gpt_entry {
182029f930SSughosh Ganu 	struct efi_guid		type_uuid;
192029f930SSughosh Ganu 	struct efi_guid		unique_uuid;
20201b66b7SHaojian Zhuang 	unsigned long long	first_lba;
21201b66b7SHaojian Zhuang 	unsigned long long	last_lba;
22201b66b7SHaojian Zhuang 	unsigned long long	attr;
23201b66b7SHaojian Zhuang 	unsigned short		name[EFI_NAMELEN];
24201b66b7SHaojian Zhuang } gpt_entry_t;
25201b66b7SHaojian Zhuang 
26201b66b7SHaojian Zhuang typedef struct gpt_header {
27201b66b7SHaojian Zhuang 	unsigned char		signature[8];
28201b66b7SHaojian Zhuang 	unsigned int		revision;
29201b66b7SHaojian Zhuang 	unsigned int		size;
30201b66b7SHaojian Zhuang 	unsigned int		header_crc;
31201b66b7SHaojian Zhuang 	unsigned int		reserved;
32201b66b7SHaojian Zhuang 	unsigned long long	current_lba;
33201b66b7SHaojian Zhuang 	unsigned long long	backup_lba;
34201b66b7SHaojian Zhuang 	unsigned long long	first_lba;
35201b66b7SHaojian Zhuang 	unsigned long long	last_lba;
362029f930SSughosh Ganu 	struct efi_guid		disk_uuid;
37201b66b7SHaojian Zhuang 	/* starting LBA of array of partition entries */
38201b66b7SHaojian Zhuang 	unsigned long long	part_lba;
39201b66b7SHaojian Zhuang 	/* number of partition entries in array */
40201b66b7SHaojian Zhuang 	unsigned int		list_num;
41201b66b7SHaojian Zhuang 	/* size of a single partition entry (usually 128) */
42201b66b7SHaojian Zhuang 	unsigned int		part_size;
43201b66b7SHaojian Zhuang 	unsigned int		part_crc;
44*fce8a70eSGovindraj Raja } __packed gpt_header_t;
45201b66b7SHaojian Zhuang 
46201b66b7SHaojian Zhuang int parse_gpt_entry(gpt_entry_t *gpt_entry, partition_entry_t *entry);
47201b66b7SHaojian Zhuang 
48c3cf06f1SAntonio Nino Diaz #endif /* GPT_H */
49