Adding support for BeagleBoard.
ArmPkg - Supoprt for ARM specific things that can change as the architecture changes. Plus semihosting JTAG drivers. EmbeddedPkg - Generic support for an embeddded platform. Including a light weight command line shell. BeagleBoardPkg - Platform specifics for BeagleBoard. SD Card works, but USB has issues. Looks like a bug in the open source USB stack (Our internal stack works fine). git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9518 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
122
EmbeddedPkg/Include/Library/EblAddExternalCommandLib.h
Normal file
122
EmbeddedPkg/Include/Library/EblAddExternalCommandLib.h
Normal file
@@ -0,0 +1,122 @@
|
||||
/** @file
|
||||
Include flie for basic command line parser for EBL (Embedded Boot Loader)
|
||||
|
||||
Copyright (c) 2007, Intel Corporation<BR>
|
||||
Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __EBL_ADD_EXTERNAL_COMMAND_LIB_H__
|
||||
#define __EBL_ADD_EXTERNAL_COMMAND_LIB_H__
|
||||
|
||||
#include <PiDxe.h>
|
||||
#include <Protocol/EblAddCommand.h>
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EblAddExternalCommands (
|
||||
IN const EBL_COMMAND_TABLE *EntryArray,
|
||||
IN UINTN ArrayCount
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
Return a keypress or optionally timeout if a timeout value was passed in.
|
||||
|
||||
An optional callback funciton is called evey second when waiting for a
|
||||
|
||||
timeout.
|
||||
|
||||
|
||||
|
||||
@param Key EFI Key information returned
|
||||
|
||||
@param TimeoutInSec Number of seconds to wait to timeout
|
||||
|
||||
@param CallBack Callback called every second during the timeout wait
|
||||
|
||||
|
||||
|
||||
@return EFI_SUCCESS Key was returned
|
||||
|
||||
@return EFI_TIMEOUT If the TimoutInSec expired
|
||||
|
||||
|
||||
|
||||
**/
|
||||
|
||||
EFI_STATUS
|
||||
|
||||
EFIAPI
|
||||
|
||||
EblGetCharKey (
|
||||
|
||||
IN OUT EFI_INPUT_KEY *Key,
|
||||
|
||||
IN UINTN TimeoutInSec,
|
||||
|
||||
IN EBL_GET_CHAR_CALL_BACK CallBack OPTIONAL
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
This routine is used prevent command output data from scrolling off the end
|
||||
|
||||
of the screen. The global gPageBreak is used to turn on or off this feature.
|
||||
|
||||
If the CurrentRow is near the end of the screen pause and print out a prompt
|
||||
|
||||
If the use hits Q to quit return TRUE else for any other key return FALSE.
|
||||
|
||||
PrefixNewline is used to figure out if a newline is needed before the prompt
|
||||
|
||||
string. This depends on the last print done before calling this function.
|
||||
|
||||
CurrentRow is updated by one on a call or set back to zero if a prompt is
|
||||
|
||||
needed.
|
||||
|
||||
|
||||
|
||||
@param CurrentRow Used to figure out if its the end of the page and updated
|
||||
|
||||
@param PrefixNewline Did previous print issue a newline
|
||||
|
||||
|
||||
|
||||
@return TRUE if Q was hit to quit, FALSE in all other cases.
|
||||
|
||||
|
||||
|
||||
**/
|
||||
|
||||
BOOLEAN
|
||||
|
||||
EFIAPI
|
||||
|
||||
EblAnyKeyToContinueQtoQuit (
|
||||
|
||||
IN UINTN *CurrentRow,
|
||||
|
||||
IN BOOLEAN PrefixNewline
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
48
EmbeddedPkg/Include/Library/EblCmdLib.h
Normal file
48
EmbeddedPkg/Include/Library/EblCmdLib.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/** @file
|
||||
Include flie for basic command line parser for EBL (Embedded Boot Loader)
|
||||
|
||||
Copyright (c) 2007, Intel Corporation<BR>
|
||||
Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __EBL_LIB_H__
|
||||
#define __EBL_LIB_H__
|
||||
|
||||
#include <PiDxe.h>
|
||||
#include <Protocol/EblAddCommand.h>
|
||||
|
||||
|
||||
VOID
|
||||
EblAddCommand (
|
||||
IN const EBL_COMMAND_TABLE *Entry
|
||||
);
|
||||
|
||||
VOID
|
||||
EblAddCommands (
|
||||
IN const EBL_COMMAND_TABLE *EntryArray,
|
||||
IN UINTN ArrayCount
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// LIbrary constructor called directly from Ebl Code.
|
||||
// This module calls EblAddCommand () or EblAddCommands () to register new commands
|
||||
//
|
||||
VOID
|
||||
EblInitializeExternalCmd (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
68
EmbeddedPkg/Include/Library/EblNetworkLib.h
Normal file
68
EmbeddedPkg/Include/Library/EblNetworkLib.h
Normal file
@@ -0,0 +1,68 @@
|
||||
/** @file
|
||||
Abstractions for Ebl network accesses.
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __EBL_NETWORK_LIB_H__
|
||||
#define __EBL_NETWORK_LIB_H__
|
||||
|
||||
#include <Protocol/PxeBaseCode.h>
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EblGetCurrentIpAddress (
|
||||
IN OUT EFI_IP_ADDRESS *Ip
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EblGetCurrentMacAddress (
|
||||
IN OUT EFI_MAC_ADDRESS *Mac
|
||||
);
|
||||
|
||||
CHAR8 *
|
||||
EFIAPI
|
||||
EblLoadFileBootTypeString (
|
||||
IN EFI_HANDLE Handle
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EblPerformDHCP (
|
||||
IN BOOLEAN SortOffers
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EblSetStationIp (
|
||||
IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL
|
||||
IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
EblMtftp (
|
||||
IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,
|
||||
IN OUT VOID *BufferPtr OPTIONAL,
|
||||
IN BOOLEAN Overwrite,
|
||||
IN OUT UINT64 *BufferSize,
|
||||
IN UINTN *BlockSize OPTIONAL,
|
||||
IN EFI_IP_ADDRESS *ServerIp,
|
||||
IN UINT8 *Filename OPTIONAL,
|
||||
IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,
|
||||
IN BOOLEAN DontUseBuffer
|
||||
);
|
||||
|
||||
#endif
|
||||
|
315
EmbeddedPkg/Include/Library/EfiFileLib.h
Normal file
315
EmbeddedPkg/Include/Library/EfiFileLib.h
Normal file
@@ -0,0 +1,315 @@
|
||||
/** @file
|
||||
Library functions that perform file IO. Memory buffer, file system, and
|
||||
fimrware volume operations are supproted.
|
||||
|
||||
Copyright (c) 2007, Intel Corporation<BR>
|
||||
Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
Basic support for opening files on different device types. The device string
|
||||
is in the form of DevType:Path. Current DevType is required as there is no
|
||||
current mounted device concept of current working directory concept implement
|
||||
by this library.
|
||||
|
||||
Device names are case insensative and only check the leading characters for
|
||||
unique matches. Thus the following are all the same:
|
||||
LoadFile0:
|
||||
l0:
|
||||
L0:
|
||||
Lo0:
|
||||
|
||||
Supported Device Names:
|
||||
A0x1234:0x12 - A memory buffer starting at address 0x1234 for 0x12 bytes
|
||||
l1: - EFI LoadFile device one.
|
||||
B0: - EFI BlockIo zero.
|
||||
fs3: - EFI Simple File System device 3
|
||||
Fv2: - EFI Firmware VOlume device 2
|
||||
1.2.3.4:name - TFTP IP and file name
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __EFI_FILE_LIB_H__
|
||||
#define __EFI_FILE_LIB_H__
|
||||
|
||||
#include <PiDxe.h>
|
||||
#include <Protocol/FirmwareVolume2.h>
|
||||
#include <Protocol/FirmwareVolumeBlock.h>
|
||||
#include <Protocol/BlockIo.h>
|
||||
#include <Protocol/LoadFile.h>
|
||||
#include <Protocol/LoadFile.h>
|
||||
#include <Protocol/SimpleFileSystem.h>
|
||||
#include <Guid/FileInfo.h>
|
||||
#include <Guid/FileSystemInfo.h>
|
||||
|
||||
#define MAX_PATHNAME 0x200
|
||||
|
||||
/// Type of the file that has been opened
|
||||
typedef enum {
|
||||
EfiOpenLoadFile,
|
||||
EfiOpenMemoryBuffer,
|
||||
EfiOpenFirmwareVolume,
|
||||
EfiOpenFileSystem,
|
||||
EfiOpenBlockIo,
|
||||
EfiOpenTftp,
|
||||
EfiOpenMaxValue
|
||||
} EFI_OPEN_FILE_TYPE;
|
||||
|
||||
|
||||
/// Public information about the open file
|
||||
typedef struct {
|
||||
UINTN Version; // Common information
|
||||
EFI_OPEN_FILE_TYPE Type;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_STATUS LastError;
|
||||
EFI_HANDLE EfiHandle;
|
||||
CHAR8 *DeviceName;
|
||||
CHAR8 *FileName;
|
||||
|
||||
UINT64 CurrentPosition; // Information for Seek
|
||||
UINT64 MaxPosition;
|
||||
|
||||
UINTN BaseOffset; // Base offset for hexdump command
|
||||
|
||||
UINTN Size; // Valid for all types other than l#:
|
||||
UINT8 *Buffer; // Information valid for A#:
|
||||
|
||||
EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv; // Information valid for Fv#:
|
||||
EFI_GUID FvNameGuid;
|
||||
EFI_SECTION_TYPE FvSectionType;
|
||||
EFI_FV_FILETYPE FvType;
|
||||
EFI_FV_FILE_ATTRIBUTES FvAttributes;
|
||||
|
||||
EFI_PHYSICAL_ADDRESS FvStart;
|
||||
UINTN FvSize;
|
||||
|
||||
EFI_FILE *FsFileHandle; // Information valid for Fs#:
|
||||
EFI_FILE_SYSTEM_INFO *FsInfo;
|
||||
EFI_FILE_INFO *FsFileInfo;
|
||||
EFI_BLOCK_IO_MEDIA FsBlockIoMedia; // Information valid for Fs#: or B#:
|
||||
|
||||
UINTN DiskOffset; // Information valid for B#:
|
||||
|
||||
EFI_LOAD_FILE_PROTOCOL *LoadFile; // Information valid for l#:
|
||||
|
||||
EFI_IP_ADDRESS ServerIp; // Information valid for t:
|
||||
BOOLEAN IsDirty;
|
||||
BOOLEAN IsBufferValid;
|
||||
|
||||
} EFI_OPEN_FILE;
|
||||
|
||||
|
||||
/// Type of Seek to perform
|
||||
typedef enum {
|
||||
EfiSeekStart,
|
||||
EfiSeekCurrent,
|
||||
EfiSeekEnd,
|
||||
EfiSeekMax
|
||||
} EFI_SEEK_TYPE;
|
||||
|
||||
|
||||
/**
|
||||
Open a device named by PathName. The PathName includes a device name and
|
||||
path seperated by a :. See file header for more details on the PathName
|
||||
syntax. There is no checking to prevent a file from being opened more than
|
||||
one type.
|
||||
|
||||
SectionType is only used to open an FV. Each file in an FV contains multiple
|
||||
secitons and only the SectionType section is opened.
|
||||
|
||||
For any file that is opened with EfiOpen() must be closed with EfiClose().
|
||||
|
||||
@param PathName Path to parse to open
|
||||
@param OpenMode Same as EFI_FILE.Open()
|
||||
@param SectionType Section in FV to open.
|
||||
|
||||
@return NULL Open failed
|
||||
@return Valid EFI_OPEN_FILE handle
|
||||
|
||||
**/
|
||||
EFI_OPEN_FILE *
|
||||
EfiOpen (
|
||||
IN CHAR8 *PathName,
|
||||
IN CONST UINT64 OpenMode,
|
||||
IN CONST EFI_SECTION_TYPE SectionType
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EfiCopyFile (
|
||||
IN CHAR8 *DestinationFile,
|
||||
IN CHAR8 *SourceFile
|
||||
);
|
||||
|
||||
/**
|
||||
Use DeviceType and Index to form a valid PathName and try and open it.
|
||||
|
||||
@param DeviceType Device type to open
|
||||
@param Index Device Index to use. Zero relative.
|
||||
|
||||
@return NULL Open failed
|
||||
@return Valid EFI_OPEN_FILE handle
|
||||
|
||||
**/
|
||||
EFI_OPEN_FILE *
|
||||
EfiDeviceOpenByType (
|
||||
IN EFI_OPEN_FILE_TYPE DeviceType,
|
||||
IN UINTN Index
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Close a file handle opened by EfiOpen() and free all resources allocated by
|
||||
EfiOpen().
|
||||
|
||||
@param Stream Open File Handle
|
||||
|
||||
@return EFI_INVALID_PARAMETER Stream is not an Open File
|
||||
@return EFI_SUCCESS Steam closed
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EfiClose (
|
||||
IN EFI_OPEN_FILE *Stream
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Return the size of the file represented by Stream. Also return the current
|
||||
Seek position. Opening a file will enable a valid file size to be returned.
|
||||
LoadFile is an exception as a load file size is set to zero.
|
||||
|
||||
@param Stream Open File Handle
|
||||
|
||||
@return 0 Stream is not an Open File or a valid LoadFile handle
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EfiTell (
|
||||
IN EFI_OPEN_FILE *Stream,
|
||||
OUT UINT64 *CurrentPosition OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Seek to the Offset locaiton in the file. LoadFile and FV device types do
|
||||
not support EfiSeek(). It is not possible to grow the file size using
|
||||
EfiSeek().
|
||||
|
||||
SeekType defines how use Offset to calculate the new file position:
|
||||
EfiSeekStart : Position = Offset
|
||||
EfiSeekCurrent: Position is Offset bytes from the current position
|
||||
EfiSeekEnd : Only supported if Offset is zero to seek to end of file.
|
||||
|
||||
@param Stream Open File Handle
|
||||
@param Offset Offset to seek too.
|
||||
@param SeekType Type of seek to perform
|
||||
|
||||
|
||||
@return EFI_INVALID_PARAMETER Stream is not an Open File
|
||||
@return EFI_UNSUPPORTED LoadFile and FV doe not support Seek
|
||||
@return EFI_NOT_FOUND Seek past the end of the file.
|
||||
@return EFI_SUCCESS Steam closed
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EfiSeek (
|
||||
IN EFI_OPEN_FILE *Stream,
|
||||
IN EFI_LBA Offset,
|
||||
IN EFI_SEEK_TYPE SeekType
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Read BufferSize bytes from the current locaiton in the file. For load file
|
||||
and FV case you must read the entire file.
|
||||
|
||||
@param Stream Open File Handle
|
||||
@param Buffer Caller allocated buffer.
|
||||
@param BufferSize Size of buffer in bytes.
|
||||
|
||||
|
||||
@return EFI_SUCCESS Stream is not an Open File
|
||||
@return EFI_END_OF_FILE Tried to read past the end of the file
|
||||
@return EFI_INVALID_PARAMETER Stream is not an open file handle
|
||||
@return EFI_BUFFER_TOO_SMALL Buffer is not big enough to do the read
|
||||
@return "other" Error returned from device read
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EfiRead (
|
||||
IN EFI_OPEN_FILE *Stream,
|
||||
OUT VOID *Buffer,
|
||||
OUT UINTN *BufferSize
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Read the entire file into a buffer. This routine allocates the buffer and
|
||||
returns it to the user full of the read data.
|
||||
|
||||
This is very useful for load flie where it's hard to know how big the buffer
|
||||
must be.
|
||||
|
||||
@param Stream Open File Handle
|
||||
@param Buffer Pointer to buffer to return.
|
||||
@param BufferSize Pointer to Size of buffer return..
|
||||
|
||||
|
||||
@return EFI_SUCCESS Stream is not an Open File
|
||||
@return EFI_END_OF_FILE Tried to read past the end of the file
|
||||
@return EFI_INVALID_PARAMETER Stream is not an open file handle
|
||||
@return EFI_BUFFER_TOO_SMALL Buffer is not big enough to do the read
|
||||
@return "other" Error returned from device read
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EfiReadAllocatePool (
|
||||
IN EFI_OPEN_FILE *Stream,
|
||||
OUT VOID **Buffer,
|
||||
OUT UINTN *BufferSize
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Write data back to the file.
|
||||
|
||||
@param Stream Open File Handle
|
||||
@param Buffer Pointer to buffer to return.
|
||||
@param BufferSize Pointer to Size of buffer return..
|
||||
|
||||
|
||||
@return EFI_SUCCESS Stream is not an Open File
|
||||
@return EFI_END_OF_FILE Tried to read past the end of the file
|
||||
@return EFI_INVALID_PARAMETER Stream is not an open file handle
|
||||
@return EFI_BUFFER_TOO_SMALL Buffer is not big enough to do the read
|
||||
@return "other" Error returned from device write
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EfiWrite (
|
||||
IN EFI_OPEN_FILE *Stream,
|
||||
OUT VOID *Buffer,
|
||||
OUT UINTN *BufferSize
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Return the number of devices of the current type active in the system
|
||||
|
||||
@param Type Device type to check
|
||||
|
||||
@return 0 Invalid type
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EfiGetDeviceCounts (
|
||||
IN EFI_OPEN_FILE_TYPE Type
|
||||
);
|
||||
|
||||
#endif
|
58
EmbeddedPkg/Include/Library/EfiResetSystemLib.h
Normal file
58
EmbeddedPkg/Include/Library/EfiResetSystemLib.h
Normal file
@@ -0,0 +1,58 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
|
||||
#ifndef __EFI_RESET_SYSTEM_LIB_H___
|
||||
#define __EFI_RESET_SYSTEM_LIB_H___
|
||||
|
||||
|
||||
/**
|
||||
Resets the entire platform.
|
||||
|
||||
@param ResetType The type of reset to perform.
|
||||
@param ResetStatus The status code for the reset.
|
||||
@param DataSize The size, in bytes, of WatchdogData.
|
||||
@param ResetData For a ResetType of EfiResetCold, EfiResetWarm, or
|
||||
EfiResetShutdown the data buffer starts with a Null-terminated
|
||||
Unicode string, optionally followed by additional binary data.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibResetSystem (
|
||||
IN EFI_RESET_TYPE ResetType,
|
||||
IN EFI_STATUS ResetStatus,
|
||||
IN UINTN DataSize,
|
||||
IN CHAR16 *ResetData OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Initialize any infrastructure required for LibResetSystem () to function.
|
||||
|
||||
@param ImageHandle The firmware allocated handle for the EFI image.
|
||||
@param SystemTable A pointer to the EFI System Table.
|
||||
|
||||
@retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibInitializeResetSystem (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
);
|
||||
|
||||
#endif
|
107
EmbeddedPkg/Include/Library/GdbSerialLib.h
Normal file
107
EmbeddedPkg/Include/Library/GdbSerialLib.h
Normal file
@@ -0,0 +1,107 @@
|
||||
/** @file
|
||||
Basic serial IO abstaction for GDB
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __GDB_SERIAL_LIB_H__
|
||||
#define __GDB_SERIAL_LIB_H__
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Sets the baud rate, receive FIFO depth, transmit/receice time out, parity,
|
||||
data buts, and stop bits on a serial device. This call is optional as the serial
|
||||
port will be set up with defaults base on PCD values.
|
||||
|
||||
@param BaudRate The requested baud rate. A BaudRate value of 0 will use the the
|
||||
device's default interface speed.
|
||||
@param Parity The type of parity to use on this serial device. A Parity value of
|
||||
DefaultParity will use the device's default parity value.
|
||||
@param DataBits The number of data bits to use on the serial device. A DataBits
|
||||
vaule of 0 will use the device's default data bit setting.
|
||||
@param StopBits The number of stop bits to use on this serial device. A StopBits
|
||||
value of DefaultStopBits will use the device's default number of
|
||||
stop bits.
|
||||
|
||||
@retval EFI_SUCCESS The device was configured.
|
||||
@retval EFI_DEVICE_ERROR The serial device could not be coonfigured.
|
||||
|
||||
**/
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
GdbSerialInit (
|
||||
IN UINT64 BaudRate,
|
||||
IN UINT8 Parity,
|
||||
IN UINT8 DataBits,
|
||||
IN UINT8 StopBits
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Check to see if a character is available from GDB. Do not read the character as that is
|
||||
done via GdbGetChar().
|
||||
|
||||
@return TRUE - Character availible
|
||||
@return FALSE - Character not availible
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
GdbIsCharAvailable (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
Get a character from GDB. This function must be able to run in interrupt context.
|
||||
|
||||
@return A character from GDB
|
||||
|
||||
**/
|
||||
CHAR8
|
||||
EFIAPI
|
||||
GdbGetChar (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Send a character to GDB. This function must be able to run in interrupt context.
|
||||
|
||||
|
||||
@param Char Send a character to GDB
|
||||
|
||||
**/
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
GdbPutChar (
|
||||
IN CHAR8 Char
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Send an ASCII string to GDB. This function must be able to run in interrupt context.
|
||||
|
||||
|
||||
@param String Send a string to GDB
|
||||
|
||||
**/
|
||||
|
||||
VOID
|
||||
GdbPutString (
|
||||
IN CHAR8 *String
|
||||
);
|
||||
|
||||
|
||||
#endif
|
||||
|
165
EmbeddedPkg/Include/Library/HalRuntimeServicesLib.h
Normal file
165
EmbeddedPkg/Include/Library/HalRuntimeServicesLib.h
Normal file
@@ -0,0 +1,165 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
|
||||
#ifndef __RUNTIME_SERVICES_LIB_H__
|
||||
#define __RUNTIME_SERVICES_LIB_H__
|
||||
|
||||
VOID
|
||||
LibMtcInitialize (VOID);
|
||||
|
||||
VOID
|
||||
LibMtcVirtualAddressChangeEvent (VOID);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibMtcGetNextHighMonotonicCount (
|
||||
OUT UINT32 *HighCount
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
LibMtcGetNextMonotonicCount (
|
||||
OUT UINT64 *Count
|
||||
);
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
LibVariableInitialize (VOID);
|
||||
|
||||
VOID
|
||||
LibVariableVirtualAddressChangeEvent (VOID);
|
||||
|
||||
EFI_STATUS
|
||||
LibGetVariable (
|
||||
IN CHAR16 *VariableName,
|
||||
IN EFI_GUID *VendorGuid,
|
||||
OUT UINT32 *Attributes OPTIONAL,
|
||||
IN OUT UINTN *DataSize,
|
||||
OUT VOID *Data
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
LibGetNextVariableName (
|
||||
IN OUT UINTN *VariableNameSize,
|
||||
IN OUT CHAR16 *VariableName,
|
||||
IN OUT EFI_GUID *VendorGuid
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
LibSetVariable (
|
||||
IN CHAR16 *VariableName,
|
||||
IN EFI_GUID *VendorGuid,
|
||||
IN UINT32 Attributes,
|
||||
IN UINTN DataSize,
|
||||
IN VOID *Data
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
LibQueryVariableInfo (
|
||||
IN UINT32 Attributes,
|
||||
OUT UINT64 *MaximumVariableStorageSize,
|
||||
OUT UINT64 *RemainingVariableStorageSize,
|
||||
OUT UINT64 *MaximumVariableSize
|
||||
);
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
LibResetInitializeReset (VOID);
|
||||
|
||||
VOID
|
||||
LibResetVirtualAddressChangeEvent (VOID);
|
||||
|
||||
VOID
|
||||
LibResetSystem (
|
||||
IN EFI_RESET_TYPE ResetType,
|
||||
IN EFI_STATUS ResetStatus,
|
||||
IN UINTN DataSize,
|
||||
IN CHAR16 *ResetData OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
VOID
|
||||
LibCapsuleInitialize (VOID);
|
||||
|
||||
VOID
|
||||
LibCapsuleVirtualAddressChangeEvent (VOID);
|
||||
|
||||
EFI_STATUS
|
||||
LibUpdateCapsule (
|
||||
IN UEFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
||||
IN UINTN CapsuleCount,
|
||||
IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
QueryCapsuleCapabilities (
|
||||
IN UEFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
||||
IN UINTN CapsuleCount,
|
||||
OUT UINT64 *MaxiumCapsuleSize,
|
||||
OUT EFI_RESET_TYPE *ResetType
|
||||
);
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
LibRtcInitialize (VOID);
|
||||
|
||||
VOID
|
||||
LibRtcVirtualAddressChangeEvent (VOID);
|
||||
|
||||
EFI_STATUS
|
||||
LibGetTime (
|
||||
OUT EFI_TIME *Time,
|
||||
OUT EFI_TIME_CAPABILITIES *Capabilities
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
LibSetTime (
|
||||
IN EFI_TIME *Time
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
LibGetWakeupTime (
|
||||
OUT BOOLEAN *Enabled,
|
||||
OUT BOOLEAN *Pending,
|
||||
OUT EFI_TIME *Time
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
LibSetWakeupTime (
|
||||
IN BOOLEAN Enabled,
|
||||
OUT EFI_TIME *Time
|
||||
);
|
||||
|
||||
|
||||
VOID
|
||||
LibReportStatusCodeInitialize (VOID);
|
||||
|
||||
VOID
|
||||
LibReportStatusCodeVirtualAddressChangeEvent (VOID);
|
||||
|
||||
EFI_STATUS
|
||||
LibReportStatusCode (
|
||||
IN EFI_STATUS_CODE_TYPE CodeType,
|
||||
IN EFI_STATUS_CODE_VALUE Value,
|
||||
IN UINT32 Instance,
|
||||
IN EFI_GUID *CallerId,
|
||||
IN EFI_STATUS_CODE_DATA *Data OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
#endif
|
||||
|
766
EmbeddedPkg/Include/Library/PrePiLib.h
Normal file
766
EmbeddedPkg/Include/Library/PrePiLib.h
Normal file
@@ -0,0 +1,766 @@
|
||||
/** @file
|
||||
Library that helps implement monolithic PEI. (SEC goes to DXE)
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PRE_PI_LIB_H__
|
||||
#define __PRE_PI_LIB_H__
|
||||
|
||||
/**
|
||||
This service enables discovery of additional firmware volumes.
|
||||
|
||||
@param Instance This instance of the firmware volume to find. The value 0 is the
|
||||
Boot Firmware Volume (BFV).
|
||||
@param FwVolHeader Pointer to the firmware volume header of the volume to return.
|
||||
|
||||
@retval EFI_SUCCESS The volume was found.
|
||||
@retval EFI_NOT_FOUND The volume was not found.
|
||||
@retval EFI_INVALID_PARAMETER FwVolHeader is NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsFindNextVolume (
|
||||
IN UINTN Instance,
|
||||
IN OUT EFI_PEI_FV_HANDLE *VolumeHandle
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
This service enables discovery of additional firmware files.
|
||||
|
||||
@param SearchType A filter to find files only of this type.
|
||||
@param FwVolHeader Pointer to the firmware volume header of the volume to search.
|
||||
This parameter must point to a valid FFS volume.
|
||||
@param FileHeader Pointer to the current file from which to begin searching.
|
||||
|
||||
@retval EFI_SUCCESS The file was found.
|
||||
@retval EFI_NOT_FOUND The file was not found.
|
||||
@retval EFI_NOT_FOUND The header checksum was not zero.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsFindNextFile (
|
||||
IN EFI_FV_FILETYPE SearchType,
|
||||
IN EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
IN OUT EFI_PEI_FILE_HANDLE *FileHandle
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
This service enables discovery sections of a given type within a valid FFS file.
|
||||
|
||||
@param SearchType The value of the section type to find.
|
||||
@param FfsFileHeader A pointer to the file header that contains the set of sections to
|
||||
be searched.
|
||||
@param SectionData A pointer to the discovered section, if successful.
|
||||
|
||||
@retval EFI_SUCCESS The section was found.
|
||||
@retval EFI_NOT_FOUND The section was not found.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsFindSectionData (
|
||||
IN EFI_SECTION_TYPE SectionType,
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
OUT VOID **SectionData
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Find a file in the volume by name
|
||||
|
||||
@param FileName A pointer to the name of the file to
|
||||
find within the firmware volume.
|
||||
|
||||
@param VolumeHandle The firmware volume to search FileHandle
|
||||
Upon exit, points to the found file's
|
||||
handle or NULL if it could not be found.
|
||||
|
||||
@retval EFI_SUCCESS File was found.
|
||||
|
||||
@retval EFI_NOT_FOUND File was not found.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER VolumeHandle or FileHandle or
|
||||
FileName was NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsFindByName (
|
||||
IN CONST EFI_GUID *FileName,
|
||||
IN CONST EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
OUT EFI_PEI_FILE_HANDLE *FileHandle
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Get information about the file by name.
|
||||
|
||||
@param FileHandle Handle of the file.
|
||||
|
||||
@param FileInfo Upon exit, points to the file's
|
||||
information.
|
||||
|
||||
@retval EFI_SUCCESS File information returned.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If FileHandle does not
|
||||
represent a valid file.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If FileInfo is NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsGetFileInfo (
|
||||
IN CONST EFI_PEI_FILE_HANDLE FileHandle,
|
||||
OUT EFI_FV_FILE_INFO *FileInfo
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Get Information about the volume by name
|
||||
|
||||
@param VolumeHandle Handle of the volume.
|
||||
|
||||
@param VolumeInfo Upon exit, points to the volume's
|
||||
information.
|
||||
|
||||
@retval EFI_SUCCESS File information returned.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If FileHandle does not
|
||||
represent a valid file.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If FileInfo is NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsGetVolumeInfo (
|
||||
IN EFI_PEI_FV_HANDLE VolumeHandle,
|
||||
OUT EFI_FV_INFO *VolumeInfo
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Get Fv image from the FV type file, then add FV & FV2 Hob.
|
||||
|
||||
@param FileHandle File handle of a Fv type file.
|
||||
|
||||
|
||||
@retval EFI_NOT_FOUND FV image can't be found.
|
||||
@retval EFI_SUCCESS Successfully to process it.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsProcessFvFile (
|
||||
IN EFI_PEI_FILE_HANDLE FvFileHandle
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Search through every FV until you find a file of type FileType
|
||||
|
||||
@param FileType File handle of a Fv type file.
|
||||
@param Volumehandle On succes Volume Handle of the match
|
||||
@param FileHandle On success File Handle of the match
|
||||
|
||||
@retval EFI_NOT_FOUND FV image can't be found.
|
||||
@retval EFI_SUCCESS Successfully found FileType
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsAnyFvFindFirstFile (
|
||||
IN EFI_FV_FILETYPE FileType,
|
||||
OUT EFI_PEI_FV_HANDLE *VolumeHandle,
|
||||
OUT EFI_PEI_FILE_HANDLE *FileHandle
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Get Fv image from the FV type file, then add FV & FV2 Hob.
|
||||
|
||||
@param FileHandle File handle of a Fv type file.
|
||||
|
||||
|
||||
@retval EFI_NOT_FOUND FV image can't be found.
|
||||
@retval EFI_SUCCESS Successfully to process it.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FfsProcessFvFile (
|
||||
IN EFI_PEI_FILE_HANDLE FvFileHandle
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
This service enables PEIMs to ascertain the present value of the boot mode.
|
||||
|
||||
|
||||
@retval BootMode
|
||||
|
||||
**/
|
||||
EFI_BOOT_MODE
|
||||
EFIAPI
|
||||
GetBootMode (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
This service enables PEIMs to update the boot mode variable.
|
||||
|
||||
@param BootMode The value of the boot mode to set.
|
||||
|
||||
@retval EFI_SUCCESS The value was successfully updated
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SetBootMode (
|
||||
IN EFI_BOOT_MODE BootMode
|
||||
);
|
||||
|
||||
/**
|
||||
This service enables a PEIM to ascertain the address of the list of HOBs in memory.
|
||||
|
||||
@param HobList A pointer to the list of HOBs that the PEI Foundation will initialize.
|
||||
|
||||
@retval EFI_SUCCESS The list was successfully returned.
|
||||
@retval EFI_NOT_AVAILABLE_YET The HOB list is not yet published.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
GetHobList (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Updates the pointer to the HOB list.
|
||||
|
||||
@param HobList Hob list pointer to store
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
SetHobList (
|
||||
IN VOID *HobList
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Retrieves the magic value from the PE/COFF header.
|
||||
|
||||
@param Hdr The buffer in which to return the PE32, PE32+, or TE header.
|
||||
|
||||
@return EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC - Image is PE32
|
||||
@return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC - Image is PE32+
|
||||
|
||||
**/
|
||||
VOID
|
||||
CreateHobList (
|
||||
IN VOID *MemoryBegin,
|
||||
IN UINTN MemoryLength,
|
||||
IN VOID *HobBase,
|
||||
IN VOID *StackBase
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
This service enables PEIMs to create various types of HOBs.
|
||||
|
||||
@param Type The type of HOB to be installed.
|
||||
@param Length The length of the HOB to be added.
|
||||
|
||||
@retval !NULL The HOB was successfully created.
|
||||
@retval NULL There is no additional space for HOB creation.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
CreateHob (
|
||||
IN UINT16 HobType,
|
||||
IN UINT16 HobLenght
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Returns the next instance of a HOB type from the starting HOB.
|
||||
|
||||
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.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
GetNextHob (
|
||||
IN UINT16 Type,
|
||||
IN CONST VOID *HobStart
|
||||
);
|
||||
|
||||
/**
|
||||
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.
|
||||
|
||||
@return The next instance of a HOB type from the starting HOB.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
GetFirstHob (
|
||||
IN UINT16 Type
|
||||
);
|
||||
|
||||
/**
|
||||
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.
|
||||
|
||||
@return The next instance of the matched GUID HOB from the starting HOB.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
GetNextGuidHob (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN CONST VOID *HobStart
|
||||
);
|
||||
|
||||
/**
|
||||
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.
|
||||
|
||||
@return The first instance of the matched GUID HOB among the whole HOB list.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
GetFirstGuidHob (
|
||||
IN CONST EFI_GUID *Guid
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Builds a HOB for a loaded PE32 module.
|
||||
|
||||
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 entry point.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
BuildModuleHob (
|
||||
IN CONST EFI_GUID *ModuleName,
|
||||
IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule,
|
||||
IN UINT64 ModuleLength,
|
||||
IN EFI_PHYSICAL_ADDRESS EntryPoint
|
||||
);
|
||||
|
||||
/**
|
||||
Builds a HOB that describes a chunk of system memory.
|
||||
|
||||
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
|
||||
EFIAPI
|
||||
BuildResourceDescriptorHob (
|
||||
IN EFI_RESOURCE_TYPE ResourceType,
|
||||
IN EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute,
|
||||
IN EFI_PHYSICAL_ADDRESS PhysicalStart,
|
||||
IN UINT64 NumberOfBytes
|
||||
);
|
||||
|
||||
/**
|
||||
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_GUID_TYPE)), 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.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
BuildGuidHob (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN DataLength
|
||||
);
|
||||
|
||||
/**
|
||||
Copies a data buffer to a newly-built 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_GUID_TYPE)), 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.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
BuildGuidDataHob (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN VOID *Data,
|
||||
IN UINTN DataLength
|
||||
);
|
||||
|
||||
/**
|
||||
Builds a Firmware Volume HOB.
|
||||
|
||||
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
|
||||
EFIAPI
|
||||
BuildFvHob (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length
|
||||
);
|
||||
|
||||
/**
|
||||
Builds a Firmware Volume HOB and a resrouce descriptor hob
|
||||
|
||||
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
|
||||
EFIAPI
|
||||
BuildFvHobs (
|
||||
IN EFI_PHYSICAL_ADDRESS PhysicalStart,
|
||||
IN UINT64 NumberOfBytes,
|
||||
IN EFI_RESOURCE_ATTRIBUTE_TYPE *ResourceAttribute OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Builds a EFI_HOB_TYPE_FV2 HOB.
|
||||
|
||||
This function builds a EFI_HOB_TYPE_FV2 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.
|
||||
@param FvName The name of the Firmware Volume.
|
||||
@param FileName The name of the file.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
BuildFv2Hob (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length,
|
||||
IN CONST EFI_GUID *FvName,
|
||||
IN CONST EFI_GUID *FileName
|
||||
);
|
||||
|
||||
/**
|
||||
Builds a Capsule Volume HOB.
|
||||
|
||||
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
|
||||
EFIAPI
|
||||
BuildCvHob (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length
|
||||
);
|
||||
|
||||
/**
|
||||
Builds a HOB for the CPU.
|
||||
|
||||
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
|
||||
EFIAPI
|
||||
BuildCpuHob (
|
||||
IN UINT8 SizeOfMemorySpace,
|
||||
IN UINT8 SizeOfIoSpace
|
||||
);
|
||||
|
||||
/**
|
||||
Builds a HOB for the Stack.
|
||||
|
||||
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
|
||||
EFIAPI
|
||||
BuildStackHob (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length
|
||||
);
|
||||
|
||||
/**
|
||||
Update the Stack Hob if the stack has been moved
|
||||
|
||||
@param BaseAddress The 64 bit physical address of the Stack.
|
||||
@param Length The length of the stack in bytes.
|
||||
|
||||
**/
|
||||
VOID
|
||||
UpdateStackHob (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Builds a HOB for the BSP store.
|
||||
|
||||
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
|
||||
EFIAPI
|
||||
BuildBspStoreHob (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length,
|
||||
IN EFI_MEMORY_TYPE MemoryType
|
||||
);
|
||||
|
||||
/**
|
||||
Builds a HOB for the memory allocation.
|
||||
|
||||
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
|
||||
EFIAPI
|
||||
BuildMemoryAllocationHob (
|
||||
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
||||
IN UINT64 Length,
|
||||
IN EFI_MEMORY_TYPE MemoryType
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of type EfiBootServicesData.
|
||||
|
||||
Allocates the number of 4KB pages of MemoryType and returns a pointer to the
|
||||
allocated buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL
|
||||
is returned. If there is not enough memory remaining to satisfy the request, then NULL is
|
||||
returned.
|
||||
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocatePages (
|
||||
IN UINTN Pages
|
||||
);
|
||||
|
||||
/**
|
||||
Allocates a buffer of type EfiBootServicesData.
|
||||
|
||||
Allocates the number bytes specified by AllocationSize of type EfiBootServicesData and returns a
|
||||
pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
|
||||
returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
|
||||
|
||||
@param AllocationSize The number of bytes to allocate.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocatePool (
|
||||
IN UINTN AllocationSize
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Allocates one or more 4KB pages of type EfiBootServicesData at a specified alignment.
|
||||
|
||||
Allocates the number of 4KB pages specified by Pages of type EfiBootServicesData with an
|
||||
alignment specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is
|
||||
returned. If there is not enough memory at the specified alignment remaining to satisfy the
|
||||
request, then NULL is returned.
|
||||
If Alignment is not a power of two and Alignment is not zero, then ASSERT().
|
||||
|
||||
@param Pages The number of 4 KB pages to allocate.
|
||||
@param Alignment The requested alignment of the allocation. Must be a power of two.
|
||||
If Alignment is zero, then byte alignment is used.
|
||||
|
||||
@return A pointer to the allocated buffer or NULL if allocation fails.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
AllocateAlignedPages (
|
||||
IN UINTN Pages,
|
||||
IN UINTN Alignment
|
||||
);
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LoadPeCoffImage (
|
||||
IN VOID *PeCoffImage,
|
||||
OUT EFI_PHYSICAL_ADDRESS *ImageAddress,
|
||||
OUT UINT64 *ImageSize,
|
||||
OUT EFI_PHYSICAL_ADDRESS *EntryPoint
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LoadDxeCoreFromFfsFile (
|
||||
IN EFI_PEI_FILE_HANDLE FileHandle,
|
||||
IN UINTN StackSize
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LoadDxeCoreFromFv (
|
||||
IN UINTN *FvInstance, OPTIONAL
|
||||
IN UINTN StackSize
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
DecompressFirstFv (
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
EFIAPI
|
||||
AddDxeCoreReportStatusCodeCallback (
|
||||
VOID
|
||||
);
|
||||
|
||||
|
||||
#endif
|
138
EmbeddedPkg/Include/Library/RealTimeClockLib.h
Normal file
138
EmbeddedPkg/Include/Library/RealTimeClockLib.h
Normal file
@@ -0,0 +1,138 @@
|
||||
/** @file
|
||||
Implement EFI RealTimeClock runtime services via Lib.
|
||||
|
||||
Currently this driver does not support runtime virtual calling.
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __REAL_TIME_CLOCK_LIB__
|
||||
#define __REAL_TIME_CLOCK_LIB__
|
||||
|
||||
|
||||
/**
|
||||
Returns the current time and date information, and the time-keeping capabilities
|
||||
of the hardware platform.
|
||||
|
||||
@param Time A pointer to storage to receive a snapshot of the current time.
|
||||
@param Capabilities An optional pointer to a buffer to receive the real time clock
|
||||
device's capabilities.
|
||||
|
||||
@retval EFI_SUCCESS The operation completed successfully.
|
||||
@retval EFI_INVALID_PARAMETER Time is NULL.
|
||||
@retval EFI_DEVICE_ERROR The time could not be retrieved due to hardware error.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibGetTime (
|
||||
OUT EFI_TIME *Time,
|
||||
OUT EFI_TIME_CAPABILITIES *Capabilities
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Sets the current local time and date information.
|
||||
|
||||
@param Time A pointer to the current time.
|
||||
|
||||
@retval EFI_SUCCESS The operation completed successfully.
|
||||
@retval EFI_INVALID_PARAMETER A time field is out of range.
|
||||
@retval EFI_DEVICE_ERROR The time could not be set due due to hardware error.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibSetTime (
|
||||
IN EFI_TIME *Time
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Returns the current wakeup alarm clock setting.
|
||||
|
||||
@param Enabled Indicates if the alarm is currently enabled or disabled.
|
||||
@param Pending Indicates if the alarm signal is pending and requires acknowledgement.
|
||||
@param Time The current alarm setting.
|
||||
|
||||
@retval EFI_SUCCESS The alarm settings were returned.
|
||||
@retval EFI_INVALID_PARAMETER Any parameter is NULL.
|
||||
@retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibGetWakeupTime (
|
||||
OUT BOOLEAN *Enabled,
|
||||
OUT BOOLEAN *Pending,
|
||||
OUT EFI_TIME *Time
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Sets the system wakeup alarm clock time.
|
||||
|
||||
@param Enabled Enable or disable the wakeup alarm.
|
||||
@param Time If Enable is TRUE, the time to set the wakeup alarm for.
|
||||
|
||||
@retval EFI_SUCCESS If Enable is TRUE, then the wakeup alarm was enabled. If
|
||||
Enable is FALSE, then the wakeup alarm was disabled.
|
||||
@retval EFI_INVALID_PARAMETER A time field is out of range.
|
||||
@retval EFI_DEVICE_ERROR The wakeup time could not be set due to a hardware error.
|
||||
@retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibSetWakeupTime (
|
||||
IN BOOLEAN Enabled,
|
||||
OUT EFI_TIME *Time
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
This is the declaration of an EFI image entry point. This can be the entry point to an application
|
||||
written to this specification, an EFI boot service driver, or an EFI runtime driver.
|
||||
|
||||
@param ImageHandle Handle that identifies the loaded image.
|
||||
@param SystemTable System Table for this image.
|
||||
|
||||
@retval EFI_SUCCESS The operation completed successfully.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
LibRtcInitialize (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Fixup internal data so that EFI can be call in virtual mode.
|
||||
Call the passed in Child Notify event and convert any pointers in
|
||||
lib to virtual mode.
|
||||
|
||||
@param[in] Event The Event that is being processed
|
||||
@param[in] Context Event Context
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibRtcVirtualNotifyEvent (
|
||||
IN EFI_EVENT Event,
|
||||
IN VOID *Context
|
||||
);
|
||||
|
||||
|
||||
#endif
|
||||
|
42
EmbeddedPkg/Include/Protocol/DebugSupportPeriodicCallback.h
Normal file
42
EmbeddedPkg/Include/Protocol/DebugSupportPeriodicCallback.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/** @file
|
||||
Protocol is used to help implement DebugSupport.RegisterPeriodicCallback() functionality.
|
||||
This enables the DXE timer driver to support the periodic callback function so the
|
||||
DebugSupport driver does not need to contain platform specific information about how a timer
|
||||
works.
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
|
||||
#ifndef __DEBUG_SUPPORT_PERIODIC_CALLBACK_H__
|
||||
#define __DEBUG_SUPPORT_PERIODIC_CALLBACK_H__
|
||||
|
||||
#include <Protocol/DebugSupport.h>
|
||||
|
||||
typedef struct _EFI_DEBUG_SUPPORT_PERIODIC_CALLBACK_PROTOCOL EFI_DEBUG_SUPPORT_PERIODIC_CALLBACK_PROTOCOL;
|
||||
|
||||
|
||||
// {9546E07C-2CBB-4c88-986C-CD341086F044}
|
||||
#define EFI_DEBUG_SUPPORT_PERIODIC_CALLBACK_PROTOCOL_GUID \
|
||||
{ 0x9546e07c, 0x2cbb, 0x4c88, { 0x98, 0x6c, 0xcd, 0x34, 0x10, 0x86, 0xf0, 0x44 } }
|
||||
|
||||
|
||||
//
|
||||
// DebugSupport protocol definition
|
||||
//
|
||||
struct _EFI_DEBUG_SUPPORT_PERIODIC_CALLBACK_PROTOCOL {
|
||||
EFI_PERIODIC_CALLBACK PeriodicCallback;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEfiDebugSupportPeriodicCallbackProtocolGuid;
|
||||
|
||||
#endif
|
156
EmbeddedPkg/Include/Protocol/EblAddCommand.h
Normal file
156
EmbeddedPkg/Include/Protocol/EblAddCommand.h
Normal file
@@ -0,0 +1,156 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
/** @file
|
||||
Abstraction for hardware based interrupt routine
|
||||
|
||||
Copyright (c) 2009 Apple Inc.
|
||||
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.
|
||||
|
||||
**/
|
||||
|
||||
|
||||
#ifndef __EBL_ADD_COMMAND_H__
|
||||
#define __EBL_ADD_COMMAND_H__
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Protocol GUID
|
||||
//
|
||||
// AEDA2428-9A22-4637-9B21-545E28FBB829
|
||||
|
||||
#define EBL_ADD_COMMAND_PROTOCOL_GUID \
|
||||
{ 0xaeda2428, 0x9a22, 0x4637, { 0x9b, 0x21, 0x54, 0x5e, 0x28, 0xfb, 0xb8, 0x29 } }
|
||||
|
||||
|
||||
typedef struct _EBL_ADD_COMMAND_PROTOCOL EBL_ADD_COMMAND_PROTOCOL;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EBL_COMMMAND) (
|
||||
IN UINTN Argc,
|
||||
IN CHAR8 **Argv
|
||||
);
|
||||
|
||||
typedef struct {
|
||||
CHAR8 *Name;
|
||||
CHAR8 *HelpSummary;
|
||||
CHAR8 *Help;
|
||||
EBL_COMMMAND Command;
|
||||
} EBL_COMMAND_TABLE;
|
||||
|
||||
|
||||
/**
|
||||
Add a single command table entry.
|
||||
|
||||
@param EntryArray Pointer EBL_COMMAND_TABLE of the command that is being added
|
||||
|
||||
**/
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EBL_ADD_COMMAND) (
|
||||
IN const EBL_COMMAND_TABLE *Entry
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Add a multiple command table entry.
|
||||
|
||||
@param EntryArray Pointer EBL_COMMAND_TABLE of the commands that are being added
|
||||
|
||||
@param ArrayCount Nuber of commands in the EntryArray.
|
||||
|
||||
**/
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EBL_ADD_COMMANDS) (
|
||||
IN const EBL_COMMAND_TABLE *EntryArray,
|
||||
IN UINTN ArrayCount
|
||||
);
|
||||
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *EBL_GET_CHAR_CALL_BACK) (
|
||||
IN UINTN ElapsedTime
|
||||
);
|
||||
|
||||
/**
|
||||
Return a keypress or optionally timeout if a timeout value was passed in.
|
||||
An optional callback funciton is called evey second when waiting for a
|
||||
timeout.
|
||||
|
||||
@param Key EFI Key information returned
|
||||
@param TimeoutInSec Number of seconds to wait to timeout
|
||||
@param CallBack Callback called every second during the timeout wait
|
||||
|
||||
@return EFI_SUCCESS Key was returned
|
||||
@return EFI_TIMEOUT If the TimoutInSec expired
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EBL_GET_CHAR_KEY) (
|
||||
IN OUT EFI_INPUT_KEY *Key,
|
||||
IN UINTN TimeoutInSec,
|
||||
IN EBL_GET_CHAR_CALL_BACK CallBack OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
This routine is used prevent command output data from scrolling off the end
|
||||
of the screen. The global gPageBreak is used to turn on or off this feature.
|
||||
If the CurrentRow is near the end of the screen pause and print out a prompt
|
||||
If the use hits Q to quit return TRUE else for any other key return FALSE.
|
||||
PrefixNewline is used to figure out if a newline is needed before the prompt
|
||||
string. This depends on the last print done before calling this function.
|
||||
CurrentRow is updated by one on a call or set back to zero if a prompt is
|
||||
needed.
|
||||
|
||||
@param CurrentRow Used to figure out if its the end of the page and updated
|
||||
@param PrefixNewline Did previous print issue a newline
|
||||
|
||||
@return TRUE if Q was hit to quit, FALSE in all other cases.
|
||||
|
||||
**/
|
||||
typedef
|
||||
BOOLEAN
|
||||
(EFIAPI *EBL_ANY_KEY_CONTINUE_Q_QUIT) (
|
||||
IN UINTN *CurrentRow,
|
||||
IN BOOLEAN PrefixNewline
|
||||
);
|
||||
|
||||
|
||||
|
||||
struct _EBL_ADD_COMMAND_PROTOCOL {
|
||||
EBL_ADD_COMMAND AddCommand;
|
||||
EBL_ADD_COMMANDS AddCommands;
|
||||
|
||||
// Commands to reuse EBL infrastructure
|
||||
EBL_GET_CHAR_KEY EblGetCharKey;
|
||||
EBL_ANY_KEY_CONTINUE_Q_QUIT EblAnyKeyToContinueQtoQuit;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEfiEblAddCommandProtocolGuid;
|
||||
|
||||
#endif
|
||||
|
||||
|
58
EmbeddedPkg/Include/Protocol/EmbeddedDevice.h
Normal file
58
EmbeddedPkg/Include/Protocol/EmbeddedDevice.h
Normal file
@@ -0,0 +1,58 @@
|
||||
/** @file
|
||||
Deal with devices that just exist in memory space.
|
||||
|
||||
To follow the EFI driver model you need a root handle to start with. An
|
||||
EFI driver will have a driver binding protocol (Supported, Start, Stop)
|
||||
that is used to layer on top of a handle via a gBS->ConnectController.
|
||||
The first handle has to just be in the system to make that work. For
|
||||
PCI it is a PCI Root Bridge IO protocol that provides the root.
|
||||
|
||||
On an embedded system with MMIO device we need a handle to just
|
||||
show up. That handle will have this protocol and a device path
|
||||
protocol on it.
|
||||
|
||||
For an ethernet device the device path must contain a MAC address device path
|
||||
node.
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __EMBEDDED_DEVICE_PROTOCOL_H__
|
||||
#define __EMBEDDED_DEVICE_PROTOCOL_H__
|
||||
|
||||
|
||||
//
|
||||
// Protocol GUID
|
||||
//
|
||||
// BF4B9D10-13EC-43dd-8880-E90B718F27DE
|
||||
|
||||
#define EMBEDDED_DEVICE_PROTOCOL_GUID \
|
||||
{ 0xbf4b9d10, 0x13ec, 0x43dd, { 0x88, 0x80, 0xe9, 0xb, 0x71, 0x8f, 0x27, 0xde } }
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
UINT16 VendorId;
|
||||
UINT16 DeviceId;
|
||||
UINT16 RevisionId;
|
||||
UINT16 SubsystemId;
|
||||
UINT16 SubsystemVendorId;
|
||||
UINT8 ClassCode[3];
|
||||
UINT8 HeaderSize;
|
||||
UINTN BaseAddress;
|
||||
} EMBEDDED_DEVICE_PROTOCOL;
|
||||
|
||||
extern EFI_GUID gEmbeddedDeviceGuid;
|
||||
|
||||
#endif
|
||||
|
||||
|
94
EmbeddedPkg/Include/Protocol/EmbeddedExternalDevice.h
Normal file
94
EmbeddedPkg/Include/Protocol/EmbeddedExternalDevice.h
Normal file
@@ -0,0 +1,94 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __EMBEDDED_EXTERNAL_DEVICE_H__
|
||||
#define __EMBEDDED_EXTERNAL_DEVICE_H__
|
||||
|
||||
//
|
||||
// Protocol GUID
|
||||
//
|
||||
#define EMBEDDED_EXTERNAL_DEVICE_PROTOCOL_GUID { 0x735F8C64, 0xD696, 0x44D0, { 0xBD, 0xF2, 0x44, 0x7F, 0xD0, 0x5A, 0x54, 0x06 }}
|
||||
|
||||
//
|
||||
// Protocol interface structure
|
||||
//
|
||||
typedef struct _EMBEDDED_EXTERNAL_DEVICE EMBEDDED_EXTERNAL_DEVICE;
|
||||
|
||||
//
|
||||
// Function Prototypes
|
||||
//
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMBEDDED_EXTERNAL_DEVICE_READ) (
|
||||
IN EMBEDDED_EXTERNAL_DEVICE *This,
|
||||
IN UINTN Register,
|
||||
IN UINTN Length,
|
||||
OUT VOID *Buffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Read a set of contiguous external device registers.
|
||||
|
||||
Arguments:
|
||||
|
||||
This - pointer to protocol
|
||||
Offset - starting register number
|
||||
Length - number of bytes to read
|
||||
Buffer - destination buffer
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - registers read successfully
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMBEDDED_EXTERNAL_DEVICE_WRITE) (
|
||||
IN EMBEDDED_EXTERNAL_DEVICE *This,
|
||||
IN UINTN Register,
|
||||
IN UINTN Length,
|
||||
IN VOID *Buffer
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Write to a set of contiguous external device registers.
|
||||
|
||||
Arguments:
|
||||
|
||||
This - pointer to protocol
|
||||
Offset - starting register number
|
||||
Length - number of bytes to write
|
||||
Buffer - source buffer
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - registers written successfully
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
struct _EMBEDDED_EXTERNAL_DEVICE {
|
||||
EMBEDDED_EXTERNAL_DEVICE_READ Read;
|
||||
EMBEDDED_EXTERNAL_DEVICE_WRITE Write;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEmbeddedExternalDeviceProtocolGuid;
|
||||
|
||||
#endif // __EMBEDDED_EXTERNAL_DEVICE_H__
|
167
EmbeddedPkg/Include/Protocol/EmbeddedGpio.h
Normal file
167
EmbeddedPkg/Include/Protocol/EmbeddedGpio.h
Normal file
@@ -0,0 +1,167 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __EMBEDDED_GPIO_H__
|
||||
#define __EMBEDDED_GPIO_H__
|
||||
|
||||
//
|
||||
// Protocol interface structure
|
||||
//
|
||||
typedef struct _EMBEDDED_GPIO EMBEDDED_GPIO;
|
||||
|
||||
//
|
||||
// Data Types
|
||||
//
|
||||
typedef UINTN EMBEDDED_GPIO_PIN;
|
||||
|
||||
#define GPIO(Port, Pin) ((EMBEDDED_GPIO_PIN)(((Port) << (16)) | (Pin)))
|
||||
#define GPIO_PIN(x) ((EMBEDDED_GPIO_PIN)(x) & (0xFFFF))
|
||||
#define GPIO_PORT(x) ((EMBEDDED_GPIO_PIN)(x) >> (16))
|
||||
|
||||
typedef enum {
|
||||
GPIO_MODE_INPUT = 0x00,
|
||||
GPIO_MODE_OUTPUT_0 = 0x0E,
|
||||
GPIO_MODE_OUTPUT_1 = 0x0F,
|
||||
GPIO_MODE_SPECIAL_FUNCTION_2 = 0x02,
|
||||
GPIO_MODE_SPECIAL_FUNCTION_3 = 0x03,
|
||||
GPIO_MODE_SPECIAL_FUNCTION_4 = 0x04,
|
||||
GPIO_MODE_SPECIAL_FUNCTION_5 = 0x05,
|
||||
GPIO_MODE_SPECIAL_FUNCTION_6 = 0x06,
|
||||
GPIO_MODE_SPECIAL_FUNCTION_7 = 0x07
|
||||
} EMBEDDED_GPIO_MODE;
|
||||
|
||||
typedef enum {
|
||||
GPIO_PULL_NONE,
|
||||
GPIO_PULL_UP,
|
||||
GPIO_PULL_DOWN
|
||||
} EMBEDDED_GPIO_PULL;
|
||||
|
||||
//
|
||||
// Function Prototypes
|
||||
//
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMBEDDED_GPIO_GET) (
|
||||
IN EMBEDDED_GPIO *This,
|
||||
IN EMBEDDED_GPIO_PIN Gpio,
|
||||
OUT UINTN *Value
|
||||
);
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Gets the state of a GPIO pin
|
||||
|
||||
Arguments:
|
||||
|
||||
This - pointer to protocol
|
||||
Gpio - which pin to read
|
||||
Value - state of the pin
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - GPIO state returned in Value
|
||||
|
||||
--*/
|
||||
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMBEDDED_GPIO_SET) (
|
||||
IN EMBEDDED_GPIO *This,
|
||||
IN EMBEDDED_GPIO_PIN Gpio,
|
||||
IN EMBEDDED_GPIO_MODE Mode
|
||||
);
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Sets the state of a GPIO pin
|
||||
|
||||
Arguments:
|
||||
|
||||
This - pointer to protocol
|
||||
Gpio - which pin to modify
|
||||
Mode - mode to set
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - GPIO set as requested
|
||||
|
||||
--*/
|
||||
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMBEDDED_GPIO_GET_MODE) (
|
||||
IN EMBEDDED_GPIO *This,
|
||||
IN EMBEDDED_GPIO_PIN Gpio,
|
||||
OUT EMBEDDED_GPIO_MODE *Mode
|
||||
);
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Gets the mode (function) of a GPIO pin
|
||||
|
||||
Arguments:
|
||||
|
||||
This - pointer to protocol
|
||||
Gpio - which pin
|
||||
Mode - pointer to output mode value
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - mode value retrieved
|
||||
|
||||
--*/
|
||||
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EMBEDDED_GPIO_SET_PULL) (
|
||||
IN EMBEDDED_GPIO *This,
|
||||
IN EMBEDDED_GPIO_PIN Gpio,
|
||||
IN EMBEDDED_GPIO_PULL Direction
|
||||
);
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Sets the pull-up / pull-down resistor of a GPIO pin
|
||||
|
||||
Arguments:
|
||||
|
||||
This - pointer to protocol
|
||||
Gpio - which pin
|
||||
Direction - pull-up, pull-down, or none
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - pin was set
|
||||
|
||||
--*/
|
||||
|
||||
|
||||
|
||||
struct _EMBEDDED_GPIO {
|
||||
EMBEDDED_GPIO_GET Get;
|
||||
EMBEDDED_GPIO_SET Set;
|
||||
EMBEDDED_GPIO_GET_MODE GetMode;
|
||||
EMBEDDED_GPIO_SET_PULL SetPull;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEmbeddedGpioProtocolGuid;
|
||||
|
||||
#endif
|
151
EmbeddedPkg/Include/Protocol/HardwareInterrupt.h
Normal file
151
EmbeddedPkg/Include/Protocol/HardwareInterrupt.h
Normal file
@@ -0,0 +1,151 @@
|
||||
/** @file
|
||||
Abstraction for hardware based interrupt routine
|
||||
|
||||
On non IA-32 systems it is common to have a single hardware interrupt vector
|
||||
and a 2nd layer of software that routes the interrupt handlers based on the
|
||||
interrupt source. This protocol enables this routing. The driver implementing
|
||||
this protocol is responsible for clearing the pending interrupt in the
|
||||
interrupt routing hardware. The HARDWARE_INTERRUPT_HANDLER is responsible
|
||||
for clearing interrupt sources from individual devices.
|
||||
|
||||
|
||||
Copyright (c) 2008-2009 Apple Inc. All rights reserved.<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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __HARDWARE_INTERRUPT_H__
|
||||
#define __HARDWARE_INTERRUPT_H__
|
||||
|
||||
#include <Protocol/DebugSupport.h>
|
||||
|
||||
|
||||
//
|
||||
// Protocol GUID
|
||||
//
|
||||
// EAB39028-3D05-4316-AD0C-D64808DA3FF1
|
||||
|
||||
#define EFI_HARDWARE_INTERRUPT_PROTOCOL_GGUID \
|
||||
{ 0x2890B3EA, 0x053D, 0x1643, { 0xAD, 0x0C, 0xD6, 0x48, 0x08, 0xDA, 0x3F, 0xF1 } }
|
||||
|
||||
|
||||
typedef struct _EFI_HARDWARE_INTERRUPT_PROTOCOL EFI_HARDWARE_INTERRUPT_PROTOCOL;
|
||||
|
||||
|
||||
typedef UINTN HARDWARE_INTERRUPT_SOURCE;
|
||||
|
||||
|
||||
/**
|
||||
C Interrupt Handler calledin the interrupt context when Source interrupt is active.
|
||||
|
||||
@param Source Source of the interrupt. Hardware routing off a specific platform defines
|
||||
what source means.
|
||||
@param SystemContext Pointer to system register context. Mostly used by debuggers and will
|
||||
update the system context after the return from the interrupt if
|
||||
modified. Don't change these values unless you know what you are doing
|
||||
|
||||
**/
|
||||
typedef
|
||||
VOID
|
||||
(EFIAPI *HARDWARE_INTERRUPT_HANDLER) (
|
||||
IN HARDWARE_INTERRUPT_SOURCE Source,
|
||||
IN EFI_SYSTEM_CONTEXT SystemContext
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Register Handler for the specified interrupt source.
|
||||
|
||||
@param This Instance pointer for this protocol
|
||||
@param Source Hardware source of the interrupt
|
||||
@param Handler Callback for interrupt. NULL to unregister
|
||||
|
||||
@retval EFI_SUCCESS Source was updated to support Handler.
|
||||
@retval EFI_DEVICE_ERROR Hardware could not be programmed.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *HARDWARE_INTERRUPT_REGISTER) (
|
||||
IN EFI_HARDWARE_INTERRUPT_PROTOCOL *This,
|
||||
IN HARDWARE_INTERRUPT_SOURCE Source,
|
||||
IN HARDWARE_INTERRUPT_HANDLER Handler
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Enable interrupt source Source.
|
||||
|
||||
@param This Instance pointer for this protocol
|
||||
@param Source Hardware source of the interrupt
|
||||
|
||||
@retval EFI_SUCCESS Source interrupt enabled.
|
||||
@retval EFI_DEVICE_ERROR Hardware could not be programmed.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *HARDWARE_INTERRUPT_ENABLE) (
|
||||
IN EFI_HARDWARE_INTERRUPT_PROTOCOL *This,
|
||||
IN HARDWARE_INTERRUPT_SOURCE Source
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Disable interrupt source Source.
|
||||
|
||||
@param This Instance pointer for this protocol
|
||||
@param Source Hardware source of the interrupt
|
||||
|
||||
@retval EFI_SUCCESS Source interrupt disabled.
|
||||
@retval EFI_DEVICE_ERROR Hardware could not be programmed.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *HARDWARE_INTERRUPT_DISABLE) (
|
||||
IN EFI_HARDWARE_INTERRUPT_PROTOCOL *This,
|
||||
IN HARDWARE_INTERRUPT_SOURCE Source
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
Return current state of interrupt source Source.
|
||||
|
||||
@param This Instance pointer for this protocol
|
||||
@param Source Hardware source of the interrupt
|
||||
@param InterruptState TRUE: source enabled, FALSE: source disabled.
|
||||
|
||||
@retval EFI_SUCCESS InterruptState is valid
|
||||
@retval EFI_DEVICE_ERROR InterruptState is not valid
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *HARDWARE_INTERRUPT_INTERRUPT_STATE) (
|
||||
IN EFI_HARDWARE_INTERRUPT_PROTOCOL *This,
|
||||
IN HARDWARE_INTERRUPT_SOURCE Source,
|
||||
IN BOOLEAN *InterruptState
|
||||
);
|
||||
|
||||
|
||||
struct _EFI_HARDWARE_INTERRUPT_PROTOCOL {
|
||||
HARDWARE_INTERRUPT_REGISTER RegisterInterruptSource;
|
||||
HARDWARE_INTERRUPT_ENABLE EnableInterruptSource;
|
||||
HARDWARE_INTERRUPT_DISABLE DisableInterruptSource;
|
||||
HARDWARE_INTERRUPT_INTERRUPT_STATE GetInterruptSourceState;
|
||||
};
|
||||
|
||||
extern EFI_GUID gHardwareInterruptProtocolGuid;
|
||||
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user