Initial import.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
bbahnsen
2006-04-21 22:54:32 +00:00
commit 878ddf1fc3
2651 changed files with 624620 additions and 0 deletions

View File

@@ -0,0 +1,161 @@
/** @file
This file declares BlockIo PPI used to access block-oriented storage devices
Copyright (c) 2006, Intel Corporation
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: BlockIo.h
@par Revision Reference:
This PPI is defined in Framework of EFI Recovery Spec
Version 0.9
**/
#ifndef _PEI_BLOCK_IO_H_
#define _PEI_BLOCK_IO_H_
#define EFI_PEI_VIRTUAL_BLOCK_IO_PPI \
{ \
0x695d8aa1, 0x42ee, 0x4c46, {0x80, 0x5c, 0x6e, 0xa6, 0xbc, 0xe7, 0x99, 0xe3 } \
}
typedef struct _EFI_PEI_RECOVERY_BLOCK_IO_PPI EFI_PEI_RECOVERY_BLOCK_IO_PPI;
typedef UINT64 EFI_PEI_LBA;
typedef enum {
LegacyFloppy = 0,
IdeCDROM = 1,
IdeLS120 = 2,
UsbMassStorage= 3,
MaxDeviceType
} EFI_PEI_BLOCK_DEVICE_TYPE;
typedef struct {
EFI_PEI_BLOCK_DEVICE_TYPE DeviceType;
BOOLEAN MediaPresent;
UINTN LastBlock;
UINTN BlockSize;
} EFI_PEI_BLOCK_IO_MEDIA;
/**
Gets the count of block I/O devices that one specific block driver detects.
@param PeiServices General-purpose services that are available to every PEIM.
@param This Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI instance.
@param NumberBlockDevices The number of block I/O devices discovered.
@return Status code
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_GET_NUMBER_BLOCK_DEVICES) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,
OUT UINTN *NumberBlockDevices
);
/**
Gets a block device<63><65>s media information.
@param PeiServices General-purpose services that are available to every PEIM
@param This Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI instance.
@param DeviceIndex Specifies the block device to which the function
wants to talk. Because the driver that implements Block I/O PPIs
will manage multiple block devices, the PPIs that want to talk to a single
device must specify the device index that was assigned during the enumeration
process. This index is a number from one to NumberBlockDevices.
@param MediaInfo The media information of the specified block media.
@retval EFI_SUCCESS Media information about the specified block device was obtained successfully.
@retval EFI_DEVICE_ERROR Cannot get the media information due to a hardware error.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_GET_DEVICE_MEDIA_INFORMATION) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,
IN UINTN DeviceIndex,
OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo
);
/**
Reads the requested number of blocks from the specified block device.
@param PeiServices General-purpose services that are available to every PEIM.
@param This Indicates the EFI_PEI_RECOVERY_BLOCK_IO_PPI instance.
@param DeviceIndex Specifies the block device to which the function wants to talk.
@param StartLBA The starting logical block address (LBA) to read from on the device
@param BufferSize The size of the Buffer in bytes. This number must
be a multiple of the intrinsic block size of the device.
@param Buffer A pointer to the destination buffer for the data.
The caller is responsible for the ownership of the buffer.
@retval EFI_SUCCESS The data was read correctly from the device.
@retval EFI_DEVICE_ERROR The device reported an error while attempting to perform the read operation.
@retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid,
or the buffer is not properly aligned.
@retval EFI_BAD_BUFFER_SIZE The BufferSize parameter is not a multiple of
the intrinsic block size of the device.
@retval EFI_NO_MEDIA There is no media in the device.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_READ_BLOCKS) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,
IN UINTN DeviceIndex,
IN EFI_PEI_LBA StartLBA,
IN UINTN BufferSize,
OUT VOID *Buffer
);
/**
@par Ppi Description:
EFI_PEI_RECOVERY_BLOCK_IO_PPI provides the services that are required
to access a block I/O device during PEI recovery boot mode.
@param GetNumberOfBlockDevices
Gets the number of block I/O devices that the specific block driver manages.
@param GetBlockDeviceMediaInfo
Gets the specified media information.
@param ReadBlocks
Reads the requested number of blocks from the specified block device.
**/
struct _EFI_PEI_RECOVERY_BLOCK_IO_PPI {
EFI_PEI_GET_NUMBER_BLOCK_DEVICES GetNumberOfBlockDevices;
EFI_PEI_GET_DEVICE_MEDIA_INFORMATION GetBlockDeviceMediaInfo;
EFI_PEI_READ_BLOCKS ReadBlocks;
};
extern EFI_GUID gEfiPeiBlockIoPpiGuid;
#endif

View File

@@ -0,0 +1,33 @@
/** @file
This PPI is installed by the platform PEIM to designate that a recovery boot
is in progress.
Copyright (c) 2006, Intel Corporation
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: BootInRecoveryMode.h
@par Revision Reference:
This PPI is defined in PEI CIS spec
Version 0.91.
**/
#ifndef __BOOT_IN_RECOVERY_MODE_PPI_H__
#define __BOOT_IN_RECOVERY_MODE_PPI_H__
#define EFI_PEI_BOOT_IN_RECOVERY_MODE_PEIM_PPI \
{ \
0x17ee496a, 0xd8e4, 0x4b9a, {0x94, 0xd1, 0xce, 0x82, 0x72, 0x30, 0x8, 0x50 } \
}
extern EFI_GUID gEfiPeiBootInRecoveryModePpiGuid;
#endif

View File

@@ -0,0 +1,78 @@
/** @file
This file declares Boot Script Executer PPI.
Copyright (c) 2006, Intel Corporation
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: BootScriptExecuter.h
@par Revision Reference:
This PPI is defined in Framework of EFI BootScript spec.
Version 0.91.
**/
#ifndef _PEI_BOOT_SCRIPT_EXECUTER_PPI_H
#define _PEI_BOOT_SCRIPT_EXECUTER_PPI_H
#define EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID \
{ \
0xabd42895, 0x78cf, 0x4872, {0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff } \
}
typedef struct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI;
/**
Executes the Framework boot script table.
@param PeiServices A pointer to the system PEI Services Table.
@param This A pointer to the EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI instance.
@param Address The physical memory address where the table is stored.
It must be zero if the table to be executed is stored in a firmware volume file.
@param FvFile The firmware volume file name that contains the table to
be executed. It must be NULL if the table to be executed is stored in physical memory.
@retval EFI_SUCCESS The boot script table was executed successfully.
@retval EFI_INVALID_PARAMETER Address is zero and FvFile is NULL.
@retval EFI_NOT_FOUND The file name specified in FvFile cannot be found.
@retval EFI_UNSUPPORTED The format of the boot script table is invalid.
Or An unsupported opcode occurred in the table.
Or There were opcode execution errors, such as an insufficient dependency.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_BOOT_SCRIPT_EXECUTE) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI *This,
IN EFI_PHYSICAL_ADDRESS Address,
IN EFI_GUID *FvFile OPTIONAL
);
/**
@par Ppi Description:
This PPI produces functions to interpret and execute the Framework boot script table.
@param Execute
Executes a boot script table.
**/
struct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI {
EFI_PEI_BOOT_SCRIPT_EXECUTE Execute;
};
extern EFI_GUID gEfiPeiBootScriptExecuterPpiGuid;
#endif

520
MdePkg/Include/Ppi/CpuIo.h Normal file
View File

