xref: /rk3399_ARM-atf/include/drivers/partition/gpt.h (revision c3cf06f1a3a9b9ee8ac7a0ae505f95c45f7dca84)
1201b66b7SHaojian Zhuang /*
2201b66b7SHaojian Zhuang  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3201b66b7SHaojian Zhuang  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
5201b66b7SHaojian Zhuang  */
6201b66b7SHaojian Zhuang 
7*c3cf06f1SAntonio Nino Diaz #ifndef GPT_H
8*c3cf06f1SAntonio Nino Diaz #define GPT_H
9201b66b7SHaojian Zhuang 
10201b66b7SHaojian Zhuang #include <partition.h>
11201b66b7SHaojian Zhuang 
12201b66b7SHaojian Zhuang #define PARTITION_TYPE_GPT		0xee
13201b66b7SHaojian Zhuang #define GPT_HEADER_OFFSET		PARTITION_BLOCK_SIZE
14201b66b7SHaojian Zhuang #define GPT_ENTRY_OFFSET		(GPT_HEADER_OFFSET +		\
15201b66b7SHaojian Zhuang 					 PARTITION_BLOCK_SIZE)
16201b66b7SHaojian Zhuang #define GUID_LEN			16
17201b66b7SHaojian Zhuang 
18201b66b7SHaojian Zhuang #define GPT_SIGNATURE			"EFI PART"
19201b66b7SHaojian Zhuang 
20201b66b7SHaojian Zhuang typedef struct gpt_entry {
21201b66b7SHaojian Zhuang 	unsigned char		type_uuid[GUID_LEN];
22201b66b7SHaojian Zhuang 	unsigned char		unique_uuid[GUID_LEN];
23201b66b7SHaojian Zhuang 	unsigned long long	first_lba;
24201b66b7SHaojian Zhuang 	unsigned long long	last_lba;
25201b66b7SHaojian Zhuang 	unsigned long long	attr;
26201b66b7SHaojian Zhuang 	unsigned short		name[EFI_NAMELEN];
27201b66b7SHaojian Zhuang } gpt_entry_t;
28201b66b7SHaojian Zhuang 
29201b66b7SHaojian Zhuang typedef struct gpt_header {
30201b66b7SHaojian Zhuang 	unsigned char		signature[8];
31201b66b7SHaojian Zhuang 	unsigned int		revision;
32201b66b7SHaojian Zhuang 	unsigned int		size;
33201b66b7SHaojian Zhuang 	unsigned int		header_crc;
34201b66b7SHaojian Zhuang 	unsigned int		reserved;
35201b66b7SHaojian Zhuang 	unsigned long long	current_lba;
36201b66b7SHaojian Zhuang 	unsigned long long	backup_lba;
37201b66b7SHaojian Zhuang 	unsigned long long	first_lba;
38201b66b7SHaojian Zhuang 	unsigned long long	last_lba;
39201b66b7SHaojian Zhuang 	unsigned char		disk_uuid[16];
40201b66b7SHaojian Zhuang 	/* starting LBA of array of partition entries */
41201b66b7SHaojian Zhuang 	unsigned long long	part_lba;
42201b66b7SHaojian Zhuang 	/* number of partition entries in array */
43201b66b7SHaojian Zhuang 	unsigned int		list_num;
44201b66b7SHaojian Zhuang 	/* size of a single partition entry (usually 128) */
45201b66b7SHaojian Zhuang 	unsigned int		part_size;
46201b66b7SHaojian Zhuang 	unsigned int		part_crc;
47201b66b7SHaojian Zhuang } gpt_header_t;
48201b66b7SHaojian Zhuang 
49201b66b7SHaojian Zhuang int parse_gpt_entry(gpt_entry_t *gpt_entry, partition_entry_t *entry);
50201b66b7SHaojian Zhuang 
51*c3cf06f1SAntonio Nino Diaz #endif /* GPT_H */
52