1 /*++ 2 3 Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR> 4 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 #define FV_CAPACITY_INCREASE_UNIT 0x100000 48 49 // 50 // INF file strings 51 // 52 #define OPTIONS_SECTION_STRING "[options]" 53 #define ATTRIBUTES_SECTION_STRING "[attributes]" 54 #define FILES_SECTION_STRING "[files]" 55 #define COMPONENT_SECTION_STRING "[components]" 56 57 #define EFI_FV_BASE_ADDRESS_STRING "EFI_BASE_ADDRESS" 58 #define EFI_FV_FILE_NAME_STRING "EFI_FILE_NAME" 59 #define EFI_SYM_FILE_NAME_STRING "EFI_SYM_FILE_NAME" 60 #define EFI_NUM_BLOCKS_STRING "EFI_NUM_BLOCKS" 61 #define EFI_BLOCK_SIZE_STRING "EFI_BLOCK_SIZE" 62 #define EFI_FV_GUID_STRING "EFI_FV_GUID" 63 64 #define EFI_FVB_READ_DISABLED_CAP_STRING "EFI_READ_DISABLED_CAP" 65 #define EFI_FVB_READ_ENABLED_CAP_STRING "EFI_READ_ENABLED_CAP" 66 #define EFI_FVB_READ_STATUS_STRING "EFI_READ_STATUS" 67 68 #define EFI_FVB_WRITE_DISABLED_CAP_STRING "EFI_WRITE_DISABLED_CAP" 69 #define EFI_FVB_WRITE_ENABLED_CAP_STRING "EFI_WRITE_ENABLED_CAP" 70 #define EFI_FVB_WRITE_STATUS_STRING "EFI_WRITE_STATUS" 71 72 #define EFI_FVB_LOCK_CAP_STRING "EFI_LOCK_CAP" 73 #define EFI_FVB_LOCK_STATUS_STRING "EFI_LOCK_STATUS" 74 75 #define EFI_FVB_STICKY_WRITE_STRING "EFI_STICKY_WRITE" 76 #define EFI_FVB_MEMORY_MAPPED_STRING "EFI_MEMORY_MAPPED" 77 #define EFI_FVB_ERASE_POLARITY_STRING "EFI_ERASE_POLARITY" 78 79 #define EFI_FVB_ALIGNMENT_CAP_STRING "EFI_ALIGNMENT_CAP" 80 #define EFI_FVB_ALIGNMENT_2_STRING "EFI_ALIGNMENT_2" 81 #define EFI_FVB_ALIGNMENT_4_STRING "EFI_ALIGNMENT_4" 82 #define EFI_FVB_ALIGNMENT_8_STRING "EFI_ALIGNMENT_8" 83 #define EFI_FVB_ALIGNMENT_16_STRING "EFI_ALIGNMENT_16" 84 #define EFI_FVB_ALIGNMENT_32_STRING "EFI_ALIGNMENT_32" 85 #define EFI_FVB_ALIGNMENT_64_STRING "EFI_ALIGNMENT_64" 86 #define EFI_FVB_ALIGNMENT_128_STRING "EFI_ALIGNMENT_128" 87 #define EFI_FVB_ALIGNMENT_256_STRING "EFI_ALIGNMENT_256" 88 #define EFI_FVB_ALIGNMENT_512_STRING "EFI_ALIGNMENT_512" 89 #define EFI_FVB_ALIGNMENT_1K_STRING "EFI_ALIGNMENT_1K" 90 #define EFI_FVB_ALIGNMENT_2K_STRING "EFI_ALIGNMENT_2K" 91 #define EFI_FVB_ALIGNMENT_4K_STRING "EFI_ALIGNMENT_4K" 92 #define EFI_FVB_ALIGNMENT_8K_STRING "EFI_ALIGNMENT_8K" 93 #define EFI_FVB_ALIGNMENT_16K_STRING "EFI_ALIGNMENT_16K" 94 #define EFI_FVB_ALIGNMENT_32K_STRING "EFI_ALIGNMENT_32K" 95 #define EFI_FVB_ALIGNMENT_64K_STRING "EFI_ALIGNMENT_64K" 96 97 // 98 // Add these for PI1.0 new Attributes. 99 // 100 #define EFI_FVB_READ_LOCK_CAP_STRING "EFI_READ_LOCK_CAP" 101 #define EFI_FVB_READ_LOCK_STATUS_STRING "EFI_READ_LOCK_STATUS" 102 #define EFI_FVB_WRITE_LOCK_CAP_STRING "EFI_WRITE_LOCK_CAP" 103 #define EFI_FVB_WRITE_LOCK_STATUS_STRING "EFI_WRITE_LOCK_STATUS" 104 #define EFI_FVB2_ALIGNMENT_STRING "EFI_FVB2_ALIGNMENT" 105 106 #define EFI_FVB2_ALIGNMENT_1_STRING "1" 107 #define EFI_FVB2_ALIGNMENT_2_STRING "2" 108 #define EFI_FVB2_ALIGNMENT_4_STRING "4" 109 #define EFI_FVB2_ALIGNMENT_8_STRING "8" 110 #define EFI_FVB2_ALIGNMENT_16_STRING "16" 111 #define EFI_FVB2_ALIGNMENT_32_STRING "32" 112 #define EFI_FVB2_ALIGNMENT_64_STRING "64" 113 #define EFI_FVB2_ALIGNMENT_128_STRING "128" 114 #define EFI_FVB2_ALIGNMENT_256_STRING "256" 115 #define EFI_FVB2_ALIGNMENT_512_STRING "512" 116 #define EFI_FVB2_ALIGNMENT_1K_STRING "1K" 117 #define EFI_FVB2_ALIGNMENT_2K_STRING "2K" 118 #define EFI_FVB2_ALIGNMENT_4K_STRING "4K" 119 #define EFI_FVB2_ALIGNMENT_8K_STRING "8K" 120 #define EFI_FVB2_ALIGNMENT_16K_STRING "16K" 121 #define EFI_FVB2_ALIGNMENT_32K_STRING "32K" 122 #define EFI_FVB2_ALIGNMENT_64K_STRING "64K" 123 #define EFI_FVB2_ALIGNMENT_128K_STRING "128K" 124 #define EFI_FVB2_ALIGNMENT_256K_STRING "256K" 125 #define EFI_FVB2_ALIGNMENT_512K_STRING "512K" 126 #define EFI_FVB2_ALIGNMENT_1M_STRING "1M" 127 #define EFI_FVB2_ALIGNMENT_2M_STRING "2M" 128 #define EFI_FVB2_ALIGNMENT_4M_STRING "4M" 129 #define EFI_FVB2_ALIGNMENT_8M_STRING "8M" 130 #define EFI_FVB2_ALIGNMENT_16M_STRING "16M" 131 #define EFI_FVB2_ALIGNMENT_32M_STRING "32M" 132 #define EFI_FVB2_ALIGNMENT_64M_STRING "64M" 133 #define EFI_FVB2_ALIGNMENT_128M_STRING "128M" 134 #define EFI_FVB2_ALIGNMENT_256M_STRING "256M" 135 #define EFI_FVB2_ALIGNMENT_512M_STRING "512M" 136 #define EFI_FVB2_ALIGNMENT_1G_STRING "1G" 137 #define EFI_FVB2_ALIGNMENT_2G_STRING "2G" 138 139 140 // 141 // Component sections 142 // 143 #define EFI_NV_VARIABLE_STRING "EFI_NV_VARIABLE" 144 #define EFI_NV_EVENT_LOG_STRING "EFI_NV_EVENT_LOG" 145 #define EFI_NV_FTW_WORKING_STRING "EFI_NV_FTW_WORKING" 146 #define EFI_NV_FTW_SPARE_STRING "EFI_NV_FTW_SPARE" 147 148 #define EFI_FILE_NAME_STRING "EFI_FILE_NAME" 149 150 #define ONE_STRING "1" 151 #define ZERO_STRING "0" 152 #define TRUE_STRING "TRUE" 153 #define FALSE_STRING "FALSE" 154 #define NULL_STRING "NULL" 155 #define AUTO_STRING "AUTO" 156 157 // 158 // Defines to calculate the offset for PEI CORE entry points 159 // 160 #define IA32_PEI_CORE_ENTRY_OFFSET 0x20 161 162 // 163 // Defines to calculate the FIT table 164 // 165 #define IPF_FIT_ADDRESS_OFFSET 0x20 166 167 // 168 // Defines to calculate the offset for SALE_ENTRY 169 // 170 #define IPF_SALE_ENTRY_ADDRESS_OFFSET 0x18 171 172 // 173 // Symbol file definitions, current max size if 512K 174 // 175 #define SYMBOL_FILE_SIZE 0x80000 176 177 #define FV_IMAGES_TOP_ADDRESS 0x100000000 178 179 // 180 // Private data types 181 // 182 // 183 // Component information 184 // 185 typedef struct { 186 UINTN Size; 187 CHAR8 ComponentName[_MAX_PATH]; 188 } COMPONENT_INFO; 189 190 // 191 // FV information holder 192 // 193 typedef struct { 194 EFI_PHYSICAL_ADDRESS BaseAddress; 195 EFI_GUID FvGuid; 196 UINTN Size; 197 CHAR8 FvName[_MAX_PATH]; 198 CHAR8 SymName[_MAX_PATH]; 199 EFI_FV_BLOCK_MAP_ENTRY FvBlocks[MAX_NUMBER_OF_FV_BLOCKS]; 200 EFI_FVB_ATTRIBUTES FvAttributes; 201 CHAR8 FvFiles[MAX_NUMBER_OF_FILES_IN_FV][_MAX_PATH]; 202 COMPONENT_INFO FvComponents[MAX_NUMBER_OF_COMPONENTS_IN_FV]; 203 } FV_INFO; 204 205 // 206 // Private function prototypes 207 // 208 EFI_STATUS 209 ParseFvInf ( 210 IN MEMORY_FILE *InfFile, 211 IN FV_INFO *FvInfo 212 ) 213 ; 214 215 #endif 216