@@ -0,0 +1,520 @@
/** @file
This file declares CPU IO PPI that abstracts CPU IO access
Copyright (c) 2006, Intel Corporation
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: CpuIo.h
@par Revision Reference:
This PPI is defined in PEI CIS.
Version 0.91.
**/
#ifndef __PEI_CPUIO_PPI_H__
#define __PEI_CPUIO_PPI_H__
#define EFI_PEI_CPU_IO_PPI_INSTALLED_GUID \
{ \
0xe6af1f7b, 0xfc3f, 0x46da, {0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82 } \
}
typedef struct _EFI_PEI_CPU_IO_PPI EFI_PEI_CPU_IO_PPI;
//
// *******************************************************
// EFI_PEI_CPU_IO_PPI_WIDTH
// *******************************************************
//
typedef enum {
EfiPeiCpuIoWidthUint8,
EfiPeiCpuIoWidthUint16,
EfiPeiCpuIoWidthUint32,
EfiPeiCpuIoWidthUint64,
EfiPeiCpuIoWidthFifoUint8,
EfiPeiCpuIoWidthFifoUint16,
EfiPeiCpuIoWidthFifoUint32,
EfiPeiCpuIoWidthFifoUint64,
EfiPeiCpuIoWidthFillUint8,
EfiPeiCpuIoWidthFillUint16,
EfiPeiCpuIoWidthFillUint32,
EfiPeiCpuIoWidthFillUint64,
EfiPeiCpuIoWidthMaximum
} EFI_PEI_CPU_IO_PPI_WIDTH;
/**
Memory-based access services and I/O-based access services.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Width The width of the access. Enumerated in bytes.
@param Address The physical address of the access.
@param Count The number of accesses to perform.
@param Buffer A pointer to the buffer of data.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_NOT_YET_AVAILABLE The service has not been installed.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_MEM) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN EFI_PEI_CPU_IO_PPI_WIDTH Width,
IN UINT64 Address,
IN UINTN Count,
IN OUT VOID *Buffer
);
//
// *******************************************************
// EFI_PEI_CPU_IO_PPI_ACCESS
// *******************************************************
//
typedef struct {
EFI_PEI_CPU_IO_PPI_IO_MEM Read;
EFI_PEI_CPU_IO_PPI_IO_MEM Write;
} EFI_PEI_CPU_IO_PPI_ACCESS;
/**
8-bit I/O read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT8
**/
typedef
UINT8
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ8) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
16-bit I/O read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT16
**/
typedef
UINT16
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ16) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
32-bit I/O read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT32
**/
typedef
UINT32
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ32) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
64-bit I/O read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT64
**/
typedef
UINT64
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_READ64) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
8-bit I/O write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE8) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT8 Data
);
/**
16-bit I/O write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE16) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT16 Data
);
/**
32-bit I/O write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE32) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT32 Data
);
/**
64-bit I/O write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_IO_WRITE64) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT64 Data
);
/**
8-bit Memory read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT8
**/
typedef
UINT8
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ8) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
16-bit Memory read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT16
**/
typedef
UINT16
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ16) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
32-bit Memory read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT32
**/
typedef
UINT32
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ32) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
64-bit Memory read operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@return UINT64
**/
typedef
UINT64
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_READ64) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address
);
/**
8-bit Memory write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE8) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT8 Data
);
/**
16-bit Memory write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE16) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT16 Data
);
/**
32-bit Memory write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE32) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT32 Data
);
/**
64-bit Memory write operations.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Address The physical address of the access.
@param Data The data to write.
@return None
**/
typedef
VOID
(EFIAPI *EFI_PEI_CPU_IO_PPI_MEM_WRITE64) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_CPU_IO_PPI *This,
IN UINT64 Address,
IN UINT64 Data
);
/**
@par Ppi Description:
EFI_PEI_CPU_IO_PPI provides a set of memory and I/O-based services.
The perspective of the services is that of the processor, not the bus or system.
@param Mem
Collection of memory-access services.
@param I/O
Collection of I/O-access services.
@param IoRead8
8-bit read service.
@param IoRead16
16-bit read service.
@param IoRead32
32-bit read service.
@param IoRead64
64-bit read service.
@param IoWrite8
8-bit write service.
@param IoWrite16
16-bit write service.
@param IoWrite32
32-bit write service.
@param IoWrite64
64-bit write service.
@param MemRead8
8-bit read service.
@param MemRead16
16-bit read service.
@param MemRead32
32-bit read service.
@param MemRead64
64-bit read service.
@param MemWrite8
8-bit write service.
@param MemWrite16
16-bit write service.
@param MemWrite32
32-bit write service.
@param MemWrite64
64-bit write service.
**/
struct _EFI_PEI_CPU_IO_PPI {
EFI_PEI_CPU_IO_PPI_ACCESS Mem;
EFI_PEI_CPU_IO_PPI_ACCESS Io;
EFI_PEI_CPU_IO_PPI_IO_READ8 IoRead8;
EFI_PEI_CPU_IO_PPI_IO_READ16 IoRead16;
EFI_PEI_CPU_IO_PPI_IO_READ32 IoRead32;
EFI_PEI_CPU_IO_PPI_IO_READ64 IoRead64;
EFI_PEI_CPU_IO_PPI_IO_WRITE8 IoWrite8;
EFI_PEI_CPU_IO_PPI_IO_WRITE16 IoWrite16;
EFI_PEI_CPU_IO_PPI_IO_WRITE32 IoWrite32;
EFI_PEI_CPU_IO_PPI_IO_WRITE64 IoWrite64;
EFI_PEI_CPU_IO_PPI_MEM_READ8 MemRead8;
EFI_PEI_CPU_IO_PPI_MEM_READ16 MemRead16;
EFI_PEI_CPU_IO_PPI_MEM_READ32 MemRead32;
EFI_PEI_CPU_IO_PPI_MEM_READ64 MemRead64;
EFI_PEI_CPU_IO_PPI_MEM_WRITE8 MemWrite8;
EFI_PEI_CPU_IO_PPI_MEM_WRITE16 MemWrite16;
EFI_PEI_CPU_IO_PPI_MEM_WRITE32 MemWrite32;
EFI_PEI_CPU_IO_PPI_MEM_WRITE64 MemWrite64;
};
extern EFI_GUID gEfiPeiCpuIoPpiInServiceTableGuid;
#endif

View File

@@ -0,0 +1,143 @@
/** @file
This file declares Device Recovery Module PPI.
Copyright (c) 2006, Intel Corporation
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: DeviceRecoveryModule.h
@par Revision Reference:
This PPI is defined in Framework of EFI Recovery spec.
Version 0.9
**/
#ifndef _PEI_DEVICE_RECOVERY_MODULE_PPI_H
#define _PEI_DEVICE_RECOVERY_MODULE_PPI_H
#define EFI_PEI_DEVICE_RECOVERY_MODULE_PPI_GUID \
{ \
0x0DE2CE25, 0x446A, 0x45a7, {0xBF, 0xC9, 0x37, 0xDA, 0x26, 0x34, 0x4B, 0x37 } \
}
typedef struct _EFI_PEI_DEVICE_RECOVERY_MODULE_PPI EFI_PEI_DEVICE_RECOVERY_MODULE_PPI;
/**
This function, by whatever mechanism, searches for DXE capsules from the
associated device and returns the number and maximum size in bytes of
the capsules discovered. Entry 1 is assumed to be the highest load priority
and entry N is assumed to be the lowest priority.
@param PeiServices General-purpose services that are available to every PEIM
@param This Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI instance.
@param NumberRecoveryCapsules Pointer to a caller-allocated UINTN. On output,
*NumberRecoveryCapsules contains the number of recovery capsule images available
for retrieval from this PEIM instance.
@retval EFI_SUCCESS One or more capsules were discovered.
@retval EFI_DEVICE_ERROR A device error occurred.
@retval EFI_NOT_FOUND A recovery DXE capsule cannot be found.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_DEVICE_GET_NUMBER_RECOVERY_CAPSULE) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,
OUT UINTN *NumberRecoveryCapsules
);
/**
This function gets the size and type of the requested recovery capsule.
@param PeiServices General-purpose services that are available to every PEIM
@param This Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI instance.
@param CapsuleInstance Specifies for which capsule instance to retrieve the information.
@param Size A pointer to a caller-allocated UINTN in which the size of
the requested recovery module is returned.
@param CapsuleType A pointer to a caller-allocated EFI_GUID in
which the type of the requested recovery capsule is returned.
@retval EFI_SUCCESS One or more capsules were discovered.
@retval EFI_DEVICE_ERROR A device error occurred.
@retval EFI_NOT_FOUND A recovery DXE capsule cannot be found.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_DEVICE_GET_RECOVERY_CAPSULE_INFO) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,
IN UINTN CapsuleInstance,
OUT UINTN *Size,
OUT EFI_GUID *CapsuleType
);
/**
This function, by whatever mechanism, retrieves a DXE capsule from some device
and loads it into memory. Note that the published interface is device neutral.
@param PeiServices General-purpose services that are available to every PEIM
@param This Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI instance.
@param CapsuleInstance Specifies which capsule instance to retrieve.
@param Buffer Specifies a caller-allocated buffer in which the requested recovery capsule will be returned.
@retval EFI_SUCCESS One or more capsules were discovered.
@retval EFI_DEVICE_ERROR A device error occurred.
@retval EFI_NOT_FOUND A recovery DXE capsule cannot be found.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_DEVICE_LOAD_RECOVERY_CAPSULE) (
IN OUT EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,
IN UINTN CapsuleInstance,
OUT VOID *Buffer
);
/**
@par Ppi Description:
Presents a standard interface to EFI_PEI_DEVICE_RECOVERY_MODULE_PPI,
regardless of the underlying device(s).
@param GetNumberRecoveryCapsules
Returns the number of DXE capsules that were found.
@param GetRecoveryCapsuleInfo
Returns the capsule image type and the size of a given image.
@param LoadRecoveryCapsule
Loads a DXE capsule into memory
**/
struct _EFI_PEI_DEVICE_RECOVERY_MODULE_PPI {
EFI_PEI_DEVICE_GET_NUMBER_RECOVERY_CAPSULE GetNumberRecoveryCapsules;
EFI_PEI_DEVICE_GET_RECOVERY_CAPSULE_INFO GetRecoveryCapsuleInfo;
EFI_PEI_DEVICE_LOAD_RECOVERY_CAPSULE LoadRecoveryCapsule;
};
extern EFI_GUID gEfiPeiDeviceRecoveryModulePpiGuid;
#endif

View File

@@ -0,0 +1,70 @@
/** @file
This file declares DXE Initial Program Load PPI.
When the PEI core is done it calls the DXE IPL via this PPI.
Copyright (c) 2006, Intel Corporation
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: DxeIpl.h
@par Revision Reference:
This PPI is defined in PEI CIS.
Version 0.91.
**/
#ifndef __DXE_IPL_H__
#define __DXE_IPL_H__
#define EFI_DXE_IPL_PPI_GUID \
{ \
0xae8ce5d, 0xe448, 0x4437, {0xa8, 0xd7, 0xeb, 0xf5, 0xf1, 0x94, 0xf7, 0x31 } \
}
typedef struct _EFI_DXE_IPL_PPI EFI_DXE_IPL_PPI;
/**
The architectural PPI that the PEI Foundation invokes when
there are no additional PEIMs to invoke.
@param This Pointer to the DXE IPL PPI instance
@param PeiServices Pointer to the PEI Services Table.
@param HobList Pointer to the list of Hand-Off Block (HOB) entries.
@retval EFI_SUCCESS Upon this return code, the PEI Foundation should enter
some exception handling.Under normal circumstances, the DXE IPL PPI should not return.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_DXE_IPL_ENTRY) (
IN EFI_DXE_IPL_PPI *This,
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_HOB_POINTERS HobList
);
/**
@par Ppi Description:
Final service to be invoked by the PEI Foundation.
The DXE IPL PPI is responsible for locating and loading the DXE Foundation.
The DXE IPL PPI may use PEI services to locate and load the DXE Foundation.
@param Entry
The entry point to the DXE IPL PPI.
**/
struct _EFI_DXE_IPL_PPI {
EFI_DXE_IPL_ENTRY Entry;
};
extern EFI_GUID gEfiDxeIplPpiGuid;
#endif

View File

@@ -0,0 +1,31 @@
/** @file
PPI to be used to signal when the PEI ownership of the memory map
officially ends and DXE will take over
Copyright (c) 2006, Intel Corporation
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: EndOfPeiSignal.h
@par Revision Reference:
This PPI is defined in PEI CIS spec Version 0.91.
**/
#ifndef __END_OF_PEI_SIGNAL_PPI_H__
#define __END_OF_PEI_SIGNAL_PPI_H__
#define EFI_PEI_END_OF_PEI_PHASE_PPI_GUID \
{ \
0x605EA650, 0xC65C, 0x42e1, {0xBA, 0x80, 0x91, 0xA5, 0x2A, 0xB6, 0x18, 0xC6 } \
}
extern EFI_GUID gEfiEndOfPeiSignalPpiGuid;
#endif

View File

@@ -0,0 +1,76 @@
/** @file
This file declares FindFv PPI used to locate FVs that contain PEIMs in PEI
Copyright (c) 2006, Intel Corporation
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: FindFv.h
@par Revision Reference:
This PPI is defined in PEI CIS
Version 0.91
**/
#ifndef __FIND_FV_H__
#define __FIND_FV_H__
#define EFI_PEI_FIND_FV_PPI_GUID \
{ \
0x36164812, 0xa023, 0x44e5, {0xbd, 0x85, 0x5, 0xbf, 0x3c, 0x77, 0x0, 0xaa } \
}
typedef struct _EFI_PEI_FIND_FV_PPI EFI_PEI_FIND_FV_PPI;
/**
This interface returns the base address of the firmware volume whose index
was passed in FvNumber.Once this function reports a firmware volume
index/base address pair, that index/address pairing must continue throughout PEI.
@param PeiServices Pointer to the PEI Services Table.
@param This Interface pointer that implements the Find FV service.
@param FvNumber The index of the firmware volume to locate.
@param FvAddress The address of the volume to discover.
@retval EFI_SUCCESS An additional firmware volume was found.
@retval EFI_OUT_OF_RESOURCES There are no firmware volumes for the given FvNumber.
@retval EFI_INVALID_PARAMETER *FvAddress is NULL.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_FIND_FV_FINDFV) (
IN EFI_PEI_FIND_FV_PPI *This,
IN EFI_PEI_SERVICES **PeiServices,
UINT8 *FvNumber,
EFI_FIRMWARE_VOLUME_HEADER **FVAddress
);
/**
@par Ppi Description:
Hardware mechanisms for locating FVs in a platform vary widely.
EFI_PEI_FIND_FV_PPI serves to abstract this variation so that the
PEI Foundation can remain standard across a wide variety of platforms.
@param FindFv
Service that abstracts the location of additional firmware volumes.
**/
struct _EFI_PEI_FIND_FV_PPI {
EFI_PEI_FIND_FV_FINDFV FindFv;
};
extern EFI_GUID gEfiFindFvPpiGuid;
#endif

View File

