1 /** @file 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 EfiFlashMap.h 15 16 Abstract: 17 18 Defines for the EFI Flash Map functionality 19 20 **/ 21 22 #ifndef _EFI_FLASHMAP_H_ 23 #define _EFI_FLASHMAP_H_ 24 25 // 26 // Definition for flash map GUIDed HOBs 27 // 28 typedef UINT32 EFI_FLASH_AREA_ATTRIBUTES; 29 30 #define EFI_FLASH_AREA_FV 0x0001 31 #define EFI_FLASH_AREA_SUBFV 0x0002 32 #define EFI_FLASH_AREA_MEMMAPPED_FV 0x0004 33 #define EFI_FLASH_AREA_REQUIRED 0x0008 34 #define EFI_FLASH_AREA_CORRUPT 0x0010 35 36 typedef UINT8 EFI_FLASH_AREA_TYPE; 37 38 #define EFI_FLASH_AREA_RECOVERY_BIOS 0x0 // Recovery code 39 #define EFI_FLASH_AREA_MAIN_BIOS 0x1 // Regular BIOS code 40 #define EFI_FLASH_AREA_PAL_B 0x2 // PAL-B 41 #define EFI_FLASH_AREA_RESERVED_03 0x3 // Reserved for backwards compatibility 42 #define EFI_FLASH_AREA_RESERVED_04 0x4 // Reserved for backwards compatibility 43 #define EFI_FLASH_AREA_DMI_FRU 0x5 // DMI FRU information 44 #define EFI_FLASH_AREA_OEM_BINARY 0x6 // OEM Binary Code/data 45 #define EFI_FLASH_AREA_RESERVED_07 0x7 // Reserved for backwards compatibility 46 #define EFI_FLASH_AREA_RESERVED_08 0x8 // Reserved for backwards compatibility 47 #define EFI_FLASH_AREA_RESERVED_09 0x9 // Reserved for backwards compatibility 48 #define EFI_FLASH_AREA_RESERVED_0A 0x0a // Reserved for backwards compatibility 49 #define EFI_FLASH_AREA_EFI_VARIABLES 0x0b // EFI variables 50 #define EFI_FLASH_AREA_MCA_LOG 0x0c // MCA error log 51 #define EFI_FLASH_AREA_SMBIOS_LOG 0x0d // SMBIOS error log 52 #define EFI_FLASH_AREA_FTW_BACKUP 0x0e // A backup block during FTW operations 53 #define EFI_FLASH_AREA_FTW_STATE 0x0f // State information during FTW operations 54 #define EFI_FLASH_AREA_UNUSED 0x0fd // Not used 55 #define EFI_FLASH_AREA_GUID_DEFINED 0x0fe // Usage defined by a GUID 56 #pragma pack(1) 57 // 58 // An individual sub-area Entry. 59 // A single flash area may consist of more than one sub-area. 60 // 61 /** 62 typedef struct { 63 EFI_FLASH_AREA_ATTRIBUTES Attributes; 64 UINT32 Reserved; 65 EFI_PHYSICAL_ADDRESS Base; 66 EFI_PHYSICAL_ADDRESS Length; 67 EFI_GUID FileSystem; 68 } EFI_FLASH_SUBAREA_ENTRY; 69 70 typedef struct { 71 UINT8 Reserved[3]; 72 EFI_FLASH_AREA_TYPE AreaType; 73 EFI_GUID AreaTypeGuid; 74 UINT32 NumEntries; 75 EFI_FLASH_SUBAREA_ENTRY Entries[1]; 76 } EFI_FLASH_MAP_ENTRY_DATA; 77 78 typedef struct { 79 UINT8 Reserved[3]; 80 EFI_FLASH_AREA_TYPE AreaType; 81 EFI_GUID AreaTypeGuid; 82 UINT32 NumberOfEntries; 83 EFI_FLASH_SUBAREA_ENTRY Entries[1]; 84 // 85 // Extended Hob data. 86 // 87 // VolumeId and FilePath indicating a unique file. 88 // 89 UINT32 VolumeId; 90 CHAR16 FilePath[256]; 91 UINT32 ActuralSize; 92 UINT32 Offset; 93 } EFI_FLASH_MAP_FS_ENTRY_DATA; 94 95 typedef struct { 96 EFI_HOB_GENERIC_HEADER Header; 97 EFI_GUID Name; 98 UINT8 Reserved[3]; 99 EFI_FLASH_AREA_TYPE AreaType; 100 EFI_GUID AreaTypeGuid; 101 UINT32 NumEntries; 102 EFI_FLASH_SUBAREA_ENTRY Entries[1]; 103 } EFI_HOB_FLASH_MAP_ENTRY_TYPE; 104 105 // 106 // Internal definitions 107 // 108 typedef struct { 109 UINT8 Reserved[3]; 110 EFI_FLASH_AREA_TYPE AreaType; 111 EFI_GUID AreaTypeGuid; 112 UINT32 NumberOfEntries; 113 EFI_FLASH_SUBAREA_ENTRY SubAreaData; 114 } EFI_FLASH_AREA_HOB_DATA; 115 116 typedef struct { 117 UINTN Base; 118 UINTN Length; 119 EFI_FLASH_AREA_ATTRIBUTES Attributes; 120 EFI_FLASH_AREA_TYPE AreaType; 121 UINT8 Reserved[3]; 122 EFI_GUID AreaTypeGuid; 123 } EFI_FLASH_AREA_DATA; 124 **/ 125 126 typedef struct { 127 EFI_FLASH_AREA_ATTRIBUTES Attributes; 128 UINT32 Reserved; 129 EFI_PHYSICAL_ADDRESS Base; 130 EFI_PHYSICAL_ADDRESS Length; 131 EFI_GUID FileSystem; 132 } EFI_FLASH_SUBAREA_ENTRY; 133 134 typedef struct { 135 UINT8 Reserved[3]; 136 EFI_FLASH_AREA_TYPE AreaType; 137 EFI_GUID AreaTypeGuid; 138 UINT32 NumberOfEntries; 139 EFI_FLASH_SUBAREA_ENTRY Entries[1]; 140 // 141 // Extended Hob data. 142 // 143 // VolumeId and FilePath indicating a unique file. 144 // 145 UINT32 VolumeId; 146 CHAR16 FilePath[258]; 147 UINT32 ActuralSize; 148 UINT32 Offset; 149 } EFI_FLASH_MAP_FS_ENTRY_DATA; 150 151 #pragma pack() 152 153 #endif // #ifndef _EFI_FLASHMAP_H_ 154