]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Sample/Tools/Source/GenFvImage/GenFvImageLibInternal.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Tools / Source / GenFvImage / GenFvImageLibInternal.h
1 /*++
2
3 Copyright (c) 2004 - 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 GenFvImageLibInternal.h
15
16 Abstract:
17
18 This file contains describes the private declarations for the GenFvImage Library.
19 The basic purpose of the library is to create Firmware Volume images.
20
21 --*/
22
23 #ifndef _EFI_GEN_FV_IMAGE_LIB_INTERNAL_H
24 #define _EFI_GEN_FV_IMAGE_LIB_INTERNAL_H
25
26 //
27 // Include files
28 //
29 #include "GenFvImageLib.h"
30 #include <stdlib.h>
31 #include "EfiFirmwareVolumeHeader.h"
32
33 //
34 // Private data declarations
35 //
36 //
37 // The maximum number of block map entries supported by the library
38 //
39 #define MAX_NUMBER_OF_FV_BLOCKS 100
40
41 //
42 // The maximum number of files in the FV supported by the library
43 //
44 #define MAX_NUMBER_OF_FILES_IN_FV 1000
45 #define MAX_NUMBER_OF_COMPONENTS_IN_FV 10
46
47 //
48 // INF file strings
49 //
50 #define OPTIONS_SECTION_STRING "[options]"
51 #define ATTRIBUTES_SECTION_STRING "[attributes]"
52 #define FILES_SECTION_STRING "[files]"
53 #define COMPONENT_SECTION_STRING "[components]"
54
55 #define EFI_FV_BASE_ADDRESS_STRING "EFI_BASE_ADDRESS"
56 #define EFI_FV_FILE_NAME_STRING "EFI_FILE_NAME"
57 #define EFI_SYM_FILE_NAME_STRING "EFI_SYM_FILE_NAME"
58 #define EFI_NUM_BLOCKS_STRING "EFI_NUM_BLOCKS"
59 #define EFI_BLOCK_SIZE_STRING "EFI_BLOCK_SIZE"
60 #define EFI_FV_GUID_STRING "EFI_FV_GUID"
61
62 #define EFI_FVB_READ_DISABLED_CAP_STRING "EFI_READ_DISABLED_CAP"
63 #define EFI_FVB_READ_ENABLED_CAP_STRING "EFI_READ_ENABLED_CAP"
64 #define EFI_FVB_READ_STATUS_STRING "EFI_READ_STATUS"
65
66 #define EFI_FVB_WRITE_DISABLED_CAP_STRING "EFI_WRITE_DISABLED_CAP"
67 #define EFI_FVB_WRITE_ENABLED_CAP_STRING "EFI_WRITE_ENABLED_CAP"
68 #define EFI_FVB_WRITE_STATUS_STRING "EFI_WRITE_STATUS"
69
70 #define EFI_FVB_LOCK_CAP_STRING "EFI_LOCK_CAP"
71 #define EFI_FVB_LOCK_STATUS_STRING "EFI_LOCK_STATUS"
72
73 #define EFI_FVB_STICKY_WRITE_STRING "EFI_STICKY_WRITE"
74 #define EFI_FVB_MEMORY_MAPPED_STRING "EFI_MEMORY_MAPPED"
75 #define EFI_FVB_ERASE_POLARITY_STRING "EFI_ERASE_POLARITY"
76
77 #define EFI_FVB_ALIGNMENT_CAP_STRING "EFI_ALIGNMENT_CAP"
78 #define EFI_FVB_ALIGNMENT_2_STRING "EFI_ALIGNMENT_2"
79 #define EFI_FVB_ALIGNMENT_4_STRING "EFI_ALIGNMENT_4"
80 #define EFI_FVB_ALIGNMENT_8_STRING "EFI_ALIGNMENT_8"
81 #define EFI_FVB_ALIGNMENT_16_STRING "EFI_ALIGNMENT_16"
82 #define EFI_FVB_ALIGNMENT_32_STRING "EFI_ALIGNMENT_32"
83 #define EFI_FVB_ALIGNMENT_64_STRING "EFI_ALIGNMENT_64"
84 #define EFI_FVB_ALIGNMENT_128_STRING "EFI_ALIGNMENT_128"
85 #define EFI_FVB_ALIGNMENT_256_STRING "EFI_ALIGNMENT_256"
86 #define EFI_FVB_ALIGNMENT_512_STRING "EFI_ALIGNMENT_512"
87 #define EFI_FVB_ALIGNMENT_1K_STRING "EFI_ALIGNMENT_1K"
88 #define EFI_FVB_ALIGNMENT_2K_STRING "EFI_ALIGNMENT_2K"
89 #define EFI_FVB_ALIGNMENT_4K_STRING "EFI_ALIGNMENT_4K"
90 #define EFI_FVB_ALIGNMENT_8K_STRING "EFI_ALIGNMENT_8K"
91 #define EFI_FVB_ALIGNMENT_16K_STRING "EFI_ALIGNMENT_16K"
92 #define EFI_FVB_ALIGNMENT_32K_STRING "EFI_ALIGNMENT_32K"
93 #define EFI_FVB_ALIGNMENT_64K_STRING "EFI_ALIGNMENT_64K"
94
95 //
96 // Add these for PI1.0 new Attributes.
97 //
98 #define EFI_FVB_READ_LOCK_CAP_STRING "EFI_READ_LOCK_CAP"
99 #define EFI_FVB_READ_LOCK_STATUS_STRING "EFI_READ_LOCK_STATUS"
100 #define EFI_FVB_WRITE_LOCK_CAP_STRING "EFI_WRITE_LOCK_CAP"
101 #define EFI_FVB_WRITE_LOCK_STATUS_STRING "EFI_WRITE_LOCK_STATUS"
102 #define EFI_FVB2_ALIGNMENT_STRING "EFI_FVB2_ALIGNMENT"
103
104 #define EFI_FVB2_ALIGNMENT_1_STRING "1"
105 #define EFI_FVB2_ALIGNMENT_2_STRING "2"
106 #define EFI_FVB2_ALIGNMENT_4_STRING "4"
107 #define EFI_FVB2_ALIGNMENT_8_STRING "8"
108 #define EFI_FVB2_ALIGNMENT_16_STRING "16"
109 #define EFI_FVB2_ALIGNMENT_32_STRING "32"
110 #define EFI_FVB2_ALIGNMENT_64_STRING "64"
111 #define EFI_FVB2_ALIGNMENT_128_STRING "128"
112 #define EFI_FVB2_ALIGNMENT_256_STRING "256"
113 #define EFI_FVB2_ALIGNMENT_512_STRING "512"
114 #define EFI_FVB2_ALIGNMENT_1K_STRING "1K"
115 #define EFI_FVB2_ALIGNMENT_2K_STRING "2K"
116 #define EFI_FVB2_ALIGNMENT_4K_STRING "4K"
117 #define EFI_FVB2_ALIGNMENT_8K_STRING "8K"
118 #define EFI_FVB2_ALIGNMENT_16K_STRING "16K"
119 #define EFI_FVB2_ALIGNMENT_32K_STRING "32K"
120 #define EFI_FVB2_ALIGNMENT_64K_STRING "64K"
121 #define EFI_FVB2_ALIGNMENT_128K_STRING "128K"
122 #define EFI_FVB2_ALIGNMENT_256K_STRING "256K"
123 #define EFI_FVB2_ALIGNMENT_512K_STRING "512K"
124 #define EFI_FVB2_ALIGNMENT_1M_STRING "1M"
125 #define EFI_FVB2_ALIGNMENT_2M_STRING "2M"
126 #define EFI_FVB2_ALIGNMENT_4M_STRING "4M"
127 #define EFI_FVB2_ALIGNMENT_8M_STRING "8M"
128 #define EFI_FVB2_ALIGNMENT_16M_STRING "16M"
129 #define EFI_FVB2_ALIGNMENT_32M_STRING "32M"
130 #define EFI_FVB2_ALIGNMENT_64M_STRING "64M"
131 #define EFI_FVB2_ALIGNMENT_128M_STRING "128M"
132 #define EFI_FVB2_ALIGNMENT_256M_STRING "256M"
133 #define EFI_FVB2_ALIGNMENT_512M_STRING "512M"
134 #define EFI_FVB2_ALIGNMENT_1G_STRING "1G"
135 #define EFI_FVB2_ALIGNMENT_2G_STRING "2G"
136
137
138 //
139 // Component sections
140 //
141 #define EFI_NV_VARIABLE_STRING "EFI_NV_VARIABLE"
142 #define EFI_NV_EVENT_LOG_STRING "EFI_NV_EVENT_LOG"
143 #define EFI_NV_FTW_WORKING_STRING "EFI_NV_FTW_WORKING"
144 #define EFI_NV_FTW_SPARE_STRING "EFI_NV_FTW_SPARE"
145
146 #define EFI_FILE_NAME_STRING "EFI_FILE_NAME"
147
148 #define ONE_STRING "1"
149 #define ZERO_STRING "0"
150 #define TRUE_STRING "TRUE"
151 #define FALSE_STRING "FALSE"
152 #define NULL_STRING "NULL"
153
154 //
155 // Defines to calculate the offset for PEI CORE entry points
156 //
157 #define IA32_PEI_CORE_ENTRY_OFFSET 0x20
158
159 //
160 // Defines to calculate the FIT table
161 //
162 #define IPF_FIT_ADDRESS_OFFSET 0x20
163
164 //
165 // Defines to calculate the offset for SALE_ENTRY
166 //
167 #define IPF_SALE_ENTRY_ADDRESS_OFFSET 0x18
168
169 //
170 // Symbol file definitions, current max size if 512K
171 //
172 #define SYMBOL_FILE_SIZE 0x80000
173
174 #define FV_IMAGES_TOP_ADDRESS 0x100000000
175
176 //
177 // Private data types
178 //
179 //
180 // Component information
181 //
182 typedef struct {
183 UINTN Size;
184 CHAR8 ComponentName[_MAX_PATH];
185 } COMPONENT_INFO;
186
187 //
188 // FV information holder
189 //
190 typedef struct {
191 EFI_PHYSICAL_ADDRESS BaseAddress;
192 EFI_GUID FvGuid;
193 UINTN Size;
194 CHAR8 FvName[_MAX_PATH];
195 CHAR8 SymName[_MAX_PATH];
196 EFI_FV_BLOCK_MAP_ENTRY FvBlocks[MAX_NUMBER_OF_FV_BLOCKS];
197 EFI_FVB_ATTRIBUTES FvAttributes;
198 CHAR8 FvFiles[MAX_NUMBER_OF_FILES_IN_FV][_MAX_PATH];
199 COMPONENT_INFO FvComponents[MAX_NUMBER_OF_COMPONENTS_IN_FV];
200 } FV_INFO;
201
202 //
203 // Private function prototypes
204 //
205 EFI_STATUS
206 ParseFvInf (
207 IN MEMORY_FILE *InfFile,
208 IN FV_INFO *FvInfo
209 )
210 ;
211
212 #endif