@@ -0,0 +1,78 @@
/** @file
Load image file from fv to memory.
Copyright (c) 2006, Intel Corporation
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: LoadFile.h
@par Revision Reference:
This PPI is defined in PEI CIS spec Version 0.91.
**/
#ifndef __FV_FILE_LOADER_PPI_H__
#define __FV_FILE_LOADER_PPI_H__
#define EFI_PEI_FV_FILE_LOADER_GUID \
{ \
0x7e1f0d85, 0x4ff, 0x4bb2, {0x86, 0x6a, 0x31, 0xa2, 0x99, 0x6a, 0x48, 0xa8 } \
}
typedef struct _EFI_PEI_FV_FILE_LOADER_PPI EFI_PEI_FV_FILE_LOADER_PPI;
/**
Loads a PEIM into memory for subsequent execution.
@param This Interface pointer that implements the Load File PPI instance.
@param FfsHeader Pointer to the FFS header of the file to load.
@param ImageAddress Pointer to the address of the loaded Image
@param ImageSize Pointer to the size of the loaded image.
@param EntryPoint Pointer to the entry point of the image.
@retval EFI_SUCCESS The image was loaded successfully.
@retval EFI_OUT_OF_RESOURCES There was not enough memory.
@retval EFI_INVALID_PARAMETER The contents of the FFS file did not
contain a valid PE/COFF image that could be loaded.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_FV_LOAD_FILE) (
IN EFI_PEI_FV_FILE_LOADER_PPI *This,
IN EFI_FFS_FILE_HEADER *FfsHeader,
OUT EFI_PHYSICAL_ADDRESS *ImageAddress,
OUT UINT64 *ImageSize,
OUT EFI_PHYSICAL_ADDRESS *EntryPoint
);
/**
@par Ppi Description:
This PPI is a pointer to the Load File service. This service will be
published by a PEIM.The PEI Foundation will use this service to
launch the known non-XIP PE/COFF PEIM images. This service may
depend upon the presence of the EFI_PEI_PERMANENT_MEMORY_INSTALLED_PPI.
@param FvLoadFile
Loads a PEIM into memory for subsequent execution
**/
struct _EFI_PEI_FV_FILE_LOADER_PPI {
EFI_PEI_FV_LOAD_FILE FvLoadFile;
};
extern EFI_GUID gEfiPeiFvFileLoaderPpiGuid;
#endif

View File

@@ -0,0 +1,34 @@
/** @file
This file declares Boot Mode PPI
The Master Boot Mode PPI is installed by a PEIM to signal that a final
boot has been determined and set. This signal is useful in that PEIMs
with boot-mode-specific behavior can put this PPI in their dependency expression.
Copyright (c) 2006, Intel Corporation
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: MasterBootMode.h
@par Revision Reference:
This PPI is defined in PEI CIS
Version 0.91.
**/
#ifndef __MASTER_BOOT_MODE_PPI_H__
#define __MASTER_BOOT_MODE_PPI_H__
#define EFI_PEI_MASTER_BOOT_MODE_PEIM_PPI \
{ \
0x7408d748, 0xfc8c, 0x4ee6, {0x92, 0x88, 0xc4, 0xbe, 0xc0, 0x92, 0xa4, 0x10 } \
}
extern EFI_GUID gEfiPeiMasterBootModePpiGuid;
#endif

View File

@@ -0,0 +1,34 @@
/** @file
This file declares Memory Discovered PPI.
This PPI is installed by the PEI Foundation at the point of system
evolution when the permanent memory size has been registered and
waiting PEIMs can use the main memory store.
Copyright (c) 2006, Intel Corporation
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: MemoryDiscovered.h
@par Revision Reference:
This PPI is defined in PEI CIS
Version 0.91.
**/
#ifndef __PEI_MEMORY_DISCOVERED_PPI_H__
#define __PEI_MEMORY_DISCOVERED_PPI_H__
#define EFI_PEI_PERMANENT_MEMORY_INSTALLED_PPI_GUID \
{ \
0xf894643d, 0xc449, 0x42d1, {0x8e, 0xa8, 0x85, 0xbd, 0xd8, 0xc6, 0x5b, 0xde } \
}
extern EFI_GUID gEfiPeiMemoryDiscoveredPpiGuid;
#endif

294
MdePkg/Include/Ppi/Pcd.h Normal file
View File

@@ -0,0 +1,294 @@
/** @file
Platform Configuration Database (PCD) Protocol
Copyright (c) 2006, Intel Corporation
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: Pcd.h
**/
#ifndef __PCD_H__
#define __PCD_H__
extern EFI_GUID gPcdPpiGuid;
#define PCD_PPI_GUID \
{ 0x632df884, 0x8023, 0x4872, { 0xb6, 0x70, 0xb7, 0x4a, 0x30, 0x19, 0x16, 0xe9 } }
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET_SKU) (
IN UINTN SkuId
);
typedef
UINT8
(EFIAPI *PCD_PPI_GET8) (
IN UINTN TokenNumber
);
typedef
UINT16
(EFIAPI *PCD_PPI_GET16) (
IN UINTN TokenNumber
);
typedef
UINT32
(EFIAPI *PCD_PPI_GET32) (
IN UINTN TokenNumber
);
typedef
UINT64
(EFIAPI *PCD_PPI_GET64) (
IN UINTN TokenNumber
);
typedef
VOID *
(EFIAPI *PCD_PPI_GET_POINTER) (
IN UINTN TokenNumber
);
typedef
BOOLEAN
(EFIAPI *PCD_PPI_GET_BOOLEAN) (
IN UINTN TokenNumber
);
typedef
UINTN
(EFIAPI *PCD_PPI_GET_SIZE) (
IN UINTN TokenNumber
);
typedef
UINT8
(EFIAPI *PCD_PPI_GET_EX_8) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
);
typedef
UINT16
(EFIAPI *PCD_PPI_GET_EX_16) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
);
typedef
UINT32
(EFIAPI *PCD_PPI_GET_EX_32) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
);
typedef
UINT64
(EFIAPI *PCD_PPI_GET_EX_64) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
);
typedef
VOID *
(EFIAPI *PCD_PPI_GET_EX_POINTER) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
);
typedef
BOOLEAN
(EFIAPI *PCD_PPI_GET_EX_BOOLEAN) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
);
typedef
UINTN
(EFIAPI *PCD_PPI_GET_EX_SIZE) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET8) (
IN UINTN TokenNumber,
IN UINT8 Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET16) (
IN UINTN TokenNumber,
IN UINT16 Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET32) (
IN UINTN TokenNumber,
IN UINT32 Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET64) (
IN UINTN TokenNumber,
IN UINT64 Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET_POINTER) (
IN UINTN TokenNumber,
IN CONST VOID *Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET_BOOLEAN) (
IN UINTN TokenNumber,
IN BOOLEAN Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_8) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINT8 Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_16) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINT16 Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_32) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINT32 Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_64) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINT64 Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_POINTER) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN CONST VOID *Value
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_BOOLEAN) (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN BOOLEAN Value
);
/**
Callback on SET function prototype definition.
@param[in] CallBackGuid The PCD token GUID being set.
@param[in] CallBackToken The PCD token number being set.
@param[in] TokenData A pointer to the token data being set.
@param[in] TokenDataSize The size, in bytes, of the data being set.
@retval VOID
--*/
typedef
VOID
(EFIAPI *PCD_PPI_CALLBACK) (
IN CONST EFI_GUID *CallBackGuid, OPTIONAL
IN UINTN CallBackToken,
IN VOID *TokenData,
IN UINTN TokenDataSize
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_CALLBACK_ONSET) (
IN UINTN TokenNumber,
IN CONST EFI_GUID *Guid, OPTIONAL
IN PCD_PPI_CALLBACK CallBackFunction
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_CANCEL_CALLBACK) (
IN UINTN TokenNumber,
IN CONST EFI_GUID *Guid, OPTIONAL
IN PCD_PPI_CALLBACK CallBackFunction
);
typedef
EFI_STATUS
(EFIAPI *PCD_PPI_GET_NEXT_TOKEN) (
IN CONST EFI_GUID *Guid, OPTIONAL
IN OUT UINTN *TokenNumber
);
typedef struct {
PCD_PPI_SET_SKU SetSku;
PCD_PPI_GET8 Get8;
PCD_PPI_GET16 Get16;
PCD_PPI_GET32 Get32;
PCD_PPI_GET64 Get64;
PCD_PPI_GET_POINTER GetPtr;
PCD_PPI_GET_BOOLEAN GetBool;
PCD_PPI_GET_SIZE GetSize;
PCD_PPI_GET_EX_8 Get8Ex;
PCD_PPI_GET_EX_16 Get16Ex;
PCD_PPI_GET_EX_32 Get32Ex;
PCD_PPI_GET_EX_64 Get64Ex;
PCD_PPI_GET_EX_POINTER GetPtrEx;
PCD_PPI_GET_EX_BOOLEAN GetBoolEx;
PCD_PPI_GET_EX_SIZE GetSizeEx;
PCD_PPI_SET8 Set8;
PCD_PPI_SET16 Set16;
PCD_PPI_SET32 Set32;
PCD_PPI_SET64 Set64;
PCD_PPI_SET_POINTER SetPtr;
PCD_PPI_SET_BOOLEAN SetBool;
PCD_PPI_SET_EX_8 Set8Ex;
PCD_PPI_SET_EX_16 Set16Ex;
PCD_PPI_SET_EX_32 Set32Ex;
PCD_PPI_SET_EX_64 Set64Ex;
PCD_PPI_SET_EX_POINTER SetPtrEx;
PCD_PPI_SET_EX_BOOLEAN SetBoolEx;
PCD_PPI_CALLBACK_ONSET CallbackOnSet;
PCD_PPI_CANCEL_CALLBACK CancelCallback;
PCD_PPI_GET_NEXT_TOKEN GetNextToken;
} PCD_PPI;
#endif

