mirror of https://github.com/acidanthera/audk.git
*BaseSmbusLib: (new version)
Complete function header, detailed description, ASSERT()s & pass smoke test in MRC of Lakeport package by replacing Smbus PPI. *Device Patch Lib Fix a bug in AppendDevicePathNode() (Solve Track #44 in Remodel PVCS). The original logic failed if the first device path was NULL. *Performance Lib Add PeiPerformanceHob & Performance protocol in spd file in EdkModule Package (Solve Tracker #41, #42 in Remodel PVCS). *Hob Lib Add detailed description for each Hob function. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@126 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
cfb190d9f4
commit
5f10fa0140
|
@ -469,6 +469,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
<C_Name>gEfiCompatibleMemoryTestedGuid</C_Name>
|
||||
<Guid>0x64c475ef, 0x344b, 0x492c, 0x93, 0xad, 0xab, 0x9e, 0xb4, 0x39, 0x50, 0x4</Guid>
|
||||
</Entry>
|
||||
<Entry Name="PeiPerformanceHob">
|
||||
<C_Name>gPeiPerformanceHobGuid</C_Name>
|
||||
<Guid>0xec4df5af, 0x4395, 0x4cc9, 0x94, 0xde, 0x77, 0x50, 0x6d, 0x12, 0xc7, 0xb8</Guid>
|
||||
</Entry>
|
||||
</GuidDeclarations>
|
||||
<ProtocolDeclarations>
|
||||
<Entry Name="CustomizedDecompress">
|
||||
|
@ -571,6 +575,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
<C_Name>gEfiIsaAcpiProtocolGuid</C_Name>
|
||||
<Guid>0x64a892dc, 0x5561, 0x4536, 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55</Guid>
|
||||
</Entry>
|
||||
<Entry Name="Performance">
|
||||
<C_Name>gPerformanceProtocolGuid</C_Name>
|
||||
<Guid>0x76b6bdfa, 0x2acd, 0x4462, 0x9E, 0x3F, 0xcb, 0x58, 0xC9, 0x69, 0xd9, 0x37</Guid>
|
||||
</Entry>
|
||||
</ProtocolDeclarations>
|
||||
<PpiDeclarations>
|
||||
<Entry Name="PeiInMemory">
|
||||
|
|
|
@ -74,24 +74,23 @@ AppendDevicePath (
|
|||
;
|
||||
|
||||
/**
|
||||
This function appends the device path node SecondDevicePath
|
||||
to every device path instance in FirstDevicePath.
|
||||
This function appends the device path node SecondDevicePath
|
||||
to every device path instance in FirstDevicePath.
|
||||
|
||||
@param FirstDevicePath A pointer to a device path data structure.
|
||||
|
||||
@param SecondDevicePath A pointer to a single device path node.
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
|
||||
@param DevicePathNode A pointer to a single device path node.
|
||||
|
||||
@return
|
||||
A pointer to the new device path.
|
||||
If there is not enough temporary pool memory available to complete this function,
|
||||
then NULL is returned.
|
||||
@return A pointer to the new device path.
|
||||
If there is not enough temporary pool memory available to complete this function,
|
||||
then NULL is returned.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
AppendDevicePathNode (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *FirstDevicePath,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *SecondDevicePath
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode
|
||||
)
|
||||
;
|
||||
|
||||
|
|
|
@ -18,9 +18,11 @@
|
|||
#define __HOB_LIB_H__
|
||||
|
||||
/**
|
||||
Returns the pointer to the HOB list.
|
||||
Returns the pointer to the HOB list.
|
||||
|
||||
@return The pointer to the HOB list.
|
||||
This function returns the pointer to first HOB in the list.
|
||||
|
||||
@return The pointer to the HOB list.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
|
@ -31,13 +33,19 @@ GetHobList (
|
|||
;
|
||||
|
||||
/**
|
||||
This function searches the first instance of a HOB type from the starting HOB pointer.
|
||||
If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
|
||||
Returns the next instance of a HOB type from the starting HOB.
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param HobStart The starting HOB pointer to search from.
|
||||
This function searches the first instance of a HOB type from the starting HOB pointer.
|
||||
If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
|
||||
In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
|
||||
unconditionally: it returns HobStart back if HobStart itself meets the requirement;
|
||||
caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
|
||||
If HobStart is NULL, then ASSERT().
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
@param Type The HOB type to return.
|
||||
@param HobStart The starting HOB pointer to search from.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
|
@ -49,12 +57,14 @@ GetNextHob (
|
|||
;
|
||||
|
||||
/**
|
||||
This function searches the first instance of a HOB type among the whole HOB list.
|
||||
If there does not exist such HOB type in the HOB list, it will return NULL.
|
||||
Returns the first instance of a HOB type among the whole HOB list.
|
||||
|
||||
@param Type The HOB type to return.
|
||||
This function searches the first instance of a HOB type among the whole HOB list.
|
||||
If there does not exist such HOB type in the HOB list, it will return NULL.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
@param Type The HOB type to return.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
|
@ -65,15 +75,22 @@ GetFirstHob (
|
|||
;
|
||||
|
||||
/**
|
||||
This function searches the first instance of a HOB from the starting HOB pointer.
|
||||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
This function searches the first instance of a HOB from the starting HOB pointer.
|
||||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
|
||||
to extract the data section and its size info respectively.
|
||||
In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
|
||||
unconditionally: it returns HobStart back if HobStart itself meets the requirement;
|
||||
caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If HobStart is NULL, then ASSERT().
|
||||
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param HobStart A pointer to a Guid.
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param HobStart A pointer to a Guid.
|
||||
|
||||
@return The next instance of the matched GUID HOB from the starting HOB.
|
||||
@return The next instance of the matched GUID HOB from the starting HOB.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
|
@ -85,14 +102,17 @@ GetNextGuidHob (
|
|||
;
|
||||
|
||||
/**
|
||||
This function searches the first instance of a HOB among the whole HOB list.
|
||||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
This function searches the first instance of a HOB among the whole HOB list.
|
||||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
|
||||
to extract the data section and its size info respectively.
|
||||
If Guid is NULL, then ASSERT().
|
||||
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
|
||||
@return The first instance of the matched GUID HOB among the whole HOB list.
|
||||
@return The first instance of the matched GUID HOB among the whole HOB list.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
|
@ -103,12 +123,18 @@ GetFirstGuidHob (
|
|||
;
|
||||
|
||||
/**
|
||||
This function builds a HOB for a loaded PE32 module.
|
||||
Builds a HOB for a loaded PE32 module.
|
||||
|
||||
@param ModuleName The GUID File Name of the module.
|
||||
@param MemoryAllocationModule The 64 bit physical address of the module.
|
||||
@param ModuleLength The length of the module in bytes.
|
||||
@param EntryPoint The 64 bit physical address of the module’s entry point.
|
||||
This function builds a HOB for a loaded PE32 module.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If ModuleName is NULL, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param ModuleName The GUID File Name of the module.
|
||||
@param MemoryAllocationModule The 64 bit physical address of the module.
|
||||
@param ModuleLength The length of the module in bytes.
|
||||
@param EntryPoint The 64 bit physical address of the module’s entry point.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -122,12 +148,17 @@ BuildModuleHob (
|
|||
;
|
||||
|
||||
/**
|
||||
Builds a HOB that describes a chunk of system memory.
|
||||
Builds a HOB that describes a chunk of system memory.
|
||||
|
||||
@param ResourceType The type of resource described by this HOB.
|
||||
@param ResourceAttribute The resource attributes of the memory described by this HOB.
|
||||
@param PhysicalStart The 64 bit physical address of memory described by this HOB.
|
||||
@param NumberOfBytes The length of the memory described by this HOB in bytes.
|
||||
This function builds a HOB that describes a chunk of system memory.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param ResourceType The type of resource described by this HOB.
|
||||
@param ResourceAttribute The resource attributes of the memory described by this HOB.
|
||||
@param PhysicalStart The 64 bit physical address of memory described by this HOB.
|
||||
@param NumberOfBytes The length of the memory described by this HOB in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -141,13 +172,21 @@ BuildResourceDescriptorHob (
|
|||
;
|
||||
|
||||
/**
|
||||
This function builds a customized HOB tagged with a GUID for identification
|
||||
and returns the start address of GUID HOB data so that caller can fill the customized data.
|
||||
Builds a GUID HOB with a certain data length.
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
This function builds a customized HOB tagged with a GUID for identification
|
||||
and returns the start address of GUID HOB data so that caller can fill the customized data.
|
||||
The HOB Header and Name field is already stripped.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
|
@ -159,14 +198,23 @@ BuildGuidHob (
|
|||
;
|
||||
|
||||
/**
|
||||
This function builds a customized HOB tagged with a GUID for identification,
|
||||
copies the input data to the HOB data field, and returns the start address of GUID HOB data.
|
||||
Copies a data buffer to a newly-built HOB.
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param Data The data to be copied into the data field of the GUID HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
This function builds a customized HOB tagged with a GUID for identification,
|
||||
copies the input data to the HOB data field and returns the start address of the GUID HOB data.
|
||||
The HOB Header and Name field is already stripped.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If Data is NULL and DataLength > 0, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param Data The data to be copied into the data field of the GUID HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
|
@ -179,10 +227,15 @@ BuildGuidDataHob (
|
|||
;
|
||||
|
||||
/**
|
||||
Builds a Firmware Volume HOB.
|
||||
Builds a Firmware Volume HOB.
|
||||
|
||||
@param BaseAddress The base address of the Firmware Volume.
|
||||
@param Length The size of the Firmware Volume in bytes.
|
||||
This function builds a Firmware Volume HOB.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The base address of the Firmware Volume.
|
||||
@param Length The size of the Firmware Volume in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -194,10 +247,15 @@ BuildFvHob (
|
|||
;
|
||||
|
||||
/**
|
||||
Builds a Capsule Volume HOB.
|
||||
Builds a Capsule Volume HOB.
|
||||
|
||||
@param BaseAddress The base address of the Capsule Volume.
|
||||
@param Length The size of the Capsule Volume in bytes.
|
||||
This function builds a Capsule Volume HOB.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The base address of the Capsule Volume.
|
||||
@param Length The size of the Capsule Volume in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -209,10 +267,15 @@ BuildCvHob (
|
|||
;
|
||||
|
||||
/**
|
||||
Builds a HOB for the CPU.
|
||||
Builds a HOB for the CPU.
|
||||
|
||||
@param SizeOfMemorySpace The maximum physical memory addressability of the processor.
|
||||
@param SizeOfIoSpace The maximum physical I/O addressability of the processor.
|
||||
This function builds a HOB for the CPU.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param SizeOfMemorySpace The maximum physical memory addressability of the processor.
|
||||
@param SizeOfIoSpace The maximum physical I/O addressability of the processor.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -224,10 +287,15 @@ BuildCpuHob (
|
|||
;
|
||||
|
||||
/**
|
||||
Builds a HOB for the Stack.
|
||||
Builds a HOB for the Stack.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the Stack.
|
||||
@param Length The length of the stack in bytes.
|
||||
This function builds a HOB for the stack.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the Stack.
|
||||
@param Length The length of the stack in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -239,11 +307,16 @@ BuildStackHob (
|
|||
;
|
||||
|
||||
/**
|
||||
Builds a HOB for the BSP store.
|
||||
Builds a HOB for the BSP store.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the BSP.
|
||||
@param Length The length of the BSP store in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
This function builds a HOB for BSP store.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the BSP.
|
||||
@param Length The length of the BSP store in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -256,11 +329,16 @@ BuildBspStoreHob (
|
|||
;
|
||||
|
||||
/**
|
||||
Builds a HOB for the memory allocation.
|
||||
Builds a HOB for the memory allocation.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the memory.
|
||||
@param Length The length of the memory allocation in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
This function builds a HOB for the memory allocation.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the memory.
|
||||
@param Length The length of the memory allocation in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
|
|
@ -32,7 +32,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
<Updated>2006-03-19 15:17</Updated>
|
||||
</MsaLibHeader>
|
||||
<LibraryClassDefinitions>
|
||||
<LibraryClass Usage="ALWAYS_PRODUCED">SmBusLib</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_PRODUCED">SmbusLib</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">BaseLib</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">IoLib</LibraryClass>
|
||||
<LibraryClass Usage="ALWAYS_CONSUMED">PciLib</LibraryClass>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,120 @@
|
|||
/** @file
|
||||
Base SMBUS library implementation built upon I/O library.
|
||||
|
||||
Copyright (c) 2006, Intel Corporation<BR>
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name: SmbusLib.h
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __SMBUS_LIB_REGISTER_H
|
||||
#define __SMBUS_LIB_REGISTER_H
|
||||
|
||||
#define SMBUS_R_HST_STS 0x00 // Host Status Register
|
||||
#define SMBUS_B_HOST_BUSY 0x01 // RO
|
||||
#define SMBUS_B_INTR 0x02 // R/WC
|
||||
#define SMBUS_B_DEV_ERR 0x04 // R/WC
|
||||
#define SMBUS_B_BUS_ERR 0x08 // R/WC
|
||||
#define SMBUS_B_FAILED 0x10 // R/WC
|
||||
#define SMBUS_B_SMBALERT_STS 0x20 // R/WC
|
||||
#define SMBUS_B_INUSE_STS 0x40 // R/WC
|
||||
#define SMBUS_B_BYTE_DONE_STS 0x80 // R/WC
|
||||
#define SMBUS_B_ERROR (SMBUS_B_DEV_ERR | SMBUS_B_BUS_ERR | SMBUS_B_FAILED)
|
||||
#define SMBUS_B_HSTS_ALL 0xFF // R/WC
|
||||
|
||||
|
||||
#define SMBUS_R_HST_CTL 0x02 // Host Control Register R/W
|
||||
#define SMBUS_B_INTREN 0x01 // RW
|
||||
#define SMBUS_B_KILL 0x02 // RW
|
||||
#define SMBUS_B_CMD (7 << 2) // RW
|
||||
#define SMBUS_V_SMB_CMD_QUICK (0 << 2)
|
||||
#define SMBUS_V_SMB_CMD_BYTE (1 << 2)
|
||||
#define SMBUS_V_SMB_CMD_BYTE_DATA (2 << 2)
|
||||
#define SMBUS_V_SMB_CMD_WORD_DATA (3 << 2)
|
||||
#define SMBUS_V_SMB_CMD_PROCESS_CALL (4 << 2)
|
||||
#define SMBUS_V_SMB_CMD_BLOCK (5 << 2)
|
||||
#define SMBUS_V_SMB_CMD_IIC_READ (6 << 2)
|
||||
#define SMBUS_V_SMB_CMD_BLOCK_PROCESS (7 << 2)
|
||||
#define SMBUS_B_LAST_BYTE 0x20 // WO
|
||||
#define SMBUS_B_START 0x40 // WO
|
||||
#define SMBUS_B_PEC_EN 0x80 // RW
|
||||
|
||||
|
||||
#define SMBUS_R_HST_CMD 0x03 // Host Command Register R/W
|
||||
|
||||
|
||||
#define SMBUS_R_XMIT_SLVA 0x04 // Transmit Slave Address Register R/W
|
||||
#define SMBUS_B_RW 0x01 // RW
|
||||
#define SMBUS_B_READ 0x01 // RW
|
||||
#define SMBUS_B_WRITE 0x00 // RW
|
||||
#define SMBUS_B_ADDRESS 0xFE // RW
|
||||
|
||||
|
||||
#define SMBUS_R_HST_D0 0x05 // Data 0 Register R/W
|
||||
|
||||
|
||||
#define SMBUS_R_HST_D1 0x06 // Data 1 Register R/W
|
||||
|
||||
|
||||
#define SMBUS_R_HOST_BLOCK_DB 0x07 // Host Block Data Register R/W
|
||||
|
||||
|
||||
#define SMBUS_R_PEC 0x08 // Packet Error Check Data Register R/W
|
||||
|
||||
|
||||
#define SMBUS_R_RCV_SLVA 0x09 // Receive Slave Address Register R/W
|
||||
#define SMBUS_B_SLAVE_ADDR 0x7F // RW
|
||||
|
||||
|
||||
#define SMBUS_R_SLV_DATA 0x0A // Receive Slave Data Register R/W
|
||||
|
||||
|
||||
#define SMBUS_R_AUX_STS 0x0C // Auxiliary Status Register R/WC
|
||||
#define SMBUS_B_CRCE 0x01 // R/WC
|
||||
|
||||
|
||||
#define SMBUS_R_AUX_CTL 0x0D // Auxiliary Control Register R/W
|
||||
#define SMBUS_B_AAC 0x01 // R/W
|
||||
#define SMBUS_B_E32B 0x02 // R/W
|
||||
|
||||
|
||||
#define SMBUS_R_SMLINK_PIN_CTL 0x0E // SMLINK Pin Control Register R/W
|
||||
#define SMBUS_B_SMLINK0_CUR_STS 0x01 // RO
|
||||
#define SMBUS_B_SMLINK1_CUR_STS 0x02 // RO
|
||||
#define SMBUS_B_SMLINK_CLK_CTL 0x04 // RW
|
||||
|
||||
|
||||
#define SMBUS_R_SMBUS_PIN_CTL 0x0F // SMBus Pin Control Register R/W
|
||||
#define SMBUS_B_SMBCLK_CUR_STS 0x01 // RO
|
||||
#define SMBUS_B_SMBDATA_CUR_STS 0x02 // RO
|
||||
#define SMBUS_B_SMBCLK_CTL 0x04 // RW
|
||||
|
||||
|
||||
#define SMBUS_R_SLV_STS 0x10 // Slave Status Register R/WC
|
||||
#define SMBUS_B_HOST_NOTIFY_STS 0x01 // R/WC
|
||||
|
||||
|
||||
#define SMBUS_R_SLV_CMD 0x11 // Slave Command Register R/W
|
||||
#define SMBUS_B_HOST_NOTIFY_INTREN 0x01 // R/W
|
||||
#define SMBUS_B_HOST_NOTIFY_WKEN 0x02 // R/W
|
||||
#define SMBUS_B_SMBALERT_DIS 0x04 // R/W
|
||||
|
||||
|
||||
#define SMBUS_R_NOTIFY_DADDR 0x14 // Notify Device Address Register RO
|
||||
#define SMBUS_B_DEVICE_ADDRESS 0xFE // RO
|
||||
|
||||
|
||||
#define SMBUS_R_NOTIFY_DLOW 0x16 // Notify Data Low Byte Register RO
|
||||
|
||||
|
||||
#define SMBUS_R_NOTIFY_DHIGH 0x17 // Notify Data High Byte Register RO
|
||||
|
||||
|
||||
#endif
|
|
@ -18,9 +18,12 @@
|
|||
|
||||
extern VOID *gHobList;
|
||||
|
||||
|
||||
/**
|
||||
Returns the pointer to the HOB list.
|
||||
|
||||
This function returns the pointer to first HOB in the list.
|
||||
|
||||
@return The pointer to the HOB list.
|
||||
|
||||
**/
|
||||
|
@ -34,11 +37,17 @@ GetHobList (
|
|||
}
|
||||
|
||||
/**
|
||||
This function searches the first instance of a HOB type from the starting HOB pointer.
|
||||
If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
|
||||
Returns the next instance of a HOB type from the starting HOB.
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param HobStart The starting HOB pointer to search from.
|
||||
This function searches the first instance of a HOB type from the starting HOB pointer.
|
||||
If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
|
||||
In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
|
||||
unconditionally: it returns HobStart back if HobStart itself meets the requirement;
|
||||
caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
|
||||
If HobStart is NULL, then ASSERT().
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param HobStart The starting HOB pointer to search from.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
|
||||
|
@ -56,7 +65,7 @@ GetNextHob (
|
|||
|
||||
Hob.Raw = (UINT8 *) HobStart;
|
||||
//
|
||||
// Parse the HOB list, stop if end of list or matching type found.
|
||||
// Parse the HOB list until end of list or matching type is found.
|
||||
//
|
||||
while (!END_OF_HOB_LIST (Hob)) {
|
||||
if (Hob.Header->HobType == Type) {
|
||||
|
@ -68,10 +77,12 @@ GetNextHob (
|
|||
}
|
||||
|
||||
/**
|
||||
Returns the first instance of a HOB type among the whole HOB list.
|
||||
|
||||
This function searches the first instance of a HOB type among the whole HOB list.
|
||||
If there does not exist such HOB type in the HOB list, it will return NULL.
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param Type The HOB type to return.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
|
||||
|
@ -93,9 +104,16 @@ GetFirstHob (
|
|||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
|
||||
to extract the data section and its size info respectively.
|
||||
In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
|
||||
unconditionally: it returns HobStart back if HobStart itself meets the requirement;
|
||||
caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If HobStart is NULL, then ASSERT().
|
||||
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param HobStart A pointer to a Guid.
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param HobStart A pointer to a Guid.
|
||||
|
||||
@return The next instance of the matched GUID HOB from the starting HOB.
|
||||
|
||||
|
@ -124,8 +142,11 @@ GetNextGuidHob (
|
|||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
|
||||
to extract the data section and its size info respectively.
|
||||
If Guid is NULL, then ASSERT().
|
||||
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
|
||||
@return The first instance of the matched GUID HOB among the whole HOB list.
|
||||
|
||||
|
@ -143,12 +164,18 @@ GetFirstGuidHob (
|
|||
}
|
||||
|
||||
/**
|
||||
This function builds a HOB for a loaded PE32 module.
|
||||
Builds a HOB for a loaded PE32 module.
|
||||
|
||||
@param ModuleName The GUID File Name of the module.
|
||||
@param MemoryAllocationModule The 64 bit physical address of the module.
|
||||
@param ModuleLength The length of the module in bytes.
|
||||
@param EntryPoint The 64 bit physical address of the module’s entry point.
|
||||
This function builds a HOB for a loaded PE32 module.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If ModuleName is NULL, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param ModuleName The GUID File Name of the module.
|
||||
@param MemoryAllocationModule The 64 bit physical address of the module.
|
||||
@param ModuleLength The length of the module in bytes.
|
||||
@param EntryPoint The 64 bit physical address of the module’s entry point.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -169,10 +196,15 @@ BuildModuleHob (
|
|||
/**
|
||||
Builds a HOB that describes a chunk of system memory.
|
||||
|
||||
@param ResourceType The type of resource described by this HOB.
|
||||
@param ResourceAttribute The resource attributes of the memory described by this HOB.
|
||||
@param PhysicalStart The 64 bit physical address of memory described by this HOB.
|
||||
@param NumberOfBytes The length of the memory described by this HOB in bytes.
|
||||
This function builds a HOB that describes a chunk of system memory.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param ResourceType The type of resource described by this HOB.
|
||||
@param ResourceAttribute The resource attributes of the memory described by this HOB.
|
||||
@param PhysicalStart The 64 bit physical address of memory described by this HOB.
|
||||
@param NumberOfBytes The length of the memory described by this HOB in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -191,11 +223,19 @@ BuildResourceDescriptorHob (
|
|||
}
|
||||
|
||||
/**
|
||||
Builds a GUID HOB with a certain data length.
|
||||
|
||||
This function builds a customized HOB tagged with a GUID for identification
|
||||
and returns the start address of GUID HOB data so that caller can fill the customized data.
|
||||
The HOB Header and Name field is already stripped.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
|
||||
|
@ -215,12 +255,21 @@ BuildGuidHob (
|
|||
}
|
||||
|
||||
/**
|
||||
This function builds a customized HOB tagged with a GUID for identification,
|
||||
copies the input data to the HOB data field, and returns the start address of GUID HOB data.
|
||||
Copies a data buffer to a newly-built HOB.
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param Data The data to be copied into the data field of the GUID HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
This function builds a customized HOB tagged with a GUID for identification,
|
||||
copies the input data to the HOB data field and returns the start address of the GUID HOB data.
|
||||
The HOB Header and Name field is already stripped.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If Data is NULL and DataLength > 0, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param Data The data to be copied into the data field of the GUID HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
|
||||
|
@ -243,8 +292,13 @@ BuildGuidDataHob (
|
|||
/**
|
||||
Builds a Firmware Volume HOB.
|
||||
|
||||
@param BaseAddress The base address of the Firmware Volume.
|
||||
@param Length The size of the Firmware Volume in bytes.
|
||||
This function builds a Firmware Volume HOB.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The base address of the Firmware Volume.
|
||||
@param Length The size of the Firmware Volume in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -263,8 +317,13 @@ BuildFvHob (
|
|||
/**
|
||||
Builds a Capsule Volume HOB.
|
||||
|
||||
@param BaseAddress The base address of the Capsule Volume.
|
||||
@param Length The size of the Capsule Volume in bytes.
|
||||
This function builds a Capsule Volume HOB.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The base address of the Capsule Volume.
|
||||
@param Length The size of the Capsule Volume in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -283,8 +342,13 @@ BuildCvHob (
|
|||
/**
|
||||
Builds a HOB for the CPU.
|
||||
|
||||
@param SizeOfMemorySpace The maximum physical memory addressability of the processor.
|
||||
@param SizeOfIoSpace The maximum physical I/O addressability of the processor.
|
||||
This function builds a HOB for the CPU.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param SizeOfMemorySpace The maximum physical memory addressability of the processor.
|
||||
@param SizeOfIoSpace The maximum physical I/O addressability of the processor.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -303,8 +367,13 @@ BuildCpuHob (
|
|||
/**
|
||||
Builds a HOB for the Stack.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the Stack.
|
||||
@param Length The length of the stack in bytes.
|
||||
This function builds a HOB for the stack.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the Stack.
|
||||
@param Length The length of the stack in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -323,9 +392,14 @@ BuildStackHob (
|
|||
/**
|
||||
Builds a HOB for the BSP store.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the BSP.
|
||||
@param Length The length of the BSP store in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
This function builds a HOB for BSP store.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the BSP.
|
||||
@param Length The length of the BSP store in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -345,9 +419,14 @@ BuildBspStoreHob (
|
|||
/**
|
||||
Builds a HOB for the memory allocation.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the memory.
|
||||
@param Length The length of the memory allocation in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
This function builds a HOB for the memory allocation.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the memory.
|
||||
@param Length The length of the memory allocation in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
|
|
@ -48,9 +48,9 @@ HobLibConstructor (
|
|||
/**
|
||||
Returns the pointer to the HOB list.
|
||||
|
||||
None.
|
||||
This function returns the pointer to first HOB in the list.
|
||||
|
||||
The pointer to the HOB list.
|
||||
@return The pointer to the HOB list.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
|
@ -63,11 +63,17 @@ GetHobList (
|
|||
}
|
||||
|
||||
/**
|
||||
This function searches the first instance of a HOB type from the starting HOB pointer.
|
||||
If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
|
||||
Returns the next instance of a HOB type from the starting HOB.
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param HobStart The starting HOB pointer to search from.
|
||||
This function searches the first instance of a HOB type from the starting HOB pointer.
|
||||
If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
|
||||
In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
|
||||
unconditionally: it returns HobStart back if HobStart itself meets the requirement;
|
||||
caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
|
||||
If HobStart is NULL, then ASSERT().
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param HobStart The starting HOB pointer to search from.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
|
||||
|
@ -85,7 +91,7 @@ GetNextHob (
|
|||
|
||||
Hob.Raw = (UINT8 *) HobStart;
|
||||
//
|
||||
// Parse the HOB list, stop if end of list or matching type found.
|
||||
// Parse the HOB list until end of list or matching type is found.
|
||||
//
|
||||
while (!END_OF_HOB_LIST (Hob)) {
|
||||
if (Hob.Header->HobType == Type) {
|
||||
|
@ -97,10 +103,12 @@ GetNextHob (
|
|||
}
|
||||
|
||||
/**
|
||||
Returns the first instance of a HOB type among the whole HOB list.
|
||||
|
||||
This function searches the first instance of a HOB type among the whole HOB list.
|
||||
If there does not exist such HOB type in the HOB list, it will return NULL.
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param Type The HOB type to return.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
|
||||
|
@ -122,9 +130,16 @@ GetFirstHob (
|
|||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
|
||||
to extract the data section and its size info respectively.
|
||||
In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
|
||||
unconditionally: it returns HobStart back if HobStart itself meets the requirement;
|
||||
caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If HobStart is NULL, then ASSERT().
|
||||
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param HobStart A pointer to a Guid.
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param HobStart A pointer to a Guid.
|
||||
|
||||
@return The next instance of the matched GUID HOB from the starting HOB.
|
||||
|
||||
|
@ -153,8 +168,11 @@ GetNextGuidHob (
|
|||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
|
||||
to extract the data section and its size info respectively.
|
||||
If Guid is NULL, then ASSERT().
|
||||
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
|
||||
@return The first instance of the matched GUID HOB among the whole HOB list.
|
||||
|
||||
|
@ -172,12 +190,18 @@ GetFirstGuidHob (
|
|||
}
|
||||
|
||||
/**
|
||||
This function builds a HOB for a loaded PE32 module.
|
||||
Builds a HOB for a loaded PE32 module.
|
||||
|
||||
@param ModuleName The GUID File Name of the module.
|
||||
@param MemoryAllocationModule The 64 bit physical address of the module.
|
||||
@param ModuleLength The length of the module in bytes.
|
||||
@param EntryPoint The 64 bit physical address of the module’s entry point.
|
||||
This function builds a HOB for a loaded PE32 module.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If ModuleName is NULL, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param ModuleName The GUID File Name of the module.
|
||||
@param MemoryAllocationModule The 64 bit physical address of the module.
|
||||
@param ModuleLength The length of the module in bytes.
|
||||
@param EntryPoint The 64 bit physical address of the module’s entry point.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -198,10 +222,15 @@ BuildModuleHob (
|
|||
/**
|
||||
Builds a HOB that describes a chunk of system memory.
|
||||
|
||||
@param ResourceType The type of resource described by this HOB.
|
||||
@param ResourceAttribute The resource attributes of the memory described by this HOB.
|
||||
@param PhysicalStart The 64 bit physical address of memory described by this HOB.
|
||||
@param NumberOfBytes The length of the memory described by this HOB in bytes.
|
||||
This function builds a HOB that describes a chunk of system memory.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param ResourceType The type of resource described by this HOB.
|
||||
@param ResourceAttribute The resource attributes of the memory described by this HOB.
|
||||
@param PhysicalStart The 64 bit physical address of memory described by this HOB.
|
||||
@param NumberOfBytes The length of the memory described by this HOB in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -220,11 +249,19 @@ BuildResourceDescriptorHob (
|
|||
}
|
||||
|
||||
/**
|
||||
Builds a GUID HOB with a certain data length.
|
||||
|
||||
This function builds a customized HOB tagged with a GUID for identification
|
||||
and returns the start address of GUID HOB data so that caller can fill the customized data.
|
||||
The HOB Header and Name field is already stripped.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
|
||||
|
@ -244,12 +281,21 @@ BuildGuidHob (
|
|||
}
|
||||
|
||||
/**
|
||||
This function builds a customized HOB tagged with a GUID for identification,
|
||||
copies the input data to the HOB data field, and returns the start address of GUID HOB data.
|
||||
Copies a data buffer to a newly-built HOB.
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param Data The data to be copied into the data field of the GUID HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
This function builds a customized HOB tagged with a GUID for identification,
|
||||
copies the input data to the HOB data field and returns the start address of the GUID HOB data.
|
||||
The HOB Header and Name field is already stripped.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If Data is NULL and DataLength > 0, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param Data The data to be copied into the data field of the GUID HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
|
||||
|
@ -272,8 +318,13 @@ BuildGuidDataHob (
|
|||
/**
|
||||
Builds a Firmware Volume HOB.
|
||||
|
||||
@param BaseAddress The base address of the Firmware Volume.
|
||||
@param Length The size of the Firmware Volume in bytes.
|
||||
This function builds a Firmware Volume HOB.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The base address of the Firmware Volume.
|
||||
@param Length The size of the Firmware Volume in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -292,8 +343,13 @@ BuildFvHob (
|
|||
/**
|
||||
Builds a Capsule Volume HOB.
|
||||
|
||||
@param BaseAddress The base address of the Capsule Volume.
|
||||
@param Length The size of the Capsule Volume in bytes.
|
||||
This function builds a Capsule Volume HOB.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The base address of the Capsule Volume.
|
||||
@param Length The size of the Capsule Volume in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -312,8 +368,13 @@ BuildCvHob (
|
|||
/**
|
||||
Builds a HOB for the CPU.
|
||||
|
||||
@param SizeOfMemorySpace The maximum physical memory addressability of the processor.
|
||||
@param SizeOfIoSpace The maximum physical I/O addressability of the processor.
|
||||
This function builds a HOB for the CPU.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param SizeOfMemorySpace The maximum physical memory addressability of the processor.
|
||||
@param SizeOfIoSpace The maximum physical I/O addressability of the processor.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -332,8 +393,13 @@ BuildCpuHob (
|
|||
/**
|
||||
Builds a HOB for the Stack.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the Stack.
|
||||
@param Length The length of the stack in bytes.
|
||||
This function builds a HOB for the stack.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the Stack.
|
||||
@param Length The length of the stack in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -352,9 +418,14 @@ BuildStackHob (
|
|||
/**
|
||||
Builds a HOB for the BSP store.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the BSP.
|
||||
@param Length The length of the BSP store in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
This function builds a HOB for BSP store.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the BSP.
|
||||
@param Length The length of the BSP store in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -374,9 +445,14 @@ BuildBspStoreHob (
|
|||
/**
|
||||
Builds a HOB for the memory allocation.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the memory.
|
||||
@param Length The length of the memory allocation in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
This function builds a HOB for the memory allocation.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the memory.
|
||||
@param Length The length of the memory allocation in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
/**
|
||||
Returns the pointer to the HOB list.
|
||||
|
||||
None.
|
||||
This function returns the pointer to first HOB in the list.
|
||||
|
||||
The pointer to the HOB list.
|
||||
@return The pointer to the HOB list.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
|
@ -41,11 +41,17 @@ GetHobList (
|
|||
}
|
||||
|
||||
/**
|
||||
This function searches the first instance of a HOB type from the starting HOB pointer.
|
||||
If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
|
||||
Returns the next instance of a HOB type from the starting HOB.
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param HobStart The starting HOB pointer to search from.
|
||||
This function searches the first instance of a HOB type from the starting HOB pointer.
|
||||
If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
|
||||
In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
|
||||
unconditionally: it returns HobStart back if HobStart itself meets the requirement;
|
||||
caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
|
||||
If HobStart is NULL, then ASSERT().
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param HobStart The starting HOB pointer to search from.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
|
||||
|
@ -63,7 +69,7 @@ GetNextHob (
|
|||
|
||||
Hob.Raw = (UINT8 *) HobStart;
|
||||
//
|
||||
// Parse the HOB list, stop if end of list or matching type found.
|
||||
// Parse the HOB list until end of list or matching type is found.
|
||||
//
|
||||
while (!END_OF_HOB_LIST (Hob)) {
|
||||
if (Hob.Header->HobType == Type) {
|
||||
|
@ -75,10 +81,12 @@ GetNextHob (
|
|||
}
|
||||
|
||||
/**
|
||||
Returns the first instance of a HOB type among the whole HOB list.
|
||||
|
||||
This function searches the first instance of a HOB type among the whole HOB list.
|
||||
If there does not exist such HOB type in the HOB list, it will return NULL.
|
||||
|
||||
@param Type The HOB type to return.
|
||||
@param Type The HOB type to return.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
|
||||
|
@ -100,9 +108,16 @@ GetFirstHob (
|
|||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
|
||||
to extract the data section and its size info respectively.
|
||||
In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
|
||||
unconditionally: it returns HobStart back if HobStart itself meets the requirement;
|
||||
caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If HobStart is NULL, then ASSERT().
|
||||
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param HobStart A pointer to a Guid.
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param HobStart A pointer to a Guid.
|
||||
|
||||
@return The next instance of the matched GUID HOB from the starting HOB.
|
||||
|
||||
|
@ -131,8 +146,11 @@ GetNextGuidHob (
|
|||
Such HOB should satisfy two conditions:
|
||||
its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
|
||||
If there does not exist such HOB from the starting HOB pointer, it will return NULL.
|
||||
Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
|
||||
to extract the data section and its size info respectively.
|
||||
If Guid is NULL, then ASSERT().
|
||||
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
@param Guid The GUID to match with in the HOB list.
|
||||
|
||||
@return The first instance of the matched GUID HOB among the whole HOB list.
|
||||
|
||||
|
@ -150,10 +168,12 @@ GetFirstGuidHob (
|
|||
}
|
||||
|
||||
/**
|
||||
Add a new HOB to the HOB List.
|
||||
Adds a new HOB to the HOB List.
|
||||
|
||||
@param Type Type of the new HOB.
|
||||
@param Length Length of the new HOB to allocate.
|
||||
This internal function enables PEIMs to create various types of HOBs.
|
||||
|
||||
@param Type Type of the new HOB.
|
||||
@param Length Length of the new HOB to allocate.
|
||||
|
||||
@return The address of new HOB.
|
||||
|
||||
|
@ -176,12 +196,18 @@ InternalPeiCreateHob (
|
|||
}
|
||||
|
||||
/**
|
||||
This function builds a HOB for a loaded PE32 module.
|
||||
Builds a HOB for a loaded PE32 module.
|
||||
|
||||
@param ModuleName The GUID File Name of the module.
|
||||
@param MemoryAllocationModule The 64 bit physical address of the module.
|
||||
@param ModuleLength The length of the module in bytes.
|
||||
@param EntryPoint The 64 bit physical address of the module’s entry point.
|
||||
This function builds a HOB for a loaded PE32 module.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If ModuleName is NULL, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param ModuleName The GUID File Name of the module.
|
||||
@param MemoryAllocationModule The 64 bit physical address of the module.
|
||||
@param ModuleLength The length of the module in bytes.
|
||||
@param EntryPoint The 64 bit physical address of the module’s entry point.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -209,10 +235,15 @@ BuildModuleHob (
|
|||
/**
|
||||
Builds a HOB that describes a chunk of system memory.
|
||||
|
||||
@param ResourceType The type of resource described by this HOB.
|
||||
@param ResourceAttribute The resource attributes of the memory described by this HOB.
|
||||
@param PhysicalStart The 64 bit physical address of memory described by this HOB.
|
||||
@param NumberOfBytes The length of the memory described by this HOB in bytes.
|
||||
This function builds a HOB that describes a chunk of system memory.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param ResourceType The type of resource described by this HOB.
|
||||
@param ResourceAttribute The resource attributes of the memory described by this HOB.
|
||||
@param PhysicalStart The 64 bit physical address of memory described by this HOB.
|
||||
@param NumberOfBytes The length of the memory described by this HOB in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -235,11 +266,19 @@ BuildResourceDescriptorHob (
|
|||
}
|
||||
|
||||
/**
|
||||
This function builds a customized HOB tagged with a GUID for identification
|
||||
and returns the start address of GUID HOB data so that caller can fill the customized data.
|
||||
Builds a GUID HOB with a certain data length.
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
This function builds a customized HOB tagged with a GUID for identification
|
||||
and returns the start address of GUID HOB data so that caller can fill the customized data.
|
||||
The HOB Header and Name field is already stripped.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
|
||||
|
@ -264,12 +303,21 @@ BuildGuidHob (
|
|||
}
|
||||
|
||||
/**
|
||||
This function builds a customized HOB tagged with a GUID for identification,
|
||||
copies the input data to the HOB data field, and returns the start address of GUID HOB data.
|
||||
Copies a data buffer to a newly-built HOB.
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param Data The data to be copied into the data field of the GUID HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
This function builds a customized HOB tagged with a GUID for identification,
|
||||
copies the input data to the HOB data field and returns the start address of the GUID HOB data.
|
||||
The HOB Header and Name field is already stripped.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If Guid is NULL, then ASSERT().
|
||||
If Data is NULL and DataLength > 0, then ASSERT().
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
|
||||
|
||||
@param Guid The GUID to tag the customized HOB.
|
||||
@param Data The data to be copied into the data field of the GUID HOB.
|
||||
@param DataLength The size of the data payload for the GUID HOB.
|
||||
|
||||
@return The start address of GUID HOB data.
|
||||
|
||||
|
@ -292,8 +340,13 @@ BuildGuidDataHob (
|
|||
/**
|
||||
Builds a Firmware Volume HOB.
|
||||
|
||||
@param BaseAddress The base address of the Firmware Volume.
|
||||
@param Length The size of the Firmware Volume in bytes.
|
||||
This function builds a Firmware Volume HOB.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The base address of the Firmware Volume.
|
||||
@param Length The size of the Firmware Volume in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -314,8 +367,13 @@ BuildFvHob (
|
|||
/**
|
||||
Builds a Capsule Volume HOB.
|
||||
|
||||
@param BaseAddress The base address of the Capsule Volume.
|
||||
@param Length The size of the Capsule Volume in bytes.
|
||||
This function builds a Capsule Volume HOB.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The base address of the Capsule Volume.
|
||||
@param Length The size of the Capsule Volume in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -336,8 +394,13 @@ BuildCvHob (
|
|||
/**
|
||||
Builds a HOB for the CPU.
|
||||
|
||||
@param SizeOfMemorySpace The maximum physical memory addressability of the processor.
|
||||
@param SizeOfIoSpace The maximum physical I/O addressability of the processor.
|
||||
This function builds a HOB for the CPU.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param SizeOfMemorySpace The maximum physical memory addressability of the processor.
|
||||
@param SizeOfIoSpace The maximum physical I/O addressability of the processor.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -358,8 +421,13 @@ BuildCpuHob (
|
|||
/**
|
||||
Builds a HOB for the Stack.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the Stack.
|
||||
@param Length The length of the stack in bytes.
|
||||
This function builds a HOB for the stack.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the Stack.
|
||||
@param Length The length of the stack in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -382,9 +450,14 @@ BuildStackHob (
|
|||
/**
|
||||
Builds a HOB for the BSP store.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the BSP.
|
||||
@param Length The length of the BSP store in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
This function builds a HOB for BSP store.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the BSP.
|
||||
@param Length The length of the BSP store in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
@ -408,9 +481,14 @@ BuildBspStoreHob (
|
|||
/**
|
||||
Builds a HOB for the memory allocation.
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the memory.
|
||||
@param Length The length of the memory allocation in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
This function builds a HOB for the memory allocation.
|
||||
It can only be invoked during PEI phase;
|
||||
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
|
||||
If there is no additional space for HOB creation, then ASSERT().
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the memory.
|
||||
@param Length The length of the memory allocation in bytes.
|
||||
@param MemoryType Type of memory allocated by this HOB.
|
||||
|
||||
**/
|
||||
VOID
|
||||
|
|
|
@ -155,9 +155,9 @@ AppendDevicePath (
|
|||
This function appends the device path node SecondDevicePath
|
||||
to every device path instance in FirstDevicePath.
|
||||
|
||||
@param FirstDevicePath A pointer to a device path data structure.
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
|
||||
@param SecondDevicePath A pointer to a single device path node.
|
||||
@param DevicePathNode A pointer to a single device path node.
|
||||
|
||||
@return A pointer to the new device path.
|
||||
If there is not enough temporary pool memory available to complete this function,
|
||||
|
@ -167,40 +167,37 @@ AppendDevicePath (
|
|||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
AppendDevicePathNode (
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *FirstDevicePath,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *SecondDevicePath
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode
|
||||
)
|
||||
{
|
||||
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *NextNode;
|
||||
EFI_DEVICE_PATH_PROTOCOL *NewDevicePath;
|
||||
UINTN NodeLength;
|
||||
UINTN Size1;
|
||||
|
||||
//
|
||||
// Build a Node that has a terminator on it
|
||||
//
|
||||
NodeLength = DevicePathNodeLength (SecondDevicePath);
|
||||
Size1 = GetDevicePathSize (FirstDevicePath);
|
||||
|
||||
NewDevicePath = AllocatePool (NodeLength + Size1);
|
||||
if (NewDevicePath != NULL) {
|
||||
//
|
||||
// Copy the first device path to the new device path
|
||||
//
|
||||
NewDevicePath = CopyMem (NewDevicePath, FirstDevicePath, Size1);
|
||||
NodeLength = DevicePathNodeLength (DevicePathNode);
|
||||
|
||||
//
|
||||
// Copy the device path node to the new device path
|
||||
//
|
||||
NextNode = (EFI_DEVICE_PATH_PROTOCOL *) ((CHAR8 *) NewDevicePath + (Size1 - sizeof (EFI_DEVICE_PATH_PROTOCOL)));
|
||||
NextNode = CopyMem (NextNode, SecondDevicePath, NodeLength);
|
||||
|
||||
//
|
||||
// Terminate the whole device path
|
||||
//
|
||||
NextNode = NextDevicePathNode (NextNode);
|
||||
SetDevicePathEndNode (NextNode);
|
||||
TempDevicePath = AllocatePool (NodeLength + sizeof (EFI_DEVICE_PATH_PROTOCOL));
|
||||
if (TempDevicePath == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
TempDevicePath = CopyMem (TempDevicePath, DevicePathNode, NodeLength);
|
||||
//
|
||||
// Add and end device path node to convert Node to device path
|
||||
//
|
||||
NextNode = NextDevicePathNode (TempDevicePath);
|
||||
SetDevicePathEndNode (NextNode);
|
||||
//
|
||||
// Append device paths
|
||||
//
|
||||
NewDevicePath = AppendDevicePath (DevicePath, TempDevicePath);
|
||||
|
||||
FreePool (TempDevicePath);
|
||||
|
||||
return NewDevicePath;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue