]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/C/Include/Common/PiFirmwareVolume.h
Sync BaseTool trunk (version r2610) into EDKII BaseTools.
[mirror_edk2.git] / BaseTools / Source / C / Include / Common / PiFirmwareVolume.h
1 /** @file
2 The firmware volume related definitions in PI.
3
4 Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
5
6 This program and the accompanying materials are licensed and made available
7 under the terms and conditions of the BSD License which accompanies this
8 distribution. The full text of the license may be found at:
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 File Name: PiFirmwareVolume.h
15
16 @par Revision Reference:
17 Version 1.2C
18
19 **/
20
21 #ifndef __PI_FIRMWAREVOLUME_H__
22 #define __PI_FIRMWAREVOLUME_H__
23
24 //
25 // EFI_FV_FILE_ATTRIBUTES
26 //
27 typedef UINT32 EFI_FV_FILE_ATTRIBUTES;
28
29 //
30 // Value of EFI_FV_FILE_ATTRIBUTES.
31 //
32 #define EFI_FV_FILE_ATTRIB_ALIGNMENT 0x0000001F
33 #define EFI_FV_FILE_ATTRIB_FIXED 0x00000100
34 #define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED 0x00000200
35
36 typedef UINT32 EFI_FVB_ATTRIBUTES_2;
37
38 //
39 // Attributes bit definitions
40 //
41 #define EFI_FVB2_READ_DISABLED_CAP 0x00000001
42 #define EFI_FVB2_READ_ENABLED_CAP 0x00000002
43 #define EFI_FVB2_READ_STATUS 0x00000004
44 #define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
45 #define EFI_FVB2_WRITE_ENABLED_CAP 0x00000010
46 #define EFI_FVB2_WRITE_STATUS 0x00000020
47 #define EFI_FVB2_LOCK_CAP 0x00000040
48 #define EFI_FVB2_LOCK_STATUS 0x00000080
49 #define EFI_FVB2_STICKY_WRITE 0x00000200
50 #define EFI_FVB2_MEMORY_MAPPED 0x00000400
51 #define EFI_FVB2_ERASE_POLARITY 0x00000800
52 #define EFI_FVB2_READ_LOCK_CAP 0x00001000
53 #define EFI_FVB2_READ_LOCK_STATUS 0x00002000
54 #define EFI_FVB2_WRITE_LOCK_CAP 0x00004000
55 #define EFI_FVB2_WRITE_LOCK_STATUS 0x00008000
56 #define EFI_FVB2_ALIGNMENT 0x001F0000
57 #define EFI_FVB2_WEAK_ALIGNMENT 0x80000000
58 #define EFI_FVB2_ALIGNMENT_1 0x00000000
59 #define EFI_FVB2_ALIGNMENT_2 0x00010000
60 #define EFI_FVB2_ALIGNMENT_4 0x00020000
61 #define EFI_FVB2_ALIGNMENT_8 0x00030000
62 #define EFI_FVB2_ALIGNMENT_16 0x00040000
63 #define EFI_FVB2_ALIGNMENT_32 0x00050000
64 #define EFI_FVB2_ALIGNMENT_64 0x00060000
65 #define EFI_FVB2_ALIGNMENT_128 0x00070000
66 #define EFI_FVB2_ALIGNMENT_256 0x00080000
67 #define EFI_FVB2_ALIGNMENT_512 0x00090000
68 #define EFI_FVB2_ALIGNMENT_1K 0x000A0000
69 #define EFI_FVB2_ALIGNMENT_2K 0x000B0000
70 #define EFI_FVB2_ALIGNMENT_4K 0x000C0000
71 #define EFI_FVB2_ALIGNMENT_8K 0x000D0000
72 #define EFI_FVB2_ALIGNMENT_16K 0x000E0000
73 #define EFI_FVB2_ALIGNMENT_32K 0x000F0000
74 #define EFI_FVB2_ALIGNMENT_64K 0x00100000
75 #define EFI_FVB2_ALIGNMENT_128K 0x00110000
76 #define EFI_FVB2_ALIGNMENT_256K 0x00120000
77 #define EFI_FVB2_ALIGNMENT_512K 0x00130000
78 #define EFI_FVB2_ALIGNMENT_1M 0x00140000
79 #define EFI_FVB2_ALIGNMENT_2M 0x00150000
80 #define EFI_FVB2_ALIGNMENT_4M 0x00160000
81 #define EFI_FVB2_ALIGNMENT_8M 0x00170000
82 #define EFI_FVB2_ALIGNMENT_16M 0x00180000
83 #define EFI_FVB2_ALIGNMENT_32M 0x00190000
84 #define EFI_FVB2_ALIGNMENT_64M 0x001A0000
85 #define EFI_FVB2_ALIGNMENT_128M 0x001B0000
86 #define EFI_FVB2_ALIGNMENT_256M 0x001C0000
87 #define EFI_FVB2_ALIGNMENT_512M 0x001D0000
88 #define EFI_FVB2_ALIGNMENT_1G 0x001E0000
89 #define EFI_FVB2_ALIGNMENT_2G 0x001F0000
90
91
92 typedef struct {
93 UINT32 NumBlocks;
94 UINT32 Length;
95 } EFI_FV_BLOCK_MAP_ENTRY;
96
97 //
98 // Describes the features and layout of the firmware volume.
99 //
100 typedef struct {
101 UINT8 ZeroVector[16];
102 EFI_GUID FileSystemGuid;
103 UINT64 FvLength;
104 UINT32 Signature;
105 EFI_FVB_ATTRIBUTES_2 Attributes;
106 UINT16 HeaderLength;
107 UINT16 Checksum;
108 UINT16 ExtHeaderOffset;
109 UINT8 Reserved[1];
110 UINT8 Revision;
111 EFI_FV_BLOCK_MAP_ENTRY BlockMap[1];
112 } EFI_FIRMWARE_VOLUME_HEADER;
113
114 #define EFI_FVH_SIGNATURE EFI_SIGNATURE_32 ('_', 'F', 'V', 'H')
115
116 ///
117 /// Firmware Volume Header Revision definition
118 ///
119 #define EFI_FVH_REVISION 0x02
120
121 //
122 // Extension header pointed by ExtHeaderOffset of volume header.
123 //
124 typedef struct {
125 EFI_GUID FvName;
126 UINT32 ExtHeaderSize;
127 } EFI_FIRMWARE_VOLUME_EXT_HEADER;
128
129 typedef struct {
130 UINT16 ExtEntrySize;
131 UINT16 ExtEntryType;
132 } EFI_FIRMWARE_VOLUME_EXT_ENTRY;
133
134 #define EFI_FV_EXT_TYPE_OEM_TYPE 0x01
135 typedef struct {
136 EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
137 UINT32 TypeMask;
138
139 //
140 // Array of GUIDs.
141 // Each GUID represents an OEM file type.
142 //
143 // EFI_GUID Types[1];
144 //
145 } EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
146
147 #define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
148 typedef struct {
149 EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
150 EFI_GUID FormatType;
151
152 //
153 // An arry of bytes of length Length.
154 //
155 // UINT8 Data[1];
156 //
157 } EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
158
159 #endif