133
MdePkg/Include/Ppi/PciCfg.h Normal file
View File

@@ -0,0 +1,133 @@
/** @file
This file declares PciCfg PPI used to access PCI configuration space in PEI
Copyright (c) 2006, Intel Corporation
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: PciCfg.h
@par Revision Reference:
This PPI is defined in PEI CIS
Version 0.91.
**/
#ifndef __PEI_PCI_CFG_H__
#define __PEI_PCI_CFG_H__
#define EFI_PEI_PCI_CFG_PPI_INSTALLED_GUID \
{ \
0xe1f2eba0, 0xf7b9, 0x4a26, {0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90 } \
}
typedef struct _EFI_PEI_PCI_CFG_PPI EFI_PEI_PCI_CFG_PPI;
#define PEI_PCI_CFG_ADDRESS(bus, dev, func, reg) ( \
(UINT64) ((((UINTN) bus) << 24) + (((UINTN) dev) << 16) + (((UINTN) func) << 8) + ((UINTN) reg)) \
) & 0x00000000ffffffff
typedef enum {
EfiPeiPciCfgWidthUint8 = 0,
EfiPeiPciCfgWidthUint16 = 1,
EfiPeiPciCfgWidthUint32 = 2,
EfiPeiPciCfgWidthUint64 = 3,
EfiPeiPciCfgWidthMaximum
} EFI_PEI_PCI_CFG_PPI_WIDTH;
typedef struct {
UINT8 Register;
UINT8 Function;
UINT8 Device;
UINT8 Bus;
UINT8 Reserved[4];
} EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS;
/**
PCI read and write operation.
@param PeiServices An indirect pointer to the PEI Services Table
published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Width The width of the access. Enumerated in bytes.
@param Address The physical address of the access.
@param Buffer A pointer to the buffer of data.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_NOT_YET_AVAILABLE The service has not been installed.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_PCI_CFG_PPI_IO) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_PCI_CFG_PPI *This,
IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
IN UINT64 Address,
IN OUT VOID *Buffer
);
/**
PCI read-modify-write operation.
@param PeiServices An indirect pointer to the PEI Services Table
published by the PEI Foundation.
@param This Pointer to local data for the interface.
@param Width The width of the access. Enumerated in bytes.
@param Address The physical address of the access.
@param SetBits Value of the bits to set.
@param ClearBits Value of the bits to clear.
@retval EFI_SUCCESS The function completed successfully.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_PCI_CFG_PPI_RW) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_PCI_CFG_PPI *This,
IN EFI_PEI_PCI_CFG_PPI_WIDTH Width,
IN UINT64 Address,
IN UINTN SetBits,
IN UINTN ClearBits
);
/**
@par Ppi Description:
The EFI_PEI_PCI_CFG_PPI interfaces are used to abstract accesses to PCI
controllers behind a PCI root bridge controller.
@param Read
PCI read services. See the Read() function description.
@param Write
PCI write services. See the Write() function description.
@param Modify
PCI read-modify-write services. See the Modify() function description.
**/
struct _EFI_PEI_PCI_CFG_PPI {
EFI_PEI_PCI_CFG_PPI_IO Read;
EFI_PEI_PCI_CFG_PPI_IO Write;
EFI_PEI_PCI_CFG_PPI_RW Modify;
};
extern EFI_GUID gEfiPciCfgPpiInServiceTableGuid;
#endif

View File

@@ -0,0 +1,136 @@
/** @file
This file declares Read-only Variable Service PPI
Copyright (c) 2006, Intel Corporation
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: ReadOnlyVariable.h
@par Revision Reference:
This PPI is defined in PEI CIS
Version 0.91.
**/
#ifndef __PEI_READ_ONLY_VARIABLE_PPI_H__
#define __PEI_READ_ONLY_VARIABLE_PPI_H__
#define EFI_PEI_READ_ONLY_VARIABLE_ACCESS_PPI_GUID \
{ \
0x3cdc90c6, 0x13fb, 0x4a75, {0x9e, 0x79, 0x59, 0xe9, 0xdd, 0x78, 0xb9, 0xfa } \
}
typedef struct _EFI_PEI_READ_ONLY_VARIABLE_PPI EFI_PEI_READ_ONLY_VARIABLE_PPI;
//
// Variable attributes
//
#define EFI_VARIABLE_NON_VOLATILE 0x00000001
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
#define EFI_VARIABLE_READ_ONLY 0x00000008
/**
Get Variable value by Name and GUID pair
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param VariableName A NULL-terminated Unicode string that is the name of the vendor<6F><72>s variable.
@param VendorGuid A unique identifier for the vendor.
@param Attributes If not NULL, a pointer to the memory location to return
the attributes bitmask for the variable.
@param DataSize On input, the size in bytes of the return Data buffer.
On output, the size of data returned in Data.
@param Data The buffer to return the contents of the variable.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_NOT_FOUND The variable was not found.
@retval EFI_BUFFER_TOO_SMALL The BufferSize is too small for the result.
@retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
@retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_GET_VARIABLE) (
IN EFI_PEI_SERVICES **PeiServices,
IN CHAR16 *VariableName,
IN EFI_GUID *VendorGuid,
OUT UINT32 *Attributes OPTIONAL,
IN OUT UINTN *DataSize,
OUT VOID *Data
);
/**
This function can be called multiple times to retrieve the VariableName
and VendorGuid of all variables currently available in the system. On each call
to GetNextVariableName() the previous results are passed into the interface,
and on output the interface returns the next variable name data. When the
entire variable list has been returned, the error EFI_NOT_FOUND is returned.
@param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.
@param VariableNameSize The size of the VariableName buffer.
@param VariableName On input, supplies the last VariableName that was
returned by GetNextVariableName(). On output, returns the Null-terminated
Unicode string of the current variable.
@param VendorGuid On input, supplies the last VendorGuid that was
returned by GetNextVariableName(). On output, returns the VendorGuid
of the current variable.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_NOT_FOUND The next variable was not found.
@retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result.
@retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
@retval EFI_DEVICE_ERROR The variable name could not be retrieved due to a hardware error.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_GET_NEXT_VARIABLE_NAME) (
IN EFI_PEI_SERVICES **PeiServices,
IN OUT UINTN *VariableNameSize,
IN OUT CHAR16 *VariableName,
IN OUT EFI_GUID *VendorGuid
);
/**
@par Ppi Description:
This PPI provides a lightweight, read-only variant of the full EFI
variable services.
@param GetVariable
A service to ascertain a given variable name.
@param GetNextVariableName
A service to ascertain a variable based upon a given, known variable
**/
struct _EFI_PEI_READ_ONLY_VARIABLE_PPI {
EFI_PEI_GET_VARIABLE PeiGetVariable;
EFI_PEI_GET_NEXT_VARIABLE_NAME PeiGetNextVariableName;
};
extern EFI_GUID gEfiPeiReadOnlyVariablePpiGuid;
#endif

