Add FindFv PPI.

Add Fv header definitions.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3041 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
yshang1 2007-07-04 10:41:32 +00:00
parent 01c25cb23a
commit 72765a93b9
3 changed files with 155 additions and 0 deletions

View File

@ -0,0 +1,82 @@
/** @file
Defines data structure that is the volume header found at the beginning of
all firmware volumes that are either memory mapped, or have an
associated FirmwareVolumeBlock 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: FirmwareVolumeHeader.h
@par Revision Reference:
These definitions are from Firmware Volume Block Spec 0.9.
**/
#ifndef __EFI_FIRMWARE_VOLUME_HEADER_H__
#define __EFI_FIRMWARE_VOLUME_HEADER_H__
//
// Firmware Volume Block Attributes definition
//
typedef UINT32 EFI_FVB_ATTRIBUTES;
//
// Firmware Volume Block Attributes bit definitions
//
#define EFI_FVB_READ_DISABLED_CAP 0x00000001
#define EFI_FVB_READ_ENABLED_CAP 0x00000002
#define EFI_FVB_READ_STATUS 0x00000004
#define EFI_FVB_WRITE_DISABLED_CAP 0x00000008
#define EFI_FVB_WRITE_ENABLED_CAP 0x00000010
#define EFI_FVB_WRITE_STATUS 0x00000020
#define EFI_FVB_LOCK_CAP 0x00000040
#define EFI_FVB_LOCK_STATUS 0x00000080
#define EFI_FVB_STICKY_WRITE 0x00000200
#define EFI_FVB_MEMORY_MAPPED 0x00000400
#define EFI_FVB_ERASE_POLARITY 0x00000800
#define EFI_FVB_ALIGNMENT_CAP 0x00008000
#define EFI_FVB_ALIGNMENT_2 0x00010000
#define EFI_FVB_ALIGNMENT_4 0x00020000
#define EFI_FVB_ALIGNMENT_8 0x00040000
#define EFI_FVB_ALIGNMENT_16 0x00080000
#define EFI_FVB_ALIGNMENT_32 0x00100000
#define EFI_FVB_ALIGNMENT_64 0x00200000
#define EFI_FVB_ALIGNMENT_128 0x00400000
#define EFI_FVB_ALIGNMENT_256 0x00800000
#define EFI_FVB_ALIGNMENT_512 0x01000000
#define EFI_FVB_ALIGNMENT_1K 0x02000000
#define EFI_FVB_ALIGNMENT_2K 0x04000000
#define EFI_FVB_ALIGNMENT_4K 0x08000000
#define EFI_FVB_ALIGNMENT_8K 0x10000000
#define EFI_FVB_ALIGNMENT_16K 0x20000000
#define EFI_FVB_ALIGNMENT_32K 0x40000000
#define EFI_FVB_ALIGNMENT_64K 0x80000000
#define EFI_FVB_CAPABILITIES (EFI_FVB_READ_DISABLED_CAP | \
EFI_FVB_READ_ENABLED_CAP | \
EFI_FVB_WRITE_DISABLED_CAP | \
EFI_FVB_WRITE_ENABLED_CAP | \
EFI_FVB_LOCK_CAP \
)
#define EFI_TEST_FFS_ATTRIBUTES_BIT(FvbAttributes, TestAttributes, Bit) \
( \
(BOOLEAN) ( \
(FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit) \
) \
)
#define EFI_FVB_STATUS (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | EFI_FVB_LOCK_STATUS)
#endif

View File

@ -23,6 +23,8 @@
#include <PiPei.h>
#include <Common/FrameworkFirmwareFileSystem.h>
#include <Common/FrameworkFirmwareVolumeImageFormat.h>
#include <Common/FrameworkFirmwareVolumeHeader.h>
#include <Common/FrameworkHob.h>
#include <Common/FrameworkLegacy16.h>
#include <Common/DataHubRecords.h>

View File

@ -0,0 +1,71 @@
/** @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