alder_lake_bios/Intel/AlderLake/AlderLakeChipsetPkg/Include/Library/FitPlatformLib.h

155 lines
5.9 KiB
C

/** @file
;******************************************************************************
;* Copyright (c) 2014, Insyde Software Corp. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
*/
#ifndef _FIT_PLATFORM_LIB_H_
#define _FIT_PLATFORM_LIB_H_
#define MEM_EQU_4GB ( 0x100000000 )
#define R_FITP ( MEM_EQU_4GB - 0x40 )
#define S_FITP ( 4 )
#define V_FIT_ENTRY_TYPE_FIT_HEADER ( 0x00 )
#define V_FIT_ENTRY_TYPE_MICROCODE_UPDATE ( 0x01 )
#define V_FIT_ENTRY_TYPE_STARTUP_AC_MODULE ( 0x02 )
#define V_FIT_ENTRY_TYPE_KEY_MANIFEST ( 0x0B )
#define V_FIT_ENTRY_TYPE_BOOT_POLICY_MANIFEST ( 0x0C )
#define V_FIT_ENTRY_TYPE_BIOS_DATA_AREA ( 0x0D )
#define V_FIT_ENTRY_TYPE_JMP_$_DEBUG_POLICY ( 0x2F )
#define V_FIT_ENTRY_TYPE_UNUSED ( 0x7F )
#define V_FIT_ENTRY_FIT_HEADER_ADDRESS ( "_FIT_ " )
#define S_FIT_ENTRY_FIT_HEADER_ADDRESS ( 8 )
#define V_FIT_ENTRY_FIT_HEADER_SIZE_GRANULARITY ( 0x10 )
#define V_FIT_ENTRY_FIT_HEADER_RESERVED ( 0 )
#define V_FIT_ENTRY_FIT_HEADER_VERSION ( 0x0100 )
#define V_FIT_ENTRY_FIT_HEADER_TYPE ( V_FIT_ENTRY_TYPE_FIT_HEADER )
#define V_FIT_ENTRY_MICROCODE_UPDATE_ADDRESS_EMPTY ( 0xFFFFFFFF )
#define B_FIT_ENTRY_MICROCODE_UPDATE_ADDRESS_EMPTY ( 0xFFFFFFFF )
#define V_FIT_ENTRY_MICROCODE_UPDATE_SIZE ( 0 )
#define V_FIT_ENTRY_MICROCODE_UPDATE_RESERVED ( 0 )
#define V_FIT_ENTRY_MICROCODE_UPDATE_VERSION ( 0x0100 )
#define V_FIT_ENTRY_MICROCODE_UPDATE_TYPE ( V_FIT_ENTRY_TYPE_MICROCODE_UPDATE )
#define V_FIT_ENTRY_MICROCODE_UPDATE_C_V ( 0 )
#define V_FIT_ENTRY_STARTUP_AC_MODULE_SIZE ( 0 )
#define V_FIT_ENTRY_STARTUP_AC_MODULE_RESERVED ( 0 )
#define V_FIT_ENTRY_STARTUP_AC_MODULE_VERSION ( 0x0100 )
#define V_FIT_ENTRY_STARTUP_AC_MODULE_TYPE ( V_FIT_ENTRY_TYPE_STARTUP_AC_MODULE )
#define V_FIT_ENTRY_STARTUP_AC_MODULE_C_V ( 0 )
//#define V_FIT_ENTRY_KEY_MANIFEST_SIZE ( sizeof ( KEY_MANIFEST ) )
#define V_FIT_ENTRY_KEY_MANIFEST_RESERVED ( 0 )
#define V_FIT_ENTRY_KEY_MANIFEST_VERSION ( 0x0100 )
#define V_FIT_ENTRY_KEY_MANIFEST_TYPE ( V_FIT_ENTRY_TYPE_KEY_MANIFEST )
#define V_FIT_ENTRY_KEY_MANIFEST_C_V ( 0 )
#define V_FIT_ENTRY_KEY_MANIFEST_CHKSUM ( 0 )
#define V_FIT_ENTRY_BOOT_POLICY_MANIFEST_RESERVED ( 0 )
#define V_FIT_ENTRY_BOOT_POLICY_MANIFEST_VERSION ( 0x0100 )
#define V_FIT_ENTRY_BOOT_POLICY_MANIFEST_TYPE ( V_FIT_ENTRY_TYPE_BOOT_POLICY_MANIFEST )
#define V_FIT_ENTRY_BOOT_POLICY_MANIFEST_C_V ( 0 )
#define V_FIT_ENTRY_BOOT_POLICY_MANIFEST_CHKSUM ( 0 )
#define V_FIT_ENTRY_BIOS_DATA_AREA_RESERVED ( 0 )
#define V_FIT_ENTRY_BIOS_DATA_AREA_VERSION ( 0x0100 )
#define V_FIT_ENTRY_BIOS_DATA_AREA_TYPE ( V_FIT_ENTRY_TYPE_BIOS_DATA_AREA )
#define V_FIT_ENTRY_BIOS_DATA_AREA_C_V ( 0 )
#define V_FIT_ENTRY_BIOS_DATA_AREA_CHKSUM ( 0 )
#define V_FIT_ENTRY_JMP_$_DEBUG_POLICY_SIZE ( 0 )
#define V_FIT_ENTRY_JMP_$_DEBUG_POLICY_RESERVED ( 0 )
#define V_FIT_ENTRY_JMP_$_DEBUG_POLICY_VERSION_INDEXED_IO ( 0 )
#define V_FIT_ENTRY_JMP_$_DEBUG_POLICY_VERSION_FLAT_MEMORY ( 1 )
#define V_FIT_ENTRY_JMP_$_DEBUG_POLICY_TYPE ( V_FIT_ENTRY_TYPE_JMP_$_DEBUG_POLICY )
#define V_FIT_ENTRY_JMP_$_DEBUG_POLICY_C_V ( 0 )
#define V_FIT_ENTRY_UNUSED_TYPE ( V_FIT_ENTRY_TYPE_UNUSED )
#pragma pack ( 1 )
typedef struct _FIT_ENTRY {
UINT64 Address;
UINT8 Size[3];
UINT8 Reserved;
UINT16 Version;
UINT8 Type : 7;
UINT8 C_V : 1;
UINT8 Chksum;
} FIT_ENTRY;
#pragma pack ()
EFI_STATUS
EFIAPI
FITPlatformLibGetFITP (
IN OUT UINTN *Address
);
EFI_STATUS
EFIAPI
FITPlatformLibValidateFITHeaderAddress (
IN FIT_ENTRY *FIT
);
EFI_STATUS
EFIAPI
FITPlatformLibValidateFITChecksum (
IN FIT_ENTRY *FIT
);
EFI_STATUS
EFIAPI
FITPlatformLibValidateFIT (
IN FIT_ENTRY *FIT
);
EFI_STATUS
EFIAPI
FITPlatformLibBIOSImageAddressTranslation (
IN VOID *Image,
IN UINTN ImageLength,
IN OUT UINTN *Address
);
EFI_STATUS
EFIAPI
FITPlatformLibGetFITEx (
IN VOID *Image,
IN UINTN ImageLength,
OUT FIT_ENTRY **FIT
);
EFI_STATUS
EFIAPI
FITPlatformLibGetFIT (
OUT FIT_ENTRY **FIT
);
EFI_STATUS
EFIAPI
FITPlatformLibGetNextEntry (
IN FIT_ENTRY *FIT,
IN UINT8 EntryType,
IN OUT FIT_ENTRY **Entry
);
EFI_STATUS
EFIAPI
FITPlatformLibGetFirstEntry (
IN FIT_ENTRY *FIT,
IN UINT8 EntryType,
OUT FIT_ENTRY **Entry
);
#endif