View File

@@ -0,0 +1,67 @@
/** @file
This file declares Recovery Module PPI.
Copyright (c) 2006, Intel Corporation
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: RecoveryModule.h
@par Revision Reference:
This PPI is defined in Framework of EFI Recovery Spec.
Version 0.9
**/
#ifndef __PEI_RECOVERY_MODULE_PPI_H__
#define __PEI_RECOVERY_MODULE_PPI_H__
#define EFI_PEI_RECOVERY_MODULE_PPI_GUID \
{ \
0xFB6D9542, 0x612D, 0x4f45, {0x87, 0x2F, 0x5C, 0xFF, 0x52, 0xE9, 0x3D, 0xCF } \
}
typedef struct _EFI_PEI_RECOVERY_MODULE_PPI EFI_PEI_RECOVERY_MODULE_PPI;
/**
Loads a DXE capsule from some media into memory and updates the HOB table
with the DXE firmware volume information.
@param PeiServices General-purpose services that are available to every PEIM.
@param This Indicates the EFI_PEI_RECOVERY_MODULE_PPI instance.
@retval EFI_SUCCESS The capsule was loaded correctly.
@retval EFI_DEVICE_ERROR A device error occurred.
@retval EFI_NOT_FOUND A recovery DXE capsule cannot be found.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_LOAD_RECOVERY_CAPSULE) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_RECOVERY_MODULE_PPI *This
);
/**
@par Ppi Description:
Finds and loads the recovery files.
@param LoadRecoveryCapsule
Loads a DXE binary capsule into memory.
**/
struct _EFI_PEI_RECOVERY_MODULE_PPI {
EFI_PEI_LOAD_RECOVERY_CAPSULE LoadRecoveryCapsule;
};
extern EFI_GUID gEfiPeiRecoveryModulePpiGuid;
#endif

View File

@@ -0,0 +1,35 @@
/** @file
This file declares Reset PPI used to reset the platform
Copyright (c) 2006, Intel Corporation
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: Reset.h
@par Revision Reference:
This PPI is defined in PEI CIS
Version 0.91.
**/
#ifndef __RESET_PPI_H__
#define __RESET_PPI_H__
#define EFI_PEI_RESET_PPI_GUID \
{ \
0xef398d58, 0x9dfd, 0x4103, {0xbf, 0x94, 0x78, 0xc6, 0xf4, 0xfe, 0x71, 0x2f } \
}
typedef struct {
EFI_PEI_RESET_SYSTEM ResetSystem;
} EFI_PEI_RESET_PPI;
extern EFI_GUID gEfiPeiResetPpiGuid;
#endif

View File

@@ -0,0 +1,65 @@
/** @file
This file declares S3 Resume PPI.
Copyright (c) 2006, Intel Corporation
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: S3Resume.h
@par Revision Reference:
This PPI is defined in Framework of EFI S3 Resume Boot Path spec.
Version 0.9
**/
#ifndef __PEI_S3_RESUME_PPI_H__
#define __PEI_S3_RESUME_PPI_H__
#define EFI_PEI_S3_RESUME_PPI_GUID \
{ \
0x4426CCB2, 0xE684, 0x4a8a, {0xAE, 0x40, 0x20, 0xD4, 0xB0, 0x25, 0xB7, 0x10 } \
}
typedef struct _EFI_PEI_S3_RESUME_PPI EFI_PEI_S3_RESUME_PPI;
/**
Restores the platform to its preboot configuration for an S3 resume and
jumps to the OS waking vector.
@param PeiServices Pointer to the PEI Services Table
@retval EFI_ABORTED Execution of the S3 resume boot script table failed.
@retval EFI_NOT_FOUND Some necessary information that is used for
the S3 resume boot path could not be located.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_S3_RESUME_PPI_RESTORE_CONFIG) (
IN EFI_PEI_SERVICES **PeiServices
);
/**
@par Ppi Description:
EFI_PEI_S3_RESUME_PPI accomplishes the firmware S3 resume boot
path and transfers control to OS.
@param S3RestoreConfig
Restores the platform to its preboot configuration for an S3 resume and
jumps to the OS waking vector.
**/
struct _EFI_PEI_S3_RESUME_PPI {
EFI_PEI_S3_RESUME_PPI_RESTORE_CONFIG S3RestoreConfig;
};
extern EFI_GUID gEfiPeiS3ResumePpiGuid;
#endif

View File

@@ -0,0 +1,86 @@
/** @file
This file declares Sec Platform Information PPI.
Copyright (c) 2006, Intel Corporation
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: SecPlatformInformation.h
@par Revision Reference:
This PPI is defined in PEI CIS.
Version 0.91.
**/
#ifndef __SEC_PLATFORM_INFORMATION_PPI_H__
#define __SEC_PLATFORM_INFORMATION_PPI_H__
#define EFI_SEC_PLATFORM_INFORMATION_GUID \
{ \
0x6f8c2b35, 0xfef4, 0x448d, {0x82, 0x56, 0xe1, 0x1b, 0x19, 0xd6, 0x10, 0x77 } \
}
typedef struct _EFI_SEC_PLATFORM_INFORMATION_PPI EFI_SEC_PLATFORM_INFORMATION_PPI;
extern EFI_GUID gEfiSecPlatformInformationPpiGuid;
///
/// EFI_HEALTH_FLAGS
///
typedef union {
struct {
UINT32 Status : 2;
UINT32 Tested : 1;
UINT32 Reserved1 :13;
UINT32 VirtualMemoryUnavailable : 1;
UINT32 Ia32ExecutionUnavailable : 1;
UINT32 FloatingPointUnavailable : 1;
UINT32 MiscFeaturesUnavailable : 1;
UINT32 Reserved2 :12;
} Bits;
UINT32 Uint32;
} EFI_HEALTH_FLAGS;
typedef struct {
EFI_HEALTH_FLAGS HealthFlags;
} EFI_SEC_PLATFORM_INFORMATION_RECORD;
/**
This interface conveys state information out of the Security (SEC) phase into PEI.
@param PeiServices Pointer to the PEI Services Table.
@param StructureSize Pointer to the variable describing size of the input buffer.
@param PlatformInformationRecord Pointer to the EFI_SEC_PLATFORM_INFORMATION_RECORD.
@retval EFI_SUCCESS The data was successfully returned.
@retval EFI_BUFFER_TOO_SMALL The buffer was too small.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_SEC_PLATFORM_INFORMATION) (
IN EFI_PEI_SERVICES **PeiServices,
IN OUT UINT64 *StructureSize,
OUT EFI_SEC_PLATFORM_INFORMATION_RECORD *PlatformInformationRecord
);
/**
@par Ppi Description:
@param Name
**/
struct _EFI_SEC_PLATFORM_INFORMATION_PPI {
EFI_SEC_PLATFORM_INFORMATION PlatformInformation;
};
#endif

View File

