vendorcode/intel/fsp1_0/broadwell_de: Use FSP from 3rdparty/fsp
Default to FSP binary and headers shiped in 3rdparty/fsp. * Drop headers and code from vendorcode/intel/fsp1_0/broadwell_de * Select HAVE_FSP_BIN to build test the platform * Fetch FSP repo as submodule * Make FSP_HEADER_PATH known from FSP2.0 useable on FSP1.0 * Introduce FSP_SRC_PATH for FSP source file * Add sane defaults for FSP_FILE Tested on wedge100s. Change-Id: I46f201218d19cf34c43a04f57458f474d8c3340d Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/30742 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Jay Talbott <JayTalbott@sysproconsulting.com>
This commit is contained in:
parent
3ef017c4d4
commit
e77d6dc852
|
@ -198,6 +198,11 @@ forgetthis:=$(if $(GIT),$(shell git submodule update --init --checkout 3rdparty/
|
||||||
ifeq ($(CONFIG_PLATFORM_USES_FSP2_0),y)
|
ifeq ($(CONFIG_PLATFORM_USES_FSP2_0),y)
|
||||||
forgetthis:=$(if $(GIT),$(shell git submodule update --init --checkout 3rdparty/fsp))
|
forgetthis:=$(if $(GIT),$(shell git submodule update --init --checkout 3rdparty/fsp))
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CONFIG_PLATFORM_USES_FSP1_0),y)
|
||||||
|
ifeq ($(CONFIG_SOC_INTEL_FSP_BROADWELL_DE),y)
|
||||||
|
forgetthis:=$(if $(GIT),$(shell git submodule update --init --checkout 3rdparty/fsp))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
UPDATED_SUBMODULES:=1
|
UPDATED_SUBMODULES:=1
|
||||||
COREBOOT_EXPORTS += UPDATED_SUBMODULES
|
COREBOOT_EXPORTS += UPDATED_SUBMODULES
|
||||||
|
|
|
@ -45,6 +45,16 @@ config FSP_1_0_DEBUG_LEVEL
|
||||||
2: NORMAL
|
2: NORMAL
|
||||||
3: MAXIMUM
|
3: MAXIMUM
|
||||||
|
|
||||||
|
config FSP_HEADER_PATH
|
||||||
|
string "Location of FSP headers"
|
||||||
|
help
|
||||||
|
The path to headers files that are released with the FSP binary.
|
||||||
|
|
||||||
|
config FSP_SRC_PATH
|
||||||
|
string "Additional FSP source file"
|
||||||
|
help
|
||||||
|
Additional source files that are released with the FSP binary.
|
||||||
|
|
||||||
if HAVE_FSP_BIN
|
if HAVE_FSP_BIN
|
||||||
|
|
||||||
config FSP_FILE
|
config FSP_FILE
|
||||||
|
|
|
@ -47,4 +47,12 @@ mrc.cache-type := mrc_cache
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(call strip_quotes,$(CONFIG_FSP_SRC_PATH)),)
|
||||||
|
ramstage-y += $(call strip_quotes,$(CONFIG_FSP_SRC_PATH))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(call strip_quotes,$(CONFIG_FSP_HEADER_PATH)),)
|
||||||
|
CPPFLAGS_common += -I$(CONFIG_FSP_HEADER_PATH)
|
||||||
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -20,13 +20,12 @@ config CPU_SPECIFIC_OPTIONS
|
||||||
select IOAPIC
|
select IOAPIC
|
||||||
select UDELAY_TSC
|
select UDELAY_TSC
|
||||||
select SUPPORT_CPU_UCODE_IN_CBFS
|
select SUPPORT_CPU_UCODE_IN_CBFS
|
||||||
# Microcode header files are delivered in FSP package
|
|
||||||
select USES_MICROCODE_HEADER_FILES if HAVE_FSP_BIN
|
|
||||||
select INTEL_DESCRIPTOR_MODE_CAPABLE
|
select INTEL_DESCRIPTOR_MODE_CAPABLE
|
||||||
select SMM_TSEG
|
select SMM_TSEG
|
||||||
select HAVE_SMI_HANDLER
|
select HAVE_SMI_HANDLER
|
||||||
select TSC_MONOTONIC_TIMER
|
select TSC_MONOTONIC_TIMER
|
||||||
select TSC_CONSTANT_RATE
|
select TSC_CONSTANT_RATE
|
||||||
|
select HAVE_FSP_BIN
|
||||||
|
|
||||||
config VBOOT
|
config VBOOT
|
||||||
select VBOOT_STARTS_IN_ROMSTAGE
|
select VBOOT_STARTS_IN_ROMSTAGE
|
||||||
|
@ -80,10 +79,6 @@ config CONSOLE_CBMEM
|
||||||
bool "Send console output to a CBMEM buffer"
|
bool "Send console output to a CBMEM buffer"
|
||||||
default n
|
default n
|
||||||
|
|
||||||
config CPU_MICROCODE_HEADER_FILES
|
|
||||||
string
|
|
||||||
default "../intel/cpu/broadwell_de/microcode/M1050663_07000001.h ../intel/cpu/broadwell_de/microcode/M1050662_0000000A.h ../intel/cpu/broadwell_de/microcode/MFF50661_F1000008.h"
|
|
||||||
|
|
||||||
config SERIRQ_CONTINUOUS_MODE
|
config SERIRQ_CONTINUOUS_MODE
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
|
|
@ -6,10 +6,18 @@ config BROADWELL_DE_FSP_SPECIFIC_OPTIONS
|
||||||
|
|
||||||
config FSP_FILE
|
config FSP_FILE
|
||||||
string
|
string
|
||||||
default "../intel/fsp/broadwell_de/BROADWELLDE_FSP.bin"
|
default "3rdparty/fsp/BroadwellDEFspBinPkg/FspBin/BROADWELLDE_FSP.bin"
|
||||||
help
|
help
|
||||||
The path and filename of the Intel FSP binary for this platform.
|
The path and filename of the Intel FSP binary for this platform.
|
||||||
|
|
||||||
|
config FSP_HEADER_PATH
|
||||||
|
string
|
||||||
|
default "$(top)/3rdparty/fsp/BroadwellDEFspBinPkg/include/"
|
||||||
|
|
||||||
|
config FSP_SRC_PATH
|
||||||
|
string
|
||||||
|
default "$(top)/3rdparty/fsp/BroadwellDEFspBinPkg/include/fspsupport.c"
|
||||||
|
|
||||||
config FSP_LOC
|
config FSP_LOC
|
||||||
hex
|
hex
|
||||||
default 0xffeb0000
|
default 0xffeb0000
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
config FSP_VENDORCODE_HEADER_PATH
|
config FSP_VENDORCODE_HEADER_PATH
|
||||||
string
|
string
|
||||||
default "fsp1_0/baytrail" if SOC_INTEL_FSP_BAYTRAIL
|
default "fsp1_0/baytrail" if SOC_INTEL_FSP_BAYTRAIL
|
||||||
default "fsp1_0/broadwell_de" if SOC_INTEL_FSP_BROADWELL_DE
|
|
||||||
default "fsp1_0/rangeley" if CPU_INTEL_FSP_MODEL_406DX
|
default "fsp1_0/rangeley" if CPU_INTEL_FSP_MODEL_406DX
|
||||||
|
|
||||||
config UEFI_2_4_BINDING
|
config UEFI_2_4_BINDING
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013, Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_H__
|
|
||||||
#define __FSP_H__
|
|
||||||
|
|
||||||
#include "fsptypes.h"
|
|
||||||
#include "fspfv.h"
|
|
||||||
#include "fspffs.h"
|
|
||||||
#include "fspapi.h"
|
|
||||||
#include "fsphob.h"
|
|
||||||
#include "fspplatform.h"
|
|
||||||
#include "fspinfoheader.h"
|
|
||||||
#include "fspbootmode.h"
|
|
||||||
#include "fspvpd.h"
|
|
||||||
#include "fspsupport.h"
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,107 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013, Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_API_H__
|
|
||||||
#define __FSP_API_H__
|
|
||||||
|
|
||||||
///
|
|
||||||
/// FSP Init continuation function prototype.
|
|
||||||
/// Control will be returned to this callback function after FspInit API call.
|
|
||||||
///
|
|
||||||
typedef VOID (FSPAPI *CONTINUATION_PROC) (EFI_STATUS Status, VOID *HobListPtr);
|
|
||||||
|
|
||||||
#pragma pack(1)
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Non-volatile storage buffer pointer.
|
|
||||||
///
|
|
||||||
VOID *NvsBufferPtr;
|
|
||||||
///
|
|
||||||
/// Runtime buffer pointer
|
|
||||||
///
|
|
||||||
VOID *RtBufferPtr;
|
|
||||||
///
|
|
||||||
/// Continuation function address
|
|
||||||
///
|
|
||||||
CONTINUATION_PROC ContinuationFunc;
|
|
||||||
} FSP_INIT_PARAMS;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Stack top pointer used by the bootloader.
|
|
||||||
/// The new stack frame will be set up at this location after FspInit API call.
|
|
||||||
///
|
|
||||||
UINT32 *StackTop;
|
|
||||||
///
|
|
||||||
/// Current system boot mode.
|
|
||||||
///
|
|
||||||
UINT32 BootMode;
|
|
||||||
///
|
|
||||||
/// User platform configuraiton data region pointer.
|
|
||||||
///
|
|
||||||
VOID *UpdDataRgnPtr;
|
|
||||||
///
|
|
||||||
/// Reserved
|
|
||||||
///
|
|
||||||
UINT32 Reserved[7];
|
|
||||||
} FSP_INIT_RT_COMMON_BUFFER;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
///
|
|
||||||
/// Notification code for post PCI enuermation
|
|
||||||
///
|
|
||||||
EnumInitPhaseAfterPciEnumeration = 0x20,
|
|
||||||
///
|
|
||||||
/// Notification code before transfering control to the payload
|
|
||||||
///
|
|
||||||
EnumInitPhaseReadyToBoot = 0x40
|
|
||||||
} FSP_INIT_PHASE;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Notification phase used for NotifyPhase API
|
|
||||||
///
|
|
||||||
FSP_INIT_PHASE Phase;
|
|
||||||
} NOTIFY_PHASE_PARAMS;
|
|
||||||
|
|
||||||
#pragma pack()
|
|
||||||
|
|
||||||
///
|
|
||||||
/// FspInit API function prototype
|
|
||||||
///
|
|
||||||
typedef FSP_STATUS (FSPAPI *FSP_FSP_INIT) (FSP_INIT_PARAMS *FspInitParamPtr);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// NotifyPhase API function prototype
|
|
||||||
///
|
|
||||||
typedef FSP_STATUS (FSPAPI *FSP_NOTFY_PHASE) (NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,45 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013, Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_BOOTMODE_H__
|
|
||||||
#define __FSP_BOOTMODE_H__
|
|
||||||
|
|
||||||
///
|
|
||||||
/// EFI boot mode
|
|
||||||
///
|
|
||||||
typedef UINT32 EFI_BOOT_MODE;
|
|
||||||
|
|
||||||
//
|
|
||||||
// 0x21 - 0xf..f are reserved.
|
|
||||||
//
|
|
||||||
#define BOOT_WITH_FULL_CONFIGURATION 0x00
|
|
||||||
#define BOOT_ON_S3_RESUME 0x11
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,506 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013, Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_FFS_H__
|
|
||||||
#define __FSP_FFS_H__
|
|
||||||
|
|
||||||
#pragma pack(1)
|
|
||||||
///
|
|
||||||
/// Used to verify the integrity of the file.
|
|
||||||
///
|
|
||||||
typedef union {
|
|
||||||
struct {
|
|
||||||
///
|
|
||||||
/// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
|
|
||||||
/// header. The State and IntegrityCheck.Checksum.File fields are assumed
|
|
||||||
/// to be zero and the checksum is calculated such that the entire header sums to zero.
|
|
||||||
///
|
|
||||||
UINT8 Header;
|
|
||||||
///
|
|
||||||
/// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
|
|
||||||
/// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
|
|
||||||
/// checksum of the file data.
|
|
||||||
/// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
|
|
||||||
/// the IntegrityCheck.Checksum.File field must be initialized with a value of
|
|
||||||
/// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
|
|
||||||
/// EFI_FILE_DATA_VALID bit is set in the State field.
|
|
||||||
///
|
|
||||||
UINT8 File;
|
|
||||||
} Checksum;
|
|
||||||
///
|
|
||||||
/// This is the full 16 bits of the IntegrityCheck field.
|
|
||||||
///
|
|
||||||
UINT16 Checksum16;
|
|
||||||
} EFI_FFS_INTEGRITY_CHECK;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// FFS_FIXED_CHECKSUM is the checksum value used when the
|
|
||||||
/// FFS_ATTRIB_CHECKSUM attribute bit is clear.
|
|
||||||
///
|
|
||||||
#define FFS_FIXED_CHECKSUM 0xAA
|
|
||||||
|
|
||||||
typedef UINT8 EFI_FV_FILETYPE;
|
|
||||||
typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
|
|
||||||
typedef UINT8 EFI_FFS_FILE_STATE;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// File Types Definitions
|
|
||||||
///
|
|
||||||
#define EFI_FV_FILETYPE_ALL 0x00
|
|
||||||
#define EFI_FV_FILETYPE_RAW 0x01
|
|
||||||
#define EFI_FV_FILETYPE_FREEFORM 0x02
|
|
||||||
#define EFI_FV_FILETYPE_SECURITY_CORE 0x03
|
|
||||||
#define EFI_FV_FILETYPE_PEI_CORE 0x04
|
|
||||||
#define EFI_FV_FILETYPE_DXE_CORE 0x05
|
|
||||||
#define EFI_FV_FILETYPE_PEIM 0x06
|
|
||||||
#define EFI_FV_FILETYPE_DRIVER 0x07
|
|
||||||
#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER 0x08
|
|
||||||
#define EFI_FV_FILETYPE_APPLICATION 0x09
|
|
||||||
#define EFI_FV_FILETYPE_SMM 0x0A
|
|
||||||
#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
|
|
||||||
#define EFI_FV_FILETYPE_COMBINED_SMM_DXE 0x0C
|
|
||||||
#define EFI_FV_FILETYPE_SMM_CORE 0x0D
|
|
||||||
#define EFI_FV_FILETYPE_OEM_MIN 0xc0
|
|
||||||
#define EFI_FV_FILETYPE_OEM_MAX 0xdf
|
|
||||||
#define EFI_FV_FILETYPE_DEBUG_MIN 0xe0
|
|
||||||
#define EFI_FV_FILETYPE_DEBUG_MAX 0xef
|
|
||||||
#define EFI_FV_FILETYPE_FFS_MIN 0xf0
|
|
||||||
#define EFI_FV_FILETYPE_FFS_MAX 0xff
|
|
||||||
#define EFI_FV_FILETYPE_FFS_PAD 0xf0
|
|
||||||
|
|
||||||
///
|
|
||||||
/// FFS File Attributes.
|
|
||||||
///
|
|
||||||
#define FFS_ATTRIB_LARGE_FILE 0x01
|
|
||||||
#define FFS_ATTRIB_FIXED 0x04
|
|
||||||
#define FFS_ATTRIB_DATA_ALIGNMENT 0x38
|
|
||||||
#define FFS_ATTRIB_CHECKSUM 0x40
|
|
||||||
|
|
||||||
///
|
|
||||||
/// FFS File State Bits.
|
|
||||||
///
|
|
||||||
#define EFI_FILE_HEADER_CONSTRUCTION 0x01
|
|
||||||
#define EFI_FILE_HEADER_VALID 0x02
|
|
||||||
#define EFI_FILE_DATA_VALID 0x04
|
|
||||||
#define EFI_FILE_MARKED_FOR_UPDATE 0x08
|
|
||||||
#define EFI_FILE_DELETED 0x10
|
|
||||||
#define EFI_FILE_HEADER_INVALID 0x20
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Each file begins with the header that describe the
|
|
||||||
/// contents and state of the files.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// This GUID is the file name. It is used to uniquely identify the file.
|
|
||||||
///
|
|
||||||
EFI_GUID Name;
|
|
||||||
///
|
|
||||||
/// Used to verify the integrity of the file.
|
|
||||||
///
|
|
||||||
EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
|
|
||||||
///
|
|
||||||
/// Identifies the type of file.
|
|
||||||
///
|
|
||||||
EFI_FV_FILETYPE Type;
|
|
||||||
///
|
|
||||||
/// Declares various file attribute bits.
|
|
||||||
///
|
|
||||||
EFI_FFS_FILE_ATTRIBUTES Attributes;
|
|
||||||
///
|
|
||||||
/// The length of the file in bytes, including the FFS header.
|
|
||||||
///
|
|
||||||
UINT8 Size[3];
|
|
||||||
///
|
|
||||||
/// Used to track the state of the file throughout the life of the file from creation to deletion.
|
|
||||||
///
|
|
||||||
EFI_FFS_FILE_STATE State;
|
|
||||||
} EFI_FFS_FILE_HEADER;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// This GUID is the file name. It is used to uniquely identify the file. There may be only
|
|
||||||
/// one instance of a file with the file name GUID of Name in any given firmware
|
|
||||||
/// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
|
|
||||||
///
|
|
||||||
EFI_GUID Name;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Used to verify the integrity of the file.
|
|
||||||
///
|
|
||||||
EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Identifies the type of file.
|
|
||||||
///
|
|
||||||
EFI_FV_FILETYPE Type;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Declares various file attribute bits.
|
|
||||||
///
|
|
||||||
EFI_FFS_FILE_ATTRIBUTES Attributes;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The length of the file in bytes, including the FFS header.
|
|
||||||
/// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a
|
|
||||||
/// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER).
|
|
||||||
/// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
|
|
||||||
/// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
|
|
||||||
///
|
|
||||||
UINT8 Size[3];
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Used to track the state of the file throughout the life of the file from creation to deletion.
|
|
||||||
///
|
|
||||||
EFI_FFS_FILE_STATE State;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
|
|
||||||
/// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
|
|
||||||
///
|
|
||||||
UINT32 ExtendedSize;
|
|
||||||
} EFI_FFS_FILE_HEADER2;
|
|
||||||
|
|
||||||
#define IS_FFS_FILE2(FfsFileHeaderPtr) \
|
|
||||||
(((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
|
|
||||||
|
|
||||||
#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
|
|
||||||
((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
|
|
||||||
|
|
||||||
#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
|
|
||||||
(((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)
|
|
||||||
|
|
||||||
typedef UINT8 EFI_SECTION_TYPE;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Pseudo type. It is used as a wild card when retrieving sections.
|
|
||||||
/// The section type EFI_SECTION_ALL matches all section types.
|
|
||||||
///
|
|
||||||
#define EFI_SECTION_ALL 0x00
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Encapsulation section Type values.
|
|
||||||
///
|
|
||||||
#define EFI_SECTION_COMPRESSION 0x01
|
|
||||||
|
|
||||||
#define EFI_SECTION_GUID_DEFINED 0x02
|
|
||||||
|
|
||||||
#define EFI_SECTION_DISPOSABLE 0x03
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Leaf section Type values.
|
|
||||||
///
|
|
||||||
#define EFI_SECTION_PE32 0x10
|
|
||||||
#define EFI_SECTION_PIC 0x11
|
|
||||||
#define EFI_SECTION_TE 0x12
|
|
||||||
#define EFI_SECTION_DXE_DEPEX 0x13
|
|
||||||
#define EFI_SECTION_VERSION 0x14
|
|
||||||
#define EFI_SECTION_USER_INTERFACE 0x15
|
|
||||||
#define EFI_SECTION_COMPATIBILITY16 0x16
|
|
||||||
#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
|
|
||||||
#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
|
|
||||||
#define EFI_SECTION_RAW 0x19
|
|
||||||
#define EFI_SECTION_PEI_DEPEX 0x1B
|
|
||||||
#define EFI_SECTION_SMM_DEPEX 0x1C
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Common section header.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// A 24-bit unsigned integer that contains the total size of the section in bytes,
|
|
||||||
/// including the EFI_COMMON_SECTION_HEADER.
|
|
||||||
///
|
|
||||||
UINT8 Size[3];
|
|
||||||
EFI_SECTION_TYPE Type;
|
|
||||||
///
|
|
||||||
/// Declares the section type.
|
|
||||||
///
|
|
||||||
} EFI_COMMON_SECTION_HEADER;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// A 24-bit unsigned integer that contains the total size of the section in bytes,
|
|
||||||
/// including the EFI_COMMON_SECTION_HEADER.
|
|
||||||
///
|
|
||||||
UINT8 Size[3];
|
|
||||||
|
|
||||||
EFI_SECTION_TYPE Type;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
|
|
||||||
/// Size is not equal to 0xFFFFFF, then this field does not exist.
|
|
||||||
///
|
|
||||||
UINT32 ExtendedSize;
|
|
||||||
} EFI_COMMON_SECTION_HEADER2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Leaf section type that contains an
|
|
||||||
/// IA-32 16-bit executable image.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// CompressionType of EFI_COMPRESSION_SECTION.
|
|
||||||
///
|
|
||||||
#define EFI_NOT_COMPRESSED 0x00
|
|
||||||
#define EFI_STANDARD_COMPRESSION 0x01
|
|
||||||
///
|
|
||||||
/// An encapsulation section type in which the
|
|
||||||
/// section data is compressed.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
|
|
||||||
///
|
|
||||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
|
||||||
///
|
|
||||||
/// The UINT32 that indicates the size of the section data after decompression.
|
|
||||||
///
|
|
||||||
UINT32 UncompressedLength;
|
|
||||||
///
|
|
||||||
/// Indicates which compression algorithm is used.
|
|
||||||
///
|
|
||||||
UINT8 CompressionType;
|
|
||||||
} EFI_COMPRESSION_SECTION;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
|
|
||||||
///
|
|
||||||
EFI_COMMON_SECTION_HEADER2 CommonHeader;
|
|
||||||
///
|
|
||||||
/// UINT32 that indicates the size of the section data after decompression.
|
|
||||||
///
|
|
||||||
UINT32 UncompressedLength;
|
|
||||||
///
|
|
||||||
/// Indicates which compression algorithm is used.
|
|
||||||
///
|
|
||||||
UINT8 CompressionType;
|
|
||||||
} EFI_COMPRESSION_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// An encapsulation section type in which the section data is disposable.
|
|
||||||
/// A disposable section is an encapsulation section in which the section data may be disposed of during
|
|
||||||
/// the process of creating or updating a firmware image without significant impact on the usefulness of
|
|
||||||
/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This
|
|
||||||
/// allows optional or descriptive data to be included with the firmware file which can be removed in
|
|
||||||
/// order to conserve space. The contents of this section are implementation specific, but might contain
|
|
||||||
/// debug data or detailed integration instructions.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_DISPOSABLE_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_DISPOSABLE_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The leaf section which could be used to determine the dispatch order of DXEs.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_DXE_DEPEX_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_DXE_DEPEX_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The leaf section which contains a PI FV.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The leaf section which contains a single GUID.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
|
|
||||||
///
|
|
||||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
|
||||||
///
|
|
||||||
/// This GUID is defined by the creator of the file. It is a vendor-defined file type.
|
|
||||||
///
|
|
||||||
EFI_GUID SubTypeGuid;
|
|
||||||
} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
|
|
||||||
///
|
|
||||||
EFI_COMMON_SECTION_HEADER2 CommonHeader;
|
|
||||||
///
|
|
||||||
/// This GUID is defined by the creator of the file. It is a vendor-defined file type.
|
|
||||||
///
|
|
||||||
EFI_GUID SubTypeGuid;
|
|
||||||
} EFI_FREEFORM_SUBTYPE_GUID_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Attributes of EFI_GUID_DEFINED_SECTION.
|
|
||||||
///
|
|
||||||
#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED 0x01
|
|
||||||
#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID 0x02
|
|
||||||
///
|
|
||||||
/// The leaf section which is encapsulation defined by specific GUID.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
|
|
||||||
///
|
|
||||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
|
||||||
///
|
|
||||||
/// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
|
|
||||||
///
|
|
||||||
EFI_GUID SectionDefinitionGuid;
|
|
||||||
///
|
|
||||||
/// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
|
|
||||||
///
|
|
||||||
UINT16 DataOffset;
|
|
||||||
///
|
|
||||||
/// The bit field that declares some specific characteristics of the section contents.
|
|
||||||
///
|
|
||||||
UINT16 Attributes;
|
|
||||||
} EFI_GUID_DEFINED_SECTION;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
|
|
||||||
///
|
|
||||||
EFI_COMMON_SECTION_HEADER2 CommonHeader;
|
|
||||||
///
|
|
||||||
/// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
|
|
||||||
///
|
|
||||||
EFI_GUID SectionDefinitionGuid;
|
|
||||||
///
|
|
||||||
/// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
|
|
||||||
///
|
|
||||||
UINT16 DataOffset;
|
|
||||||
///
|
|
||||||
/// The bit field that declares some specific characteristics of the section contents.
|
|
||||||
///
|
|
||||||
UINT16 Attributes;
|
|
||||||
} EFI_GUID_DEFINED_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The leaf section which contains PE32+ image.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_PE32_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_PE32_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The leaf section used to determine the dispatch order of PEIMs.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_PEI_DEPEX_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_PEI_DEPEX_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// A leaf section type that contains a position-independent-code (PIC) image.
|
|
||||||
/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image.
|
|
||||||
/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be
|
|
||||||
/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all
|
|
||||||
/// relocation information has been stripped from the image and the image can be moved and will
|
|
||||||
/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
|
|
||||||
/// be used if the section is 16MB or larger.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_PIC_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_PIC_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The leaf section which constains the position-independent-code image.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_TE_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_TE_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The leaf section which contains an array of zero or more bytes.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_RAW_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_RAW_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The SMM dependency expression section is a leaf section that contains a dependency expression that
|
|
||||||
/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the
|
|
||||||
/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform
|
|
||||||
/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression.
|
|
||||||
/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
|
|
||||||
/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
|
|
||||||
///
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
|
|
||||||
typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The leaf section which contains a unicode string that
|
|
||||||
/// is human readable file name.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Array of unicode string.
|
|
||||||
///
|
|
||||||
CHAR16 FileNameString[1];
|
|
||||||
} EFI_USER_INTERFACE_SECTION;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
EFI_COMMON_SECTION_HEADER2 CommonHeader;
|
|
||||||
CHAR16 FileNameString[1];
|
|
||||||
} EFI_USER_INTERFACE_SECTION2;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The leaf section which contains a numeric build number and
|
|
||||||
/// an optional unicode string that represents the file revision.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
EFI_COMMON_SECTION_HEADER CommonHeader;
|
|
||||||
UINT16 BuildNumber;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Array of unicode string.
|
|
||||||
///
|
|
||||||
CHAR16 VersionString[1];
|
|
||||||
} EFI_VERSION_SECTION;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
EFI_COMMON_SECTION_HEADER2 CommonHeader;
|
|
||||||
///
|
|
||||||
/// A UINT16 that represents a particular build. Subsequent builds have monotonically
|
|
||||||
/// increasing build numbers relative to earlier builds.
|
|
||||||
///
|
|
||||||
UINT16 BuildNumber;
|
|
||||||
CHAR16 VersionString[1];
|
|
||||||
} EFI_VERSION_SECTION2;
|
|
||||||
|
|
||||||
#define IS_SECTION2(SectionHeaderPtr) \
|
|
||||||
((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
|
|
||||||
|
|
||||||
#define SECTION_SIZE(SectionHeaderPtr) \
|
|
||||||
((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
|
|
||||||
|
|
||||||
#define SECTION2_SIZE(SectionHeaderPtr) \
|
|
||||||
(((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
|
|
||||||
|
|
||||||
#pragma pack()
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,247 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013, Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_FV___
|
|
||||||
#define __FSP_FV___
|
|
||||||
|
|
||||||
///
|
|
||||||
/// EFI_FV_FILE_ATTRIBUTES
|
|
||||||
///
|
|
||||||
typedef UINT32 EFI_FV_FILE_ATTRIBUTES;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Value of EFI_FV_FILE_ATTRIBUTES.
|
|
||||||
//
|
|
||||||
#define EFI_FV_FILE_ATTRIB_ALIGNMENT 0x0000001F
|
|
||||||
#define EFI_FV_FILE_ATTRIB_FIXED 0x00000100
|
|
||||||
#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED 0x00000200
|
|
||||||
|
|
||||||
///
|
|
||||||
/// type of EFI FVB attribute
|
|
||||||
///
|
|
||||||
typedef UINT32 EFI_FVB_ATTRIBUTES_2;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Attributes bit definitions
|
|
||||||
//
|
|
||||||
#define EFI_FVB2_READ_DISABLED_CAP 0x00000001
|
|
||||||
#define EFI_FVB2_READ_ENABLED_CAP 0x00000002
|
|
||||||
#define EFI_FVB2_READ_STATUS 0x00000004
|
|
||||||
#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
|
|
||||||
#define EFI_FVB2_WRITE_ENABLED_CAP 0x00000010
|
|
||||||
#define EFI_FVB2_WRITE_STATUS 0x00000020
|
|
||||||
#define EFI_FVB2_LOCK_CAP 0x00000040
|
|
||||||
#define EFI_FVB2_LOCK_STATUS 0x00000080
|
|
||||||
#define EFI_FVB2_STICKY_WRITE 0x00000200
|
|
||||||
#define EFI_FVB2_MEMORY_MAPPED 0x00000400
|
|
||||||
#define EFI_FVB2_ERASE_POLARITY 0x00000800
|
|
||||||
#define EFI_FVB2_READ_LOCK_CAP 0x00001000
|
|
||||||
#define EFI_FVB2_READ_LOCK_STATUS 0x00002000
|
|
||||||
#define EFI_FVB2_WRITE_LOCK_CAP 0x00004000
|
|
||||||
#define EFI_FVB2_WRITE_LOCK_STATUS 0x00008000
|
|
||||||
#define EFI_FVB2_ALIGNMENT 0x001F0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_1 0x00000000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_2 0x00010000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_4 0x00020000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_8 0x00030000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_16 0x00040000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_32 0x00050000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_64 0x00060000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_128 0x00070000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_256 0x00080000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_512 0x00090000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_1K 0x000A0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_2K 0x000B0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_4K 0x000C0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_8K 0x000D0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_16K 0x000E0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_32K 0x000F0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_64K 0x00100000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_128K 0x00110000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_256K 0x00120000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_512K 0x00130000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_1M 0x00140000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_2M 0x00150000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_4M 0x00160000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_8M 0x00170000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_16M 0x00180000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_32M 0x00190000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_64M 0x001A0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_128M 0x001B0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_256M 0x001C0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_512M 0x001D0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_1G 0x001E0000
|
|
||||||
#define EFI_FVB2_ALIGNMENT_2G 0x001F0000
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// The number of sequential blocks which are of the same size.
|
|
||||||
///
|
|
||||||
UINT32 NumBlocks;
|
|
||||||
///
|
|
||||||
/// The size of the blocks.
|
|
||||||
///
|
|
||||||
UINT32 Length;
|
|
||||||
} EFI_FV_BLOCK_MAP_ENTRY;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Describes the features and layout of the firmware volume.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// The first 16 bytes are reserved to allow for the reset vector of
|
|
||||||
/// processors whose reset vector is at address 0.
|
|
||||||
///
|
|
||||||
UINT8 ZeroVector[16];
|
|
||||||
///
|
|
||||||
/// Declares the file system with which the firmware volume is formatted.
|
|
||||||
///
|
|
||||||
EFI_GUID FileSystemGuid;
|
|
||||||
///
|
|
||||||
/// Length in bytes of the complete firmware volume, including the header.
|
|
||||||
///
|
|
||||||
UINT64 FvLength;
|
|
||||||
///
|
|
||||||
/// Set to EFI_FVH_SIGNATURE
|
|
||||||
///
|
|
||||||
UINT32 Signature;
|
|
||||||
///
|
|
||||||
/// Declares capabilities and power-on defaults for the firmware volume.
|
|
||||||
///
|
|
||||||
EFI_FVB_ATTRIBUTES_2 Attributes;
|
|
||||||
///
|
|
||||||
/// Length in bytes of the complete firmware volume header.
|
|
||||||
///
|
|
||||||
UINT16 HeaderLength;
|
|
||||||
///
|
|
||||||
/// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
|
|
||||||
///
|
|
||||||
UINT16 Checksum;
|
|
||||||
///
|
|
||||||
/// Offset, relative to the start of the header, of the extended header
|
|
||||||
/// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
|
|
||||||
///
|
|
||||||
UINT16 ExtHeaderOffset;
|
|
||||||
///
|
|
||||||
/// This field must always be set to zero.
|
|
||||||
///
|
|
||||||
UINT8 Reserved[1];
|
|
||||||
///
|
|
||||||
/// Set to 2. Future versions of this specification may define new header fields and will
|
|
||||||
/// increment the Revision field accordingly.
|
|
||||||
///
|
|
||||||
UINT8 Revision;
|
|
||||||
///
|
|
||||||
/// An array of run-length encoded FvBlockMapEntry structures. The array is
|
|
||||||
/// terminated with an entry of {0,0}.
|
|
||||||
///
|
|
||||||
EFI_FV_BLOCK_MAP_ENTRY BlockMap[1];
|
|
||||||
} EFI_FIRMWARE_VOLUME_HEADER;
|
|
||||||
|
|
||||||
#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Firmware Volume Header Revision definition
|
|
||||||
///
|
|
||||||
#define EFI_FVH_REVISION 0x02
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Extension header pointed by ExtHeaderOffset of volume header.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Firmware volume name.
|
|
||||||
///
|
|
||||||
EFI_GUID FvName;
|
|
||||||
///
|
|
||||||
/// Size of the rest of the extension header, including this structure.
|
|
||||||
///
|
|
||||||
UINT32 ExtHeaderSize;
|
|
||||||
} EFI_FIRMWARE_VOLUME_EXT_HEADER;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Entry struture for describing FV extension header
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Size of this header extension.
|
|
||||||
///
|
|
||||||
UINT16 ExtEntrySize;
|
|
||||||
///
|
|
||||||
/// Type of the header.
|
|
||||||
///
|
|
||||||
UINT16 ExtEntryType;
|
|
||||||
} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
|
|
||||||
|
|
||||||
#define EFI_FV_EXT_TYPE_OEM_TYPE 0x01
|
|
||||||
///
|
|
||||||
/// This extension header provides a mapping between a GUID and an OEM file type.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
|
|
||||||
///
|
|
||||||
EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
|
|
||||||
///
|
|
||||||
/// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
|
|
||||||
/// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
|
|
||||||
///
|
|
||||||
UINT32 TypeMask;
|
|
||||||
///
|
|
||||||
/// An array of GUIDs, each GUID representing an OEM file type.
|
|
||||||
///
|
|
||||||
/// EFI_GUID Types[1];
|
|
||||||
///
|
|
||||||
} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
|
|
||||||
|
|
||||||
#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
|
|
||||||
|
|
||||||
///
|
|
||||||
/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
|
|
||||||
/// GUID FormatType type which includes a length and a successive series of data bytes.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
|
|
||||||
///
|
|
||||||
EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
|
|
||||||
///
|
|
||||||
/// Vendor-specific GUID.
|
|
||||||
///
|
|
||||||
EFI_GUID FormatType;
|
|
||||||
///
|
|
||||||
/// An arry of bytes of length Length.
|
|
||||||
///
|
|
||||||
/// UINT8 Data[1];
|
|
||||||
///
|
|
||||||
} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,427 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013, Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_HOB_H__
|
|
||||||
#define __FSP_HOB_H__
|
|
||||||
|
|
||||||
//
|
|
||||||
// HobType of EFI_HOB_GENERIC_HEADER.
|
|
||||||
//
|
|
||||||
#define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002
|
|
||||||
#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 0x0003
|
|
||||||
#define EFI_HOB_TYPE_GUID_EXTENSION 0x0004
|
|
||||||
#define EFI_HOB_TYPE_UNUSED 0xFFFE
|
|
||||||
#define EFI_HOB_TYPE_END_OF_HOB_LIST 0xFFFF
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Describes the format and size of the data inside the HOB.
|
|
||||||
/// All HOBs must contain this generic HOB header.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Identifies the HOB data structure type.
|
|
||||||
///
|
|
||||||
UINT16 HobType;
|
|
||||||
///
|
|
||||||
/// The length in bytes of the HOB.
|
|
||||||
///
|
|
||||||
UINT16 HobLength;
|
|
||||||
///
|
|
||||||
/// This field must always be set to zero.
|
|
||||||
///
|
|
||||||
UINT32 Reserved;
|
|
||||||
} EFI_HOB_GENERIC_HEADER;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Enumeration of memory types introduced in UEFI.
|
|
||||||
///
|
|
||||||
typedef enum {
|
|
||||||
///
|
|
||||||
/// Not used.
|
|
||||||
///
|
|
||||||
EfiReservedMemoryType,
|
|
||||||
///
|
|
||||||
/// The code portions of a loaded application.
|
|
||||||
/// (Note that UEFI OS loaders are UEFI applications.)
|
|
||||||
///
|
|
||||||
EfiLoaderCode,
|
|
||||||
///
|
|
||||||
/// The data portions of a loaded application and the default data allocation
|
|
||||||
/// type used by an application to allocate pool memory.
|
|
||||||
///
|
|
||||||
EfiLoaderData,
|
|
||||||
///
|
|
||||||
/// The code portions of a loaded Boot Services Driver.
|
|
||||||
///
|
|
||||||
EfiBootServicesCode,
|
|
||||||
///
|
|
||||||
/// The data portions of a loaded Boot Serves Driver, and the default data
|
|
||||||
/// allocation type used by a Boot Services Driver to allocate pool memory.
|
|
||||||
///
|
|
||||||
EfiBootServicesData,
|
|
||||||
///
|
|
||||||
/// The code portions of a loaded Runtime Services Driver.
|
|
||||||
///
|
|
||||||
EfiRuntimeServicesCode,
|
|
||||||
///
|
|
||||||
/// The data portions of a loaded Runtime Services Driver and the default
|
|
||||||
/// data allocation type used by a Runtime Services Driver to allocate pool memory.
|
|
||||||
///
|
|
||||||
EfiRuntimeServicesData,
|
|
||||||
///
|
|
||||||
/// Free (unallocated) memory.
|
|
||||||
///
|
|
||||||
EfiConventionalMemory,
|
|
||||||
///
|
|
||||||
/// Memory in which errors have been detected.
|
|
||||||
///
|
|
||||||
EfiUnusableMemory,
|
|
||||||
///
|
|
||||||
/// Memory that holds the ACPI tables.
|
|
||||||
///
|
|
||||||
EfiACPIReclaimMemory,
|
|
||||||
///
|
|
||||||
/// Address space reserved for use by the firmware.
|
|
||||||
///
|
|
||||||
EfiACPIMemoryNVS,
|
|
||||||
///
|
|
||||||
/// Used by system firmware to request that a memory-mapped IO region
|
|
||||||
/// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
|
|
||||||
///
|
|
||||||
EfiMemoryMappedIO,
|
|
||||||
///
|
|
||||||
/// System memory-mapped IO region that is used to translate memory
|
|
||||||
/// cycles to IO cycles by the processor.
|
|
||||||
///
|
|
||||||
EfiMemoryMappedIOPortSpace,
|
|
||||||
///
|
|
||||||
/// Address space reserved by the firmware for code that is part of the processor.
|
|
||||||
///
|
|
||||||
EfiPalCode,
|
|
||||||
EfiMaxMemoryType
|
|
||||||
} EFI_MEMORY_TYPE;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the
|
|
||||||
/// various attributes of the logical memory allocation. The type field will be used for
|
|
||||||
/// subsequent inclusion in the UEFI memory map.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// A GUID that defines the memory allocation region's type and purpose, as well as
|
|
||||||
/// other fields within the memory allocation HOB. This GUID is used to define the
|
|
||||||
/// additional data within the HOB that may be present for the memory allocation HOB.
|
|
||||||
/// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
|
|
||||||
/// specification.
|
|
||||||
///
|
|
||||||
EFI_GUID Name;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The base address of memory allocated by this HOB. Type
|
|
||||||
/// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
|
|
||||||
/// specification.
|
|
||||||
///
|
|
||||||
EFI_PHYSICAL_ADDRESS MemoryBaseAddress;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The length in bytes of memory allocated by this HOB.
|
|
||||||
///
|
|
||||||
UINT64 MemoryLength;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Defines the type of memory allocated by this HOB. The memory type definition
|
|
||||||
/// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
|
|
||||||
/// in AllocatePages() in the UEFI 2.0 specification.
|
|
||||||
///
|
|
||||||
EFI_MEMORY_TYPE MemoryType;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Padding for Itanium processor family
|
|
||||||
///
|
|
||||||
UINT8 Reserved[4];
|
|
||||||
} EFI_HOB_MEMORY_ALLOCATION_HEADER;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Describes all memory ranges used during the HOB producer
|
|
||||||
/// phase that exist outside the HOB list. This HOB type
|
|
||||||
/// describes how memory is used, not the physical attributes of memory.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
|
|
||||||
///
|
|
||||||
EFI_HOB_GENERIC_HEADER Header;
|
|
||||||
///
|
|
||||||
/// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
|
|
||||||
/// various attributes of the logical memory allocation.
|
|
||||||
///
|
|
||||||
EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;
|
|
||||||
//
|
|
||||||
// Additional data pertaining to the "Name" Guid memory
|
|
||||||
// may go here.
|
|
||||||
//
|
|
||||||
} EFI_HOB_MEMORY_ALLOCATION;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// The resource type.
|
|
||||||
///
|
|
||||||
typedef UINT32 EFI_RESOURCE_TYPE;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
|
|
||||||
//
|
|
||||||
#define EFI_RESOURCE_SYSTEM_MEMORY 0x00000000
|
|
||||||
#define EFI_RESOURCE_MEMORY_MAPPED_IO 0x00000001
|
|
||||||
#define EFI_RESOURCE_IO 0x00000002
|
|
||||||
#define EFI_RESOURCE_FIRMWARE_DEVICE 0x00000003
|
|
||||||
#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT 0x00000004
|
|
||||||
#define EFI_RESOURCE_MEMORY_RESERVED 0x00000005
|
|
||||||
#define EFI_RESOURCE_IO_RESERVED 0x00000006
|
|
||||||
#define EFI_RESOURCE_MAX_MEMORY_TYPE 0x00000007
|
|
||||||
|
|
||||||
///
|
|
||||||
/// A type of recount attribute type.
|
|
||||||
///
|
|
||||||
typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
|
|
||||||
|
|
||||||
//
|
|
||||||
// These types can be ORed together as needed.
|
|
||||||
//
|
|
||||||
// The first three enumerations describe settings
|
|
||||||
//
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_PRESENT 0x00000001
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED 0x00000002
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_TESTED 0x00000004
|
|
||||||
//
|
|
||||||
// The rest of the settings describe capabilities
|
|
||||||
//
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC 0x00000008
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC 0x00000010
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1 0x00000020
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2 0x00000040
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED 0x00000080
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED 0x00000100
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED 0x00000200
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE 0x00000400
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE 0x00000800
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE 0x00001000
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE 0x00002000
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO 0x00004000
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO 0x00008000
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO 0x00010000
|
|
||||||
#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED 0x00020000
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Describes the resource properties of all fixed,
|
|
||||||
/// nonrelocatable resource ranges found on the processor
|
|
||||||
/// host bus during the HOB producer phase.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
|
|
||||||
///
|
|
||||||
EFI_HOB_GENERIC_HEADER Header;
|
|
||||||
///
|
|
||||||
/// A GUID representing the owner of the resource. This GUID is used by HOB
|
|
||||||
/// consumer phase components to correlate device ownership of a resource.
|
|
||||||
///
|
|
||||||
EFI_GUID Owner;
|
|
||||||
///
|
|
||||||
/// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
|
|
||||||
///
|
|
||||||
EFI_RESOURCE_TYPE ResourceType;
|
|
||||||
///
|
|
||||||
/// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
|
|
||||||
///
|
|
||||||
EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
|
|
||||||
///
|
|
||||||
/// The physical start address of the resource region.
|
|
||||||
///
|
|
||||||
EFI_PHYSICAL_ADDRESS PhysicalStart;
|
|
||||||
///
|
|
||||||
/// The number of bytes of the resource region.
|
|
||||||
///
|
|
||||||
UINT64 ResourceLength;
|
|
||||||
} EFI_HOB_RESOURCE_DESCRIPTOR;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Allows writers of executable content in the HOB producer phase to
|
|
||||||
/// maintain and manage HOBs with specific GUID.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
|
|
||||||
///
|
|
||||||
EFI_HOB_GENERIC_HEADER Header;
|
|
||||||
///
|
|
||||||
/// A GUID that defines the contents of this HOB.
|
|
||||||
///
|
|
||||||
EFI_GUID Name;
|
|
||||||
//
|
|
||||||
// Guid specific data goes here
|
|
||||||
//
|
|
||||||
} EFI_HOB_GUID_TYPE;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Union of all the possible HOB Types.
|
|
||||||
///
|
|
||||||
typedef union {
|
|
||||||
EFI_HOB_GENERIC_HEADER *Header;
|
|
||||||
EFI_HOB_MEMORY_ALLOCATION *MemoryAllocation;
|
|
||||||
EFI_HOB_RESOURCE_DESCRIPTOR *ResourceDescriptor;
|
|
||||||
EFI_HOB_GUID_TYPE *Guid;
|
|
||||||
UINT8 *Raw;
|
|
||||||
} EFI_PEI_HOB_POINTERS;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns the type of a HOB.
|
|
||||||
|
|
||||||
This macro returns the HobType field from the HOB header for the
|
|
||||||
HOB specified by HobStart.
|
|
||||||
|
|
||||||
@param HobStart A pointer to a HOB.
|
|
||||||
|
|
||||||
@return HobType.
|
|
||||||
|
|
||||||
**/
|
|
||||||
#define GET_HOB_TYPE(HobStart) \
|
|
||||||
(((EFI_HOB_GENERIC_HEADER *)(HobStart))->HobType)
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns the length, in bytes, of a HOB.
|
|
||||||
|
|
||||||
This macro returns the HobLength field from the HOB header for the
|
|
||||||
HOB specified by HobStart.
|
|
||||||
|
|
||||||
@param HobStart A pointer to a HOB.
|
|
||||||
|
|
||||||
@return HobLength.
|
|
||||||
|
|
||||||
**/
|
|
||||||
#define GET_HOB_LENGTH(HobStart) \
|
|
||||||
(((EFI_HOB_GENERIC_HEADER *)(HobStart))->HobLength)
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns a pointer to the next HOB in the HOB list.
|
|
||||||
|
|
||||||
This macro returns a pointer to HOB that follows the
|
|
||||||
HOB specified by HobStart in the HOB List.
|
|
||||||
|
|
||||||
@param HobStart A pointer to a HOB.
|
|
||||||
|
|
||||||
@return A pointer to the next HOB in the HOB list.
|
|
||||||
|
|
||||||
**/
|
|
||||||
#define GET_NEXT_HOB(HobStart) \
|
|
||||||
(VOID *)((UINT8 *)(HobStart) + GET_HOB_LENGTH(HobStart))
|
|
||||||
|
|
||||||
/**
|
|
||||||
Determines if a HOB is the last HOB in the HOB list.
|
|
||||||
|
|
||||||
This macro determine if the HOB specified by HobStart is the
|
|
||||||
last HOB in the HOB list. If HobStart is last HOB in the HOB list,
|
|
||||||
then TRUE is returned. Otherwise, FALSE is returned.
|
|
||||||
|
|
||||||
@param HobStart A pointer to a HOB.
|
|
||||||
|
|
||||||
@retval TRUE The HOB specified by HobStart is the last HOB in the HOB list.
|
|
||||||
@retval FALSE The HOB specified by HobStart is not the last HOB in the HOB list.
|
|
||||||
|
|
||||||
**/
|
|
||||||
#define END_OF_HOB_LIST(HobStart) (GET_HOB_TYPE(HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST)
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
|
|
||||||
|
|
||||||
This macro returns a pointer to the data buffer in a HOB specified by HobStart.
|
|
||||||
HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
|
|
||||||
|
|
||||||
@param GuidHob A pointer to a HOB.
|
|
||||||
|
|
||||||
@return A pointer to the data buffer in a HOB.
|
|
||||||
|
|
||||||
**/
|
|
||||||
#define GET_GUID_HOB_DATA(HobStart) \
|
|
||||||
(VOID *)((UINT8 *)(HobStart) + sizeof(EFI_HOB_GUID_TYPE))
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
|
|
||||||
|
|
||||||
This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart.
|
|
||||||
HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
|
|
||||||
|
|
||||||
@param GuidHob A pointer to a HOB.
|
|
||||||
|
|
||||||
@return The size of the data buffer.
|
|
||||||
**/
|
|
||||||
#define GET_GUID_HOB_DATA_SIZE(HobStart) \
|
|
||||||
(UINT16)(GET_HOB_LENGTH(HobStart) - sizeof(EFI_HOB_GUID_TYPE))
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
FSP specific GUID HOB definitions
|
|
||||||
|
|
||||||
**/
|
|
||||||
#define FSP_INFO_HEADER_GUID \
|
|
||||||
{ \
|
|
||||||
0x912740BE, 0x2284, 0x4734, {0xB9, 0x71, 0x84, 0xB0, 0x27, 0x35, 0x3F, 0x0C} \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FSP_NON_VOLATILE_STORAGE_HOB_GUID \
|
|
||||||
{ \
|
|
||||||
0x721acf02, 0x4d77, 0x4c2a, { 0xb3, 0xdc, 0x27, 0xb, 0x7b, 0xa9, 0xe4, 0xb0 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID \
|
|
||||||
{ \
|
|
||||||
0xbbcff46c, 0xc8d3, 0x4113, { 0x89, 0x85, 0xb9, 0xd4, 0xf3, 0xb3, 0xf6, 0x4e } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FSP_HOB_RESOURCE_OWNER_FSP_GUID \
|
|
||||||
{ \
|
|
||||||
0x69a79759, 0x1373, 0x4367, { 0xa6, 0xc4, 0xc7, 0xf5, 0x9e, 0xfd, 0x98, 0x6e } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FSP_HOB_RESOURCE_OWNER_TSEG_GUID \
|
|
||||||
{ \
|
|
||||||
0xd038747c, 0xd00c, 0x4980, { 0xb3, 0x19, 0x49, 0x01, 0x99, 0xa4, 0x7d, 0x55 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FSP_HOB_RESOURCE_OWNER_GRAPHICS_GUID \
|
|
||||||
{ \
|
|
||||||
0x9c7c3aa7, 0x5332, 0x4917, { 0x82, 0xb9, 0x56, 0xa5, 0xf3, 0xe6, 0x2a, 0x07 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FSP_HOB_GRAPHICS_INFO_GUID \
|
|
||||||
{ 0x39f62cce, 0x6825, 0x4669, { 0xbb, 0x56, 0x54, 0x1a, 0xba, 0x75, 0x3a, 0x07 } }
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,118 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013, Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_INFOHEADER_H__
|
|
||||||
#define __FSP_INFOHEADER_H__
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Fixed FSP header offset in the FSP image
|
|
||||||
///
|
|
||||||
#define FSP_INFO_HEADER_OFF 0x94
|
|
||||||
|
|
||||||
#pragma pack(1)
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// Signature ('FSPH') for the FSP Information Header
|
|
||||||
///
|
|
||||||
UINT32 Signature;
|
|
||||||
///
|
|
||||||
/// Length of the FSP Information Header
|
|
||||||
///
|
|
||||||
UINT32 HeaderLength;
|
|
||||||
///
|
|
||||||
/// Reserved
|
|
||||||
///
|
|
||||||
UINT8 Reserved1[3];
|
|
||||||
///
|
|
||||||
/// Revision of the FSP Information Header
|
|
||||||
///
|
|
||||||
UINT8 HeaderRevision;
|
|
||||||
///
|
|
||||||
/// Revision of the FSP binary
|
|
||||||
///
|
|
||||||
UINT32 ImageRevision;
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Signature string that will help match the FSP Binary to a supported
|
|
||||||
/// hardware configuration.
|
|
||||||
///
|
|
||||||
CHAR8 ImageId[8];
|
|
||||||
///
|
|
||||||
/// Size of the entire FSP binary
|
|
||||||
///
|
|
||||||
UINT32 ImageSize;
|
|
||||||
///
|
|
||||||
/// FSP binary preferred base address
|
|
||||||
///
|
|
||||||
UINT32 ImageBase;
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Attribute for the FSP binary
|
|
||||||
///
|
|
||||||
UINT32 ImageAttribute;
|
|
||||||
///
|
|
||||||
/// Offset of the FSP configuration region
|
|
||||||
///
|
|
||||||
UINT32 CfgRegionOffset;
|
|
||||||
///
|
|
||||||
/// Size of the FSP configuration region
|
|
||||||
///
|
|
||||||
UINT32 CfgRegionSize;
|
|
||||||
///
|
|
||||||
/// Number of API entries this FSP supports
|
|
||||||
///
|
|
||||||
UINT32 ApiEntryNum;
|
|
||||||
|
|
||||||
|
|
||||||
///
|
|
||||||
/// TempRamInit API entry offset
|
|
||||||
///
|
|
||||||
UINT32 TempRamInitEntry;
|
|
||||||
///
|
|
||||||
/// FspInit API entry offset
|
|
||||||
///
|
|
||||||
UINT32 FspInitEntry;
|
|
||||||
///
|
|
||||||
/// NotifyPhase API entry offset
|
|
||||||
///
|
|
||||||
UINT32 NotifyPhaseEntry;
|
|
||||||
///
|
|
||||||
/// Reserved
|
|
||||||
///
|
|
||||||
UINT32 Reserved2;
|
|
||||||
|
|
||||||
} FSP_INFO_HEADER;
|
|
||||||
|
|
||||||
#pragma pack()
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,75 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013, Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_PLATFORM_H__
|
|
||||||
#define __FSP_PLATFORM_H__
|
|
||||||
|
|
||||||
#pragma pack(1)
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint32_t RedMask;
|
|
||||||
uint32_t GreenMask;
|
|
||||||
uint32_t BlueMask;
|
|
||||||
uint32_t ReservedMask;
|
|
||||||
} EFI_PIXEL_BITMASK;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
PixelRedGreenBlueReserved8BitPerColor,
|
|
||||||
PixelBlueGreenRedReserved8BitPerColor,
|
|
||||||
PixelBitMask,
|
|
||||||
PixelBltOnly,
|
|
||||||
PixelFormatMax
|
|
||||||
} EFI_GRAPHICS_PIXEL_FORMAT;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint32_t Version;
|
|
||||||
uint32_t HorizontalResolution;
|
|
||||||
uint32_t VerticalResolution;
|
|
||||||
EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;
|
|
||||||
EFI_PIXEL_BITMASK PixelInformation;
|
|
||||||
uint32_t PixelsPerScanLine;
|
|
||||||
} EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint64_t FrameBufferBase;
|
|
||||||
uint64_t FrameBufferSize;
|
|
||||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION GraphicsMode;
|
|
||||||
} PLATFORM_GRAPHICS_OUTPUT;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
///
|
|
||||||
/// FSP common runtime data structure
|
|
||||||
///
|
|
||||||
FSP_INIT_RT_COMMON_BUFFER Common;
|
|
||||||
} FSP_INIT_RT_BUFFER;
|
|
||||||
|
|
||||||
#pragma pack()
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,118 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013-2016 Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_SUPPORT_H__
|
|
||||||
#define __FSP_SUPPORT_H__
|
|
||||||
|
|
||||||
UINT32
|
|
||||||
GetPhysicalLowMemTop (
|
|
||||||
CONST VOID *HobStart
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT32
|
|
||||||
GetUsableLowMemTop (
|
|
||||||
CONST VOID *HobListPtr
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT64
|
|
||||||
GetUsableHighMemTop (
|
|
||||||
CONST VOID *HobListPtr
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID *
|
|
||||||
GetGuidHobDataBuffer (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length,
|
|
||||||
EFI_GUID *Guid
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT64
|
|
||||||
GetFspReservedMemoryFromGuid (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT64 *FspMemoryLength,
|
|
||||||
EFI_GUID *FspReservedMemoryGuid
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT32
|
|
||||||
GetTsegReservedMemory (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length
|
|
||||||
);
|
|
||||||
|
|
||||||
UINT32
|
|
||||||
GetFspReservedMemory (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID*
|
|
||||||
GetFspNvsDataBuffer (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID *
|
|
||||||
GetBootloaderTempMemoryBuffer (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID *
|
|
||||||
EFIAPI
|
|
||||||
GetNextHob (
|
|
||||||
UINT16 Type,
|
|
||||||
CONST VOID *HobStart
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID *
|
|
||||||
EFIAPI
|
|
||||||
GetFirstHob (
|
|
||||||
UINT16 Type
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID *
|
|
||||||
EFIAPI
|
|
||||||
GetNextGuidHob (
|
|
||||||
CONST EFI_GUID *Guid,
|
|
||||||
CONST VOID *HobStart
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID *
|
|
||||||
EFIAPI
|
|
||||||
GetFirstGuidHob (
|
|
||||||
CONST EFI_GUID *Guid
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
|
||||||
UpdateFspUpdConfigs (
|
|
||||||
UPD_DATA_REGION *UpdDataRgn
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,220 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013, Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_TYPES_H__
|
|
||||||
#define __FSP_TYPES_H__
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 8-byte unsigned value.
|
|
||||||
///
|
|
||||||
typedef unsigned long long UINT64;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 8-byte signed value.
|
|
||||||
///
|
|
||||||
typedef long long INT64;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 4-byte unsigned value.
|
|
||||||
///
|
|
||||||
typedef unsigned int UINT32;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 4-byte signed value.
|
|
||||||
///
|
|
||||||
typedef int INT32;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 2-byte unsigned value.
|
|
||||||
///
|
|
||||||
typedef unsigned short UINT16;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 2-byte Character.
|
|
||||||
///
|
|
||||||
typedef unsigned short CHAR16;
|
|
||||||
///
|
|
||||||
/// 2-byte signed value.
|
|
||||||
///
|
|
||||||
typedef short INT16;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for TRUE. Other
|
|
||||||
/// values are undefined.
|
|
||||||
///
|
|
||||||
typedef unsigned char BOOLEAN;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 1-byte unsigned value.
|
|
||||||
///
|
|
||||||
typedef unsigned char UINT8;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 1-byte Character
|
|
||||||
///
|
|
||||||
typedef char CHAR8;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 1-byte signed value
|
|
||||||
///
|
|
||||||
typedef char INT8;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Undeclared type.
|
|
||||||
///
|
|
||||||
typedef void VOID;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 64-bit physical memory address.
|
|
||||||
///
|
|
||||||
typedef UINT64 EFI_PHYSICAL_ADDRESS;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// UEFI and FSP defined status.
|
|
||||||
///
|
|
||||||
typedef UINT32 EFI_STATUS;
|
|
||||||
#define FSP_STATUS EFI_STATUS
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Datum is read-only.
|
|
||||||
///
|
|
||||||
#define CONST const
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Datum is scoped to the current file or function.
|
|
||||||
///
|
|
||||||
#define STATIC static
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Boolean true value. UEFI Specification defines this value to be 1,
|
|
||||||
/// but this form is more portable.
|
|
||||||
///
|
|
||||||
#define TRUE ((BOOLEAN)(1==1))
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Boolean false value. UEFI Specification defines this value to be 0,
|
|
||||||
/// but this form is more portable.
|
|
||||||
///
|
|
||||||
#define FALSE ((BOOLEAN)(0==1))
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Null pointer
|
|
||||||
///
|
|
||||||
#ifndef NULL
|
|
||||||
#define NULL ((VOID *) 0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Modifier to ensure that all API functions use the correct C calling
|
|
||||||
/// convention.
|
|
||||||
///
|
|
||||||
#define EFIAPI __attribute__((cdecl))
|
|
||||||
#define FSPAPI EFIAPI
|
|
||||||
|
|
||||||
///
|
|
||||||
/// 128 bit buffer containing a unique identifier value.
|
|
||||||
///
|
|
||||||
typedef struct {
|
|
||||||
UINT32 Data1;
|
|
||||||
UINT16 Data2;
|
|
||||||
UINT16 Data3;
|
|
||||||
UINT8 Data4[8];
|
|
||||||
} EFI_GUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns a 16-bit signature built from 2 ASCII characters.
|
|
||||||
|
|
||||||
This macro returns a 16-bit value built from the two ASCII characters specified
|
|
||||||
by A and B.
|
|
||||||
|
|
||||||
@param A The first ASCII character.
|
|
||||||
@param B The second ASCII character.
|
|
||||||
|
|
||||||
@return A 16-bit value built from the two ASCII characters specified by A and B.
|
|
||||||
|
|
||||||
**/
|
|
||||||
#define SIGNATURE_16(A, B) ((A) | (B << 8))
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns a 32-bit signature built from 4 ASCII characters.
|
|
||||||
|
|
||||||
This macro returns a 32-bit value built from the four ASCII characters specified
|
|
||||||
by A, B, C, and D.
|
|
||||||
|
|
||||||
@param A The first ASCII character.
|
|
||||||
@param B The second ASCII character.
|
|
||||||
@param C The third ASCII character.
|
|
||||||
@param D The fourth ASCII character.
|
|
||||||
|
|
||||||
@return A 32-bit value built from the two ASCII characters specified by A, B,
|
|
||||||
C and D.
|
|
||||||
|
|
||||||
**/
|
|
||||||
#define SIGNATURE_32(A, B, C, D) (SIGNATURE_16 (A, B) | (SIGNATURE_16 (C, D) << 16))
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns a 64-bit signature built from 8 ASCII characters.
|
|
||||||
|
|
||||||
This macro returns a 64-bit value built from the eight ASCII characters specified
|
|
||||||
by A, B, C, D, E, F, G,and H.
|
|
||||||
|
|
||||||
@param A The first ASCII character.
|
|
||||||
@param B The second ASCII character.
|
|
||||||
@param C The third ASCII character.
|
|
||||||
@param D The fourth ASCII character.
|
|
||||||
@param E The fifth ASCII character.
|
|
||||||
@param F The sixth ASCII character.
|
|
||||||
@param G The seventh ASCII character.
|
|
||||||
@param H The eighth ASCII character.
|
|
||||||
|
|
||||||
@return A 64-bit value built from the two ASCII characters specified by A, B,
|
|
||||||
C, D, E, F, G and H.
|
|
||||||
|
|
||||||
**/
|
|
||||||
#define SIGNATURE_64(A, B, C, D, E, F, G, H) \
|
|
||||||
(SIGNATURE_32 (A, B, C, D) | ((UINT64) (SIGNATURE_32 (E, F, G, H)) << 32))
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Assertion for debug
|
|
||||||
///
|
|
||||||
#define ASSERT(Expression) do { if (!(Expression)) for (;;); } while (FALSE)
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Define FSP API return status code.
|
|
||||||
/// Compatiable with EFI_STATUS defined in PI Spec.
|
|
||||||
///
|
|
||||||
#define FSP_SUCCESS 0
|
|
||||||
#define FSP_INVALID_PARAMETER 0x80000002
|
|
||||||
#define FSP_UNSUPPORTED 0x80000003
|
|
||||||
#define FSP_DEVICE_ERROR 0x80000007
|
|
||||||
#define FSP_NOT_FOUND 0x8000000E
|
|
||||||
#define FSP_ALREADY_STARTED 0x80000014
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,146 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2015-2016 Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __FSP_VPD_H__
|
|
||||||
#define __FSP_VPD_H__
|
|
||||||
|
|
||||||
#pragma pack(1)
|
|
||||||
|
|
||||||
typedef struct _UPD_DATA_REGION {
|
|
||||||
UINT64 Signature; /* Offset 0x0000 */
|
|
||||||
UINT64 Reserved; /* Offset 0x0008 */
|
|
||||||
UINT8 UnusedUpdSpace0[16]; /* Offset 0x0010 */
|
|
||||||
UINT8 SerialPortType; /* Offset 0x0020 */
|
|
||||||
UINT32 SerialPortAddress; /* Offset 0x0021 */
|
|
||||||
UINT8 SerialPortConfigure; /* Offset 0x0025 */
|
|
||||||
UINT8 SerialPortBaudRate; /* Offset 0x0026 */
|
|
||||||
UINT8 SerialPortControllerInit0; /* Offset 0x0027 */
|
|
||||||
UINT8 SerialPortControllerInit1; /* Offset 0x0028 */
|
|
||||||
UINT8 ConfigIOU1_PciPort3; /* Offset 0x0029 */
|
|
||||||
UINT8 ConfigIOU2_PciPort1; /* Offset 0x002A */
|
|
||||||
UINT8 PowerStateAfterG3; /* Offset 0x002B */
|
|
||||||
UINT8 PchPciPort1; /* Offset 0x002C */
|
|
||||||
UINT8 PchPciPort2; /* Offset 0x002D */
|
|
||||||
UINT8 PchPciPort3; /* Offset 0x002E */
|
|
||||||
UINT8 PchPciPort4; /* Offset 0x002F */
|
|
||||||
UINT8 PchPciPort5; /* Offset 0x0030 */
|
|
||||||
UINT8 PchPciPort6; /* Offset 0x0031 */
|
|
||||||
UINT8 PchPciPort7; /* Offset 0x0032 */
|
|
||||||
UINT8 PchPciPort8; /* Offset 0x0033 */
|
|
||||||
UINT8 HotPlug_PchPciPort1; /* Offset 0x0034 */
|
|
||||||
UINT8 HotPlug_PchPciPort2; /* Offset 0x0035 */
|
|
||||||
UINT8 HotPlug_PchPciPort3; /* Offset 0x0036 */
|
|
||||||
UINT8 HotPlug_PchPciPort4; /* Offset 0x0037 */
|
|
||||||
UINT8 HotPlug_PchPciPort5; /* Offset 0x0038 */
|
|
||||||
UINT8 HotPlug_PchPciPort6; /* Offset 0x0039 */
|
|
||||||
UINT8 HotPlug_PchPciPort7; /* Offset 0x003A */
|
|
||||||
UINT8 HotPlug_PchPciPort8; /* Offset 0x003B */
|
|
||||||
UINT8 Ehci1Enable; /* Offset 0x003C */
|
|
||||||
UINT8 Ehci2Enable; /* Offset 0x003D */
|
|
||||||
UINT8 HyperThreading; /* Offset 0x003E */
|
|
||||||
UINT8 DebugOutputLevel; /* Offset 0x003F */
|
|
||||||
UINT8 TcoTimerHaltLock; /* Offset 0x0040 */
|
|
||||||
UINT8 TurboMode; /* Offset 0x0041 */
|
|
||||||
UINT8 BootPerfMode; /* Offset 0x0042 */
|
|
||||||
UINT8 PciePort1aAspm; /* Offset 0x0043 */
|
|
||||||
UINT8 PciePort1bAspm; /* Offset 0x0044 */
|
|
||||||
UINT8 PciePort3aAspm; /* Offset 0x0045 */
|
|
||||||
UINT8 PciePort3bAspm; /* Offset 0x0046 */
|
|
||||||
UINT8 PciePort3cAspm; /* Offset 0x0047 */
|
|
||||||
UINT8 PciePort3dAspm; /* Offset 0x0048 */
|
|
||||||
UINT8 PchPciePort1Aspm; /* Offset 0x0049 */
|
|
||||||
UINT8 PchPciePort2Aspm; /* Offset 0x004A */
|
|
||||||
UINT8 PchPciePort3Aspm; /* Offset 0x004B */
|
|
||||||
UINT8 PchPciePort4Aspm; /* Offset 0x004C */
|
|
||||||
UINT8 PchPciePort5Aspm; /* Offset 0x004D */
|
|
||||||
UINT8 PchPciePort6Aspm; /* Offset 0x004E */
|
|
||||||
UINT8 PchPciePort7Aspm; /* Offset 0x004F */
|
|
||||||
UINT8 PchPciePort8Aspm; /* Offset 0x0050 */
|
|
||||||
UINT8 DFXEnable; /* Offset 0x0051 */
|
|
||||||
UINT8 ThermalDeviceEnable; /* Offset 0x0052 */
|
|
||||||
UINT8 UnusedUpdSpace1[88]; /* Offset 0x0053 */
|
|
||||||
UINT8 MemEccSupport; /* Offset 0x00AB */
|
|
||||||
UINT8 MemDdrMemoryType; /* Offset 0x00AC */
|
|
||||||
UINT8 MemRankMultiplication; /* Offset 0x00AD */
|
|
||||||
UINT8 MemRankMarginTool; /* Offset 0x00AE */
|
|
||||||
UINT8 MemScrambling; /* Offset 0x00AF */
|
|
||||||
UINT8 MemRefreshMode; /* Offset 0x00B0 */
|
|
||||||
UINT8 MemMcOdtOverride; /* Offset 0x00B1 */
|
|
||||||
UINT8 MemCAParity; /* Offset 0x00B2 */
|
|
||||||
UINT8 MemThermalThrottling; /* Offset 0x00B3 */
|
|
||||||
UINT8 MemPowerSavingsMode; /* Offset 0x00B4 */
|
|
||||||
UINT8 MemElectricalThrottling; /* Offset 0x00B5 */
|
|
||||||
UINT8 MemPagePolicy; /* Offset 0x00B6 */
|
|
||||||
UINT8 MemSocketInterleaveBelow4G; /* Offset 0x00B7 */
|
|
||||||
UINT8 MemChannelInterleave; /* Offset 0x00B8 */
|
|
||||||
UINT8 MemRankInterleave; /* Offset 0x00B9 */
|
|
||||||
UINT8 MemDownEnable; /* Offset 0x00BA */
|
|
||||||
UINT32 MemDownCh0Dimm0SpdPtr; /* Offset 0x00BB */
|
|
||||||
UINT32 MemDownCh0Dimm1SpdPtr; /* Offset 0x00BF */
|
|
||||||
UINT32 MemDownCh1Dimm0SpdPtr; /* Offset 0x00C3 */
|
|
||||||
UINT32 MemDownCh1Dimm1SpdPtr; /* Offset 0x00C7 */
|
|
||||||
UINT8 MemFastBoot; /* Offset 0x00CB */
|
|
||||||
UINT8 pam0_hienable; /* Offset 0x00CC */
|
|
||||||
UINT8 pam1_loenable; /* Offset 0x00CD */
|
|
||||||
UINT8 pam1_hienable; /* Offset 0x00CE */
|
|
||||||
UINT8 pam2_loenable; /* Offset 0x00CF */
|
|
||||||
UINT8 pam2_hienable; /* Offset 0x00D0 */
|
|
||||||
UINT8 pam3_loenable; /* Offset 0x00D1 */
|
|
||||||
UINT8 pam3_hienable; /* Offset 0x00D2 */
|
|
||||||
UINT8 pam4_loenable; /* Offset 0x00D3 */
|
|
||||||
UINT8 pam4_hienable; /* Offset 0x00D4 */
|
|
||||||
UINT8 pam5_loenable; /* Offset 0x00D5 */
|
|
||||||
UINT8 pam5_hienable; /* Offset 0x00D6 */
|
|
||||||
UINT8 pam6_loenable; /* Offset 0x00D7 */
|
|
||||||
UINT8 pam6_hienable; /* Offset 0x00D8 */
|
|
||||||
UINT8 MemAdr; /* Offset 0x00D9 */
|
|
||||||
UINT8 MemAdrResumePath; /* Offset 0x00DA */
|
|
||||||
UINT8 MemBlockScTrafficOnAdr; /* Offset 0x00DB */
|
|
||||||
UINT16 MemPlatformReleaseAdrClampsPort; /* Offset 0x00DC */
|
|
||||||
UINT32 MemPlatformReleaseAdrClampsAnd; /* Offset 0x00DE */
|
|
||||||
UINT32 MemPlatformReleaseAdrClampsOr; /* Offset 0x00E2 */
|
|
||||||
UINT8 UnusedUpdSpace2[24]; /* Offset 0x00E6 */
|
|
||||||
UINT16 PcdRegionTerminator; /* Offset 0x00FE */
|
|
||||||
} UPD_DATA_REGION;
|
|
||||||
|
|
||||||
#define FSP_IMAGE_ID 0x5F45442D5844425F /* '_BDX-DE_' */
|
|
||||||
#define FSP_IMAGE_REV 0x00000301
|
|
||||||
|
|
||||||
typedef struct _VPD_DATA_REGION {
|
|
||||||
UINT64 PcdVpdRegionSign; /* Offset 0x0000 */
|
|
||||||
UINT32 PcdImageRevision; /* Offset 0x0008 */
|
|
||||||
UINT32 PcdUpdRegionOffset; /* Offset 0x000C */
|
|
||||||
UINT8 UnusedVpdSpace0[16]; /* Offset 0x0010 */
|
|
||||||
UINT32 PcdFspReservedMemoryLength; /* Offset 0x0020 */
|
|
||||||
} VPD_DATA_REGION;
|
|
||||||
|
|
||||||
#pragma pack()
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,454 +0,0 @@
|
||||||
/**
|
|
||||||
|
|
||||||
Copyright (C) 2013-2016 Intel Corporation
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
||||||
be used to endorse or promote products derived from this software without
|
|
||||||
specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
||||||
THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#include <types.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <fsp.h>
|
|
||||||
|
|
||||||
/**
|
|
||||||
Reads a 64-bit value from memory that may be unaligned.
|
|
||||||
|
|
||||||
This function returns the 64-bit value pointed to by Buffer. The function
|
|
||||||
guarantees that the read operation does not produce an alignment fault.
|
|
||||||
|
|
||||||
If the Buffer is NULL, then ASSERT().
|
|
||||||
|
|
||||||
@param Buffer Pointer to a 64-bit value that may be unaligned.
|
|
||||||
@return The 64-bit value read from Buffer.
|
|
||||||
|
|
||||||
**/
|
|
||||||
STATIC
|
|
||||||
UINT64
|
|
||||||
EFIAPI
|
|
||||||
ReadUnaligned64 (
|
|
||||||
CONST UINT64 *Buffer
|
|
||||||
)
|
|
||||||
{
|
|
||||||
ASSERT (Buffer != NULL);
|
|
||||||
return *Buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Compares two GUIDs.
|
|
||||||
|
|
||||||
This function compares Guid1 to Guid2. If the GUIDs are identical then TRUE is returned.
|
|
||||||
If there are any bit differences in the two GUIDs, then FALSE is returned.
|
|
||||||
|
|
||||||
If Guid1 is NULL, then ASSERT().
|
|
||||||
If Guid2 is NULL, then ASSERT().
|
|
||||||
|
|
||||||
@param Guid1 A pointer to a 128 bit GUID.
|
|
||||||
@param Guid2 A pointer to a 128 bit GUID.
|
|
||||||
@retval TRUE Guid1 and Guid2 are identical.
|
|
||||||
@retval FALSE Guid1 and Guid2 are not identical.
|
|
||||||
|
|
||||||
**/
|
|
||||||
STATIC
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
CompareGuid (
|
|
||||||
CONST EFI_GUID *Guid1,
|
|
||||||
CONST EFI_GUID *Guid2
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UINT64 LowPartOfGuid1;
|
|
||||||
UINT64 LowPartOfGuid2;
|
|
||||||
UINT64 HighPartOfGuid1;
|
|
||||||
UINT64 HighPartOfGuid2;
|
|
||||||
|
|
||||||
LowPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1);
|
|
||||||
LowPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2);
|
|
||||||
HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
|
|
||||||
HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
|
|
||||||
|
|
||||||
return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns the next instance of a HOB type from the starting HOB.
|
|
||||||
|
|
||||||
@param Type HOB type to search
|
|
||||||
@param HobStart A pointer to the HOB list
|
|
||||||
@retval a HOB object with matching type; Otherwise NULL.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID *
|
|
||||||
EFIAPI
|
|
||||||
GetNextHob (
|
|
||||||
UINT16 Type,
|
|
||||||
CONST VOID *HobStart
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_PEI_HOB_POINTERS Hob;
|
|
||||||
|
|
||||||
ASSERT (HobStart != NULL);
|
|
||||||
|
|
||||||
Hob.Raw = (UINT8 *) HobStart;
|
|
||||||
/*
|
|
||||||
* Parse the HOB list until end of list or matching type is found.
|
|
||||||
*/
|
|
||||||
while (!END_OF_HOB_LIST(Hob.Raw)) {
|
|
||||||
if (Hob.Header->HobType == Type) {
|
|
||||||
return Hob.Raw;
|
|
||||||
}
|
|
||||||
Hob.Raw = GET_NEXT_HOB(Hob.Raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Returns the next instance of the matched GUID HOB from the starting HOB.
|
|
||||||
|
|
||||||
@param Guid GUID to search
|
|
||||||
@param HobStart A pointer to the HOB list
|
|
||||||
@retval a HOB object with matching GUID; Otherwise NULL.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID *
|
|
||||||
EFIAPI
|
|
||||||
GetNextGuidHob (
|
|
||||||
CONST EFI_GUID *Guid,
|
|
||||||
CONST VOID *HobStart
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_PEI_HOB_POINTERS GuidHob;
|
|
||||||
|
|
||||||
GuidHob.Raw = (UINT8 *) HobStart;
|
|
||||||
while ((GuidHob.Raw = GetNextHob(EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {
|
|
||||||
if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
GuidHob.Raw = GET_NEXT_HOB(GuidHob.Raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
return GuidHob.Raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function retrieves the top of usable low memory.
|
|
||||||
|
|
||||||
@param HobListPtr A HOB list pointer.
|
|
||||||
@retval Usable low memory top.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINT32
|
|
||||||
GetUsableLowMemTop (
|
|
||||||
CONST VOID *HobStart
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_PEI_HOB_POINTERS Hob;
|
|
||||||
UINT32 MemLen;
|
|
||||||
/*
|
|
||||||
* Get the HOB list for processing
|
|
||||||
*/
|
|
||||||
Hob.Raw = (VOID *)HobStart;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Collect memory ranges
|
|
||||||
*/
|
|
||||||
MemLen = 0x100000;
|
|
||||||
while (!END_OF_HOB_LIST(Hob.Raw)) {
|
|
||||||
if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
|
|
||||||
if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
|
|
||||||
/*
|
|
||||||
* Need memory above 1MB to be collected here
|
|
||||||
*/
|
|
||||||
if (Hob.ResourceDescriptor->PhysicalStart >= 0x100000 &&
|
|
||||||
Hob.ResourceDescriptor->PhysicalStart < (EFI_PHYSICAL_ADDRESS) 0x100000000) {
|
|
||||||
MemLen += (UINT32) (Hob.ResourceDescriptor->ResourceLength);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Hob.Raw = GET_NEXT_HOB(Hob.Raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
return MemLen;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function retrieves the top of system low memory.
|
|
||||||
|
|
||||||
@param HobListPtr A HOB list pointer.
|
|
||||||
@retval Usable low memory top.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINT32
|
|
||||||
GetPhysicalLowMemTop (
|
|
||||||
CONST VOID *HobStart
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_PEI_HOB_POINTERS Hob;
|
|
||||||
UINT32 MemBase;
|
|
||||||
UINT32 MemLen;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the HOB list for processing
|
|
||||||
*/
|
|
||||||
Hob.Raw = (VOID *)HobStart;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Collect memory ranges
|
|
||||||
*/
|
|
||||||
MemBase = 0x100000;
|
|
||||||
MemLen = 0;
|
|
||||||
while (!END_OF_HOB_LIST(Hob.Raw)) {
|
|
||||||
if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
|
|
||||||
if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) ||
|
|
||||||
(Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED)) {
|
|
||||||
/*
|
|
||||||
* Need memory above 1MB to be collected here
|
|
||||||
*/
|
|
||||||
if (Hob.ResourceDescriptor->PhysicalStart >= MemBase &&
|
|
||||||
Hob.ResourceDescriptor->PhysicalStart < (EFI_PHYSICAL_ADDRESS) 0x100000000) {
|
|
||||||
MemBase = (UINT32) (Hob.ResourceDescriptor->PhysicalStart);
|
|
||||||
MemLen = (UINT32) (Hob.ResourceDescriptor->ResourceLength);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Hob.Raw = GET_NEXT_HOB(Hob.Raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
return MemBase + MemLen;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function retrieves the top of usable high memory.
|
|
||||||
|
|
||||||
@param HobListPtr A HOB list pointer.
|
|
||||||
@retval Usable high memory top.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINT64
|
|
||||||
GetUsableHighMemTop (
|
|
||||||
CONST VOID *HobStart
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_PEI_HOB_POINTERS Hob;
|
|
||||||
UINT64 MemTop;
|
|
||||||
/*
|
|
||||||
* Get the HOB list for processing
|
|
||||||
*/
|
|
||||||
Hob.Raw = (VOID *)HobStart;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Collect memory ranges
|
|
||||||
*/
|
|
||||||
MemTop = 0x100000000;
|
|
||||||
while (!END_OF_HOB_LIST(Hob.Raw)) {
|
|
||||||
if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
|
|
||||||
if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
|
|
||||||
/*
|
|
||||||
* Need memory above 1MB to be collected here
|
|
||||||
*/
|
|
||||||
if (Hob.ResourceDescriptor->PhysicalStart >= (EFI_PHYSICAL_ADDRESS) 0x100000000) {
|
|
||||||
MemTop += (UINT64) (Hob.ResourceDescriptor->ResourceLength);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Hob.Raw = GET_NEXT_HOB(Hob.Raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
return MemTop;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function retrieves a special reserved memory region.
|
|
||||||
|
|
||||||
@param HobListPtr A HOB list pointer.
|
|
||||||
@param Length A pointer to the GUID HOB data buffer length. If the GUID HOB is
|
|
||||||
located, the length will be updated.
|
|
||||||
@param OwnerGuid A pointer to the owner guild.
|
|
||||||
@retval Reserved region start address. 0 if this region does not exist.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINT64
|
|
||||||
GetFspReservedMemoryFromGuid (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT64 *Length,
|
|
||||||
EFI_GUID *OwnerGuid
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_PEI_HOB_POINTERS Hob;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the HOB list for processing
|
|
||||||
*/
|
|
||||||
Hob.Raw = (VOID *)HobListPtr;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Collect memory ranges
|
|
||||||
*/
|
|
||||||
while (!END_OF_HOB_LIST(Hob.Raw)) {
|
|
||||||
if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
|
|
||||||
if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED) {
|
|
||||||
if (CompareGuid(&Hob.ResourceDescriptor->Owner, OwnerGuid)) {
|
|
||||||
if (Length) {
|
|
||||||
*Length = (UINT32) (Hob.ResourceDescriptor->ResourceLength);
|
|
||||||
}
|
|
||||||
return (UINT64)(Hob.ResourceDescriptor->PhysicalStart);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Hob.Raw = GET_NEXT_HOB(Hob.Raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function retrieves the TSEG reserved normal memory.
|
|
||||||
|
|
||||||
@param HobListPtr A HOB list pointer.
|
|
||||||
@param Length A pointer to the TSEG reserved memory length buffer. If the GUID HOB is
|
|
||||||
located, the length will be updated.
|
|
||||||
@param Guid A pointer to owner HOB GUID.
|
|
||||||
@retval NULL Failed to find the TSEG reserved memory.
|
|
||||||
@retval others TSEG reserved memory base.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINT32
|
|
||||||
GetTsegReservedMemory (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length
|
|
||||||
)
|
|
||||||
{
|
|
||||||
const EFI_GUID TsegOwnerHobGuid = FSP_HOB_RESOURCE_OWNER_TSEG_GUID;
|
|
||||||
UINT64 Length64;
|
|
||||||
UINT32 Base;
|
|
||||||
|
|
||||||
Base = (UINT32)GetFspReservedMemoryFromGuid (HobListPtr, &Length64, (EFI_GUID *)&TsegOwnerHobGuid);
|
|
||||||
if ((Length != 0) && (Base != 0)) {
|
|
||||||
*Length = (UINT32)Length64;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Base;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function retrieves the FSP reserved normal memory.
|
|
||||||
|
|
||||||
@param HobListPtr A HOB list pointer.
|
|
||||||
@param Length A pointer to the FSP reserved memory length buffer. If the GUID HOB is
|
|
||||||
located, the length will be updated.
|
|
||||||
@param Guid A pointer to owner HOB GUID.
|
|
||||||
@retval NULL Failed to find the FSP reserved memory.
|
|
||||||
@retval others FSP reserved memory base.
|
|
||||||
|
|
||||||
**/
|
|
||||||
UINT32
|
|
||||||
GetFspReservedMemory (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length
|
|
||||||
)
|
|
||||||
{
|
|
||||||
const EFI_GUID FspOwnerHobGuid = FSP_HOB_RESOURCE_OWNER_FSP_GUID;
|
|
||||||
UINT64 Length64;
|
|
||||||
UINT32 Base;
|
|
||||||
|
|
||||||
Base = (UINT32)GetFspReservedMemoryFromGuid (HobListPtr, &Length64, (EFI_GUID *)&FspOwnerHobGuid);
|
|
||||||
if ((Length != 0) && (Base != 0)) {
|
|
||||||
*Length = (UINT32)Length64;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Base;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function retrieves a GUIDed HOB data buffer and size.
|
|
||||||
|
|
||||||
@param HobListPtr A HOB list pointer.
|
|
||||||
@param Length A pointer to the GUID HOB data buffer length. If the
|
|
||||||
GUID HOB is located, the length will be updated.
|
|
||||||
@param Guid A pointer to HOB GUID.
|
|
||||||
@retval NULL Failed to find the GUID HOB.
|
|
||||||
@retval others GUID HOB data buffer pointer.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID *
|
|
||||||
GetGuidHobDataBuffer (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length,
|
|
||||||
EFI_GUID *Guid
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UINT8 *GuidHob;
|
|
||||||
|
|
||||||
/* FSP NVS DATA HOB */
|
|
||||||
GuidHob = GetNextGuidHob(Guid, HobListPtr);
|
|
||||||
if (GuidHob == NULL) {
|
|
||||||
return NULL;
|
|
||||||
} else {
|
|
||||||
if (Length) {
|
|
||||||
*Length = GET_GUID_HOB_DATA_SIZE (GuidHob);
|
|
||||||
}
|
|
||||||
return GET_GUID_HOB_DATA (GuidHob);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function retrieves FSP Non-volatile Storage HOB buffer and size.
|
|
||||||
|
|
||||||
@param HobListPtr A HOB list pointer.
|
|
||||||
@param Length A pointer to the NVS data buffer length. If the FSP NVS
|
|
||||||
HOB is located, the length will be updated.
|
|
||||||
@retval NULL Failed to find the NVS HOB.
|
|
||||||
@retval others FSP NVS data buffer pointer.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID *
|
|
||||||
GetFspNvsDataBuffer (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length
|
|
||||||
)
|
|
||||||
{
|
|
||||||
const EFI_GUID FspNvsHobGuid = FSP_NON_VOLATILE_STORAGE_HOB_GUID;
|
|
||||||
return GetGuidHobDataBuffer (HobListPtr, Length, (EFI_GUID *)&FspNvsHobGuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function retrieves Bootloader temporary stack buffer and size.
|
|
||||||
|
|
||||||
@param HobListPtr A HOB list pointer.
|
|
||||||
@param Length A pointer to the Bootloader temporary stack length.
|
|
||||||
If the HOB is located, the length will be updated.
|
|
||||||
@retval NULL Failed to find the Bootloader temporary stack HOB.
|
|
||||||
@retval others Bootloader temporary stackbuffer pointer.
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID *
|
|
||||||
GetBootloaderTempMemoryBuffer (
|
|
||||||
CONST VOID *HobListPtr,
|
|
||||||
UINT32 *Length
|
|
||||||
)
|
|
||||||
{
|
|
||||||
const EFI_GUID FspBootloaderTemporaryMemoryHobGuid = FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID;
|
|
||||||
return GetGuidHobDataBuffer (HobListPtr, Length, (EFI_GUID *)&FspBootloaderTemporaryMemoryHobGuid);
|
|
||||||
}
|
|
Loading…
Reference in New Issue