Add Insyde Flash Device Map parser

This commit is contained in:
Nikolaj Schlej 2025-03-03 01:27:24 +07:00
parent b98edf6944
commit 58366f48fe
28 changed files with 1361 additions and 230 deletions

View file

@ -845,22 +845,83 @@ typedef struct PROTECTED_RANGE_VENDOR_HASH_FILE_HEADER_AMI_V3_
//
// AMI ROM Hole files
//
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_0; //05CA01FC-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_1; //05CA01FD-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_2; //05CA01FE-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_3; //05CA01FF-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_4; //05CA0200-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_5; //05CA0201-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_6; //05CA0202-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_7; //05CA0203-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_8; //05CA0204-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_9; //05CA0205-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_10; //05CA0206-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_11; //05CA0207-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_12; //05CA0208-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_13; //05CA0209-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_14; //05CA020A-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_15; //05CA020B-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_0; // 05CA01FC-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_1; // 05CA01FD-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_2; // 05CA01FE-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_3; // 05CA01FF-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_4; // 05CA0200-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_5; // 05CA0201-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_6; // 05CA0202-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_7; // 05CA0203-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_8; // 05CA0204-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_9; // 05CA0205-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_10; // 05CA0206-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_11; // 05CA0207-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_12; // 05CA0208-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_13; // 05CA0209-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_14; // 05CA020A-0FC1-11DC-9011-00173153EBA8
extern const UByteArray AMI_ROM_HOLE_FILE_GUID_15; // 05CA020B-0FC1-11DC-9011-00173153EBA8
//
// Insyde Flash Device Map
//
#define INSYDE_FLASH_DEVICE_MAP_SIGNATURE 0x4D444648 // HFDM
typedef struct _INSYDE_FLASH_DEVICE_MAP_HEADER {
UINT32 Signature;
UINT32 Size;
UINT32 DataOffset;
UINT32 EntrySize;
UINT8 EntryFormat;
UINT8 Revision;
UINT8 ExtensionCount;
UINT8 Checksum;
UINT64 FdBaseAddress;
//INSYDE_FLASH_DEVICE_MAP_EXTENSION Extensions[ExtensionCount];
} INSYDE_FLASH_DEVICE_MAP_HEADER;
typedef struct _INSYDE_FLASH_DEVICE_MAP_EXTENSION {
UINT16 EntryOffset;
UINT16 EntryCount;
} INSYDE_FLASH_DEVICE_MAP_EXTENSION;
typedef struct _INSYDE_FLASH_DEVICE_MAP_ENTRY {
EFI_GUID RegionTypeGuid;
UINT8 RegionId[16];
UINT64 RegionOffset;
UINT64 RegionSize;
UINT32 Attributes;
//UINT8 Hash[]; // Size depends on EntryFormat and EntrySize of the header
} INSYDE_FLASH_DEVICE_MAP_ENTRY;
typedef struct _INSYDE_FLASH_DEVICE_MAP_BOARD_ID_MAP {
UINT32 BoardIdIndex;
UINT32 BoardIdCount;
//UINT64 BoardIds[Count];
} INSYDE_FLASH_DEVICE_MAP_BOARD_ID_MAP;
#define INSYDE_FLASH_DEVICE_MAP_ENTRY_ATTRIBUTE_MODIFIABLE 0x00000001
extern const UByteArray INSYDE_FLASH_MAP_REGION_BOOT_FV_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_BVDT_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_EC_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_FTW_BACKUP_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_FTW_STATE_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_FV_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_FLASH_DEVICE_MAP_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_LOGO_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_MICROCODE_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_MSDM_TABLE_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_MULTI_CONFIG_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_VAR_DEFAULT_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_SMBIOS_UPDATE_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_VAR_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_UNKNOWN_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_UNUSED_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_USB_OPTION_ROM_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_DXE_FV_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_PEI_FV_GUID;
extern const UByteArray INSYDE_FLASH_MAP_REGION_UNSIGNED_FV_GUID;
// Restore previous packing rules
#pragma pack(pop)