@@ -0,0 +1,118 @@
/** @file
This file declares Section Extraction PPI.
Copyright (c) 2006, Intel Corporation
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: SectionExtraction.h
@par Revision Reference:
This PPI is defined in PEI CIS.
Version 0.91.
**/
#ifndef __SECTION_EXTRACTION_PPI_H__
#define __SECTION_EXTRACTION_PPI_H__
#define EFI_PEI_SECTION_EXTRACTION_PPI_GUID \
{ \
0x4F89E208, 0xE144, 0x4804, {0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7 } \
}
typedef struct _EFI_PEI_SECTION_EXTRACTION_PPI EFI_PEI_SECTION_EXTRACTION_PPI;
//
// Bit values for AuthenticationStatus
//
#define EFI_PEI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01
#define EFI_PEI_AUTH_STATUS_IMAGE_SIGNED 0x02
#define EFI_PEI_AUTH_STATUS_NOT_TESTED 0x04
#define EFI_PEI_AUTH_STATUS_TEST_FAILED 0x08
/**
The function is used to retrieve a section from within a section file.
It will retrieve both encapsulation sections and leaf sections in their entirety,
exclusive of the section header.
@param PeiServices Pointer to the PEI Services Table.
@param This Indicates the calling context
@param SectionType Pointer to an EFI_SECTION_TYPE. If SectionType == NULL,
the contents of the entire section are returned in Buffer. If SectionType
is not NULL, only the requested section is returned.
@param SectionDefinitionGuid Pointer to an EFI_GUID.
If SectionType == EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid
indicates for which section GUID to search.
If SectionType != EFI_SECTION_GUID_DEFINED, SectionDefinitionGuid
is unused and is ignored.
@param SectionInstance If SectionType is not NULL, indicates which
instance of the requested section type to return.
@param Buffer Pointer to a pointer to a buffer in which the section
contents are returned.
@param BufferSize A pointer to a caller-allocated UINT32.On input, *BufferSize
indicates the size in bytes of the memory region pointed to by Buffer.On output,
*BufferSize contains the number of bytes required to read the section.
@param AuthenticationStatus A pointer to a caller-allocated UINT32 in
which any metadata from encapsulating GUID-defined sections is returned.
@retval EFI_SUCCESS The section was successfully processed and the section
contents were returned in Buffer.
@retval EFI_PROTOCOL_ERROR A GUID-defined section was encountered in
the file with its EFI_GUIDED_SECTION_PROCESSING_REQUIRED bit set, but
there was no corresponding GUIDed Section Extraction Protocol in the
handle database.*Buffer is unmodified.
@retval EFI_NOT_FOUND The requested section does not exist.*Buffer is unmodified.
@retval EFI_OUT_OF_RESOURCES The system has insufficient resources to process the request.
@retval EFI_INVALID_PARAMETER The SectionStreamHandle does not exist.
@retval EFI_WARN_TOO_SMALL The size of the input buffer is insufficient to
contain the requested section. The input buffer is filled and contents are
section contents are truncated.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_GET_SECTION) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_SECTION_EXTRACTION_PPI *This,
IN EFI_SECTION_TYPE *SectionType,
IN EFI_GUID *SectionDefinitionGuid, OPTIONAL
IN UINTN SectionInstance,
IN VOID **Buffer,
IN OUT UINT32 *BufferSize,
OUT UINT32 *AuthenticationStatus
);
/**
@par Ppi Description:
This PPI supports encapsulating sections, such as GUIDed sections used to
authenticate the file encapsulation of other domain-specific wrapping.
@param GetSection
Retrieves a section from within a section file.
**/
struct _EFI_PEI_SECTION_EXTRACTION_PPI {
EFI_PEI_GET_SECTION PeiGetSection;
};
extern EFI_GUID gEfiPeiSectionExtractionPpiGuid;
#endif

View File

@@ -0,0 +1,77 @@
/** @file
This file declares Security Architectural PPI.
Copyright (c) 2006, Intel Corporation
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: Security.h
@par Revision Reference:
This PPI is defined in PEI CIS.
Version 0.91.
**/
#ifndef __SECURITY_PPI_H__
#define __SECURITY_PPI_H__
#define EFI_PEI_SECURITY_PPI_GUID \
{ \
0x1388066e, 0x3a57, 0x4efa, {0x98, 0xf3, 0xc1, 0x2f, 0x3a, 0x95, 0x8a, 0x29 } \
}
typedef struct _EFI_PEI_SECURITY_PPI EFI_PEI_SECURITY_PPI;
/**
Allows the platform builder to implement a security policy in response
to varying file authentication states.
@param PeiServices Pointer to the PEI Services Table.
@param This Interface pointer that implements the particular EFI_PEI_SECURITY_PPI instance.
@param AuthenticationStatus Status returned by the verification service as part of section extraction.
@param FfsFileHeader Pointer to the file under review.
@param DeferExecution Pointer to a variable that alerts the PEI Foundation to defer execution of a PEIM.
@retval EFI_SUCCESS The service performed its action successfully.
@retval EFI_SECURITY_VIOLATION The object cannot be trusted
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_SECURITY_AUTHENTICATION_STATE) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_SECURITY_PPI *This,
IN UINT32 AuthenticationStatus,
IN EFI_FFS_FILE_HEADER *FfsFileHeader,
IN OUT BOOLEAN *StartCrisisRecovery
);
/**
@par Ppi Description:
This PPI is installed by some platform PEIM that abstracts the security
policy to the PEI Foundation, namely the case of a PEIM<49><4D>s authentication
state being returned during the PEI section extraction process.
@param AuthenticationState
Allows the platform builder to implement a security policy in response
to varying file authentication states.
**/
struct _EFI_PEI_SECURITY_PPI {
EFI_PEI_SECURITY_AUTHENTICATION_STATE AuthenticationState;
};
extern EFI_GUID gEfiPeiSecurityPpiGuid;
#endif

258
MdePkg/Include/Ppi/Smbus.h Normal file
View File

