From 72765a93b9b300faa6d8e6d344cf1b5a2e26809e Mon Sep 17 00:00:00 2001 From: yshang1 Date: Wed, 4 Jul 2007 10:41:32 +0000 Subject: 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 --- .../Include/Common/FrameworkFirmwareVolumeHeader.h | 82 ++++++++++++++++++++++ IntelFrameworkPkg/Include/FrameworkPei.h | 2 + IntelFrameworkPkg/Include/Ppi/FindFv.h | 71 +++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h create mode 100644 IntelFrameworkPkg/Include/Ppi/FindFv.h (limited to 'IntelFrameworkPkg') diff --git a/IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h b/IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h new file mode 100644 index 0000000000..1f584fe0e2 --- /dev/null +++ b/IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h @@ -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 diff --git a/IntelFrameworkPkg/Include/FrameworkPei.h b/IntelFrameworkPkg/Include/FrameworkPei.h index 43ce1ab079..fa9cada07c 100644 --- a/IntelFrameworkPkg/Include/FrameworkPei.h +++ b/IntelFrameworkPkg/Include/FrameworkPei.h @@ -23,6 +23,8 @@ #include #include +#include +#include #include #include #include diff --git a/IntelFrameworkPkg/Include/Ppi/FindFv.h b/IntelFrameworkPkg/Include/Ppi/FindFv.h new file mode 100644 index 0000000000..9a3e173742 --- /dev/null +++ b/IntelFrameworkPkg/Include/Ppi/FindFv.h @@ -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 -- cgit v1.2.3