@@ -0,0 +1,258 @@
/** @file
This file declares Smbus PPI.
Copyright (c) 2006, Intel Corporation
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: Smbus.h
@par Revision Reference:
This PPI is defined in Framework of EFI SmBus PPI spec.
Version 0.9
**/
#ifndef _PEI_SMBUS_PPI_H
#define _PEI_SMBUS_PPI_H
#define EFI_PEI_SMBUS_PPI_GUID \
{ \
0xabd42895, 0x78cf, 0x4872, {0x84, 0x44, 0x1b, 0x5c, 0x18, 0xb, 0xfb, 0xda } \
}
typedef struct _EFI_PEI_SMBUS_PPI EFI_PEI_SMBUS_PPI;
/**
Executes an SMBus operation to an SMBus controller.
@param PeiServices A pointer to the system PEI Services Table.
@param This A pointer to the EFI_PEI_SMBUS_PPI instance.
@param SlaveAddress The SMBUS hardware address to which the SMBUS
device is preassigned or allocated.
@param Command This command is transmitted by the SMBus host
controller to the SMBus slave device and the interpretation is
SMBus slave device specific.
@param Operation Signifies which particular SMBus hardware protocol
instance that it will use to execute the SMBus transactions.
@param PecCheck Defines if Packet Error Code (PEC) checking is required
for this operation.
@param Length Signifies the number of bytes that this operation will do.
@param Buffer Contains the value of data to execute to the SMBus slave device.
@retval EFI_SUCCESS The last data that was returned from the access
matched the poll exit criteria.
@retval EFI_CRC_ERROR The checksum is not correct (PEC is incorrect)
@retval EFI_TIMEOUT Timeout expired before the operation was completed.
Timeout is determined by the SMBus host controller device.
@retval EFI_OUT_OF_RESOURCES The request could not be completed
due to a lack of resources.
@retval EFI_DEVICE_ERROR The request was not completed because
a failure reflected in the Host Status Register bit.
@retval EFI_INVALID_PARAMETER Operation is not defined in EFI_SMBUS_OPERATION.
Or Length/Buffer is NULL for operations except for EfiSmbusQuickRead and
EfiSmbusQuickWrite. Length is outside the range of valid values.
@retval EFI_UNSUPPORTED The SMBus operation or PEC is not supported.
@retval EFI_BUFFER_TOO_SMALL Buffer is not sufficient for this operation.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_SMBUS_PPI_EXECUTE_OPERATION) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_SMBUS_PPI *This,
IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress,
IN EFI_SMBUS_DEVICE_COMMAND Command,
IN EFI_SMBUS_OPERATION Operation,
IN BOOLEAN PecCheck,
IN OUT UINTN *Length,
IN OUT VOID *Buffer
);
typedef struct {
UINT32 VendorSpecificId;
UINT16 SubsystemDeviceId;
UINT16 SubsystemVendorId;
UINT16 Interface;
UINT16 DeviceId;
UINT16 VendorId;
UINT8 VendorRevision;
UINT8 DeviceCapabilities;
} EFI_SMBUS_UDID;
/**
CallBack function can be registered in EFI_PEI_SMBUS_PPI_NOTIFY.
@param PeiServices A pointer to the system PEI Services Table.
@param This A pointer to the EFI_PEI_SMBUS_PPI instance.
@param SlaveAddress The SMBUS hardware address to which the SMBUS
device is preassigned or allocated.
@param Data Data of the SMBus host notify command that
the caller wants to be called.
@return Status Code
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_SMBUS_NOTIFY_FUNCTION) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_SMBUS_PPI *SmbusPpi,
IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress,
IN UINTN Data
);
/**
The ArpDevice() function enumerates the entire bus or enumerates a specific
device that is identified by SmbusUdid.
@param PeiServices A pointer to the system PEI Services Table.
@param This A pointer to the EFI_PEI_SMBUS_PPI instance.
@param ArpAll A Boolean expression that indicates if the host drivers need
to enumerate all the devices or enumerate only the device that is identified
by SmbusUdid. If ArpAll is TRUE, SmbusUdid and SlaveAddress are optional.
If ArpAll is FALSE, ArpDevice will enumerate SmbusUdid and the address
will be at SlaveAddress.
@param SmbusUdid The targeted SMBus Unique Device Identifier (UDID).
The UDID may not exist for SMBus devices with fixed addresses.
@param SlaveAddress The new SMBus address for the slave device for
which the operation is targeted.
@retval EFI_SUCCESS The SMBus slave device address was set.
@retval EFI_INVALID_PARAMETER SlaveAddress is NULL.
@retval EFI_OUT_OF_RESOURCES The request could not be completed
due to a lack of resources.
@retval EFI_TIMEOUT The SMBus slave device did not respond.
@retval EFI_DEVICE_ERROR The request was not completed because the transaction failed.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_SMBUS_PPI_ARP_DEVICE) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_SMBUS_PPI *This,
IN BOOLEAN ArpAll,
IN EFI_SMBUS_UDID *SmbusUdid, OPTIONAL
IN OUT EFI_SMBUS_DEVICE_ADDRESS *SlaveAddress OPTIONAL
);
typedef struct {
EFI_SMBUS_DEVICE_ADDRESS SmbusDeviceAddress;
EFI_SMBUS_UDID SmbusDeviceUdid;
} EFI_SMBUS_DEVICE_MAP;
/**
The GetArpMap() function returns the mapping of all the SMBus devices
that are enumerated by the SMBus host driver.
@param PeiServices A pointer to the system PEI Services Table.
@param This A pointer to the EFI_PEI_SMBUS_PPI instance.
@param Length Size of the buffer that contains the SMBus device map.
@param SmbusDeviceMap The pointer to the device map as enumerated
by the SMBus controller driver.
@retval EFI_SUCCESS The device map was returned correctly in the buffer.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_SMBUS_PPI_GET_ARP_MAP) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_SMBUS_PPI *This,
IN OUT UINTN *Length,
IN OUT EFI_SMBUS_DEVICE_MAP **SmbusDeviceMap
);
/**
The Notify() function registers all the callback functions to allow the
bus driver to call these functions when the SlaveAddress/Data pair happens.
@param PeiServices A pointer to the system PEI Services Table.
@param This A pointer to the EFI_PEI_SMBUS_PPI instance.
@param SlaveAddress Address that the host controller detects as
sending a message and calls all the registered functions.
@param Data Data that the host controller detects as sending a message
and calls all the registered functions.
@param NotifyFunction The function to call when the bus driver
detects the SlaveAddress and Data pair.
@retval EFI_SUCCESS NotifyFunction has been registered.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_SMBUS_PPI_NOTIFY) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_SMBUS_PPI *This,
IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress,
IN UINTN Data,
IN EFI_PEI_SMBUS_NOTIFY_FUNCTION NotifyFunction
);
/**
@par Ppi Description:
Provides the basic I/O interfaces that a PEIM uses to access
its SMBus controller and the slave devices attached to it.
@param Execute
Executes the SMBus operation to an SMBus slave device.
@param ArpDevice
Allows an SMBus 2.0 device(s) to be Address Resolution Protocol (ARP)
@param GetArpMap
Allows a PEIM to retrieve the address that was allocated by the SMBus
host controller during enumeration/ARP.
@param Notify
Allows a driver to register for a callback to the SMBus host
controller driver when the bus issues a notification to the bus controller PEIM.
**/
struct _EFI_PEI_SMBUS_PPI {
EFI_PEI_SMBUS_PPI_EXECUTE_OPERATION Execute;
EFI_PEI_SMBUS_PPI_ARP_DEVICE ArpDevice;
EFI_PEI_SMBUS_PPI_GET_ARP_MAP GetArpMap;
EFI_PEI_SMBUS_PPI_NOTIFY Notify;
};
extern EFI_GUID gEfiPeiSmbusPpiGuid;
#endif

View File

@@ -0,0 +1,73 @@
/** @file
This file declares Stall PPI.
This code abstracts the PEI core to provide Stall services.
Copyright (c) 2006, Intel Corporation
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: Stall.h
@par Revision Reference:
This PPI is defined in PEI CIS.
Version 0.91.
**/
#ifndef __STALL_PPI_H__
#define __STALL_PPI_H__
#define EFI_PEI_STALL_PPI_GUID \
{ \
0x1f4c6f90, 0xb06b, 0x48d8, {0xa2, 0x01, 0xba, 0xe5, 0xf1, 0xcd, 0x7d, 0x56 } \
}
typedef struct _EFI_PEI_STALL_PPI EFI_PEI_STALL_PPI;
/**
The Stall() function provides a blocking stall for at least the number
of microseconds stipulated in the final argument of the API.
@param PeiServices An indirect pointer to the PEI Services Table
published by the PEI Foundation.
@param This Pointer to the local data for the interface.
@param Microseconds Number of microseconds for which to stall.
@retval EFI_SUCCESS The service provided at least the required delay.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_PEI_STALL) (
IN EFI_PEI_SERVICES **PeiServices,
IN EFI_PEI_STALL_PPI *This,
IN UINTN Microseconds
);
/**
@par Ppi Description:
This service provides a simple, blocking stall with platform-specific resolution.
@param Resolution
The resolution in microseconds of the stall services.
@param Stall
The actual stall procedure call.
**/
struct _EFI_PEI_STALL_PPI {
UINTN Resolution;
EFI_PEI_STALL Stall;
};
extern EFI_GUID gEfiPeiStallPpiGuid;
#endif

View File

@@ -0,0 +1,42 @@
/** @file
This file declares Status Code PPI.
Copyright (c) 2006, Intel Corporation
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: StatusCode.h
@par Revision Reference:
This PPI is defined in PEI CIS.
Version 0.91.
**/
#ifndef __STATUS_CODE_PPI_H__
#define __STATUS_CODE_PPI_H__
#define EFI_PEI_REPORT_PROGRESS_CODE_PPI_GUID \
{ 0x229832d3, 0x7a30, 0x4b36, {0xb8, 0x27, 0xf4, 0xc, 0xb7, 0xd4, 0x54, 0x36 } }
/**
@par Ppi Description:
This ppi provides the sevice to report status code. There can be only one instance
of this service in the system.
@param ReportStatusCode
Service that allows PEIMs to report status codes. This function is defined in Peicis.h
**/
typedef struct {
EFI_PEI_REPORT_STATUS_CODE ReportStatusCode;
} EFI_PEI_PROGRESS_CODE_PPI;
extern EFI_GUID gEfiPeiStatusCodePpiGuid;
#endif