]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add FindFv PPI.
authoryshang1 <yshang1@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 4 Jul 2007 10:41:32 +0000 (10:41 +0000)
committeryshang1 <yshang1@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 4 Jul 2007 10:41:32 +0000 (10:41 +0000)
Add Fv header definitions.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3041 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h [new file with mode: 0644]
IntelFrameworkPkg/Include/FrameworkPei.h
IntelFrameworkPkg/Include/Ppi/FindFv.h [new file with mode: 0644]

diff --git a/IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h b/IntelFrameworkPkg/Include/Common/FrameworkFirmwareVolumeHeader.h
new file mode 100644 (file)
index 0000000..1f584fe
--- /dev/null
@@ -0,0 +1,82 @@
+/** @file\r
+  Defines data structure that is the volume header found at the beginning of\r
+  all firmware volumes that are either memory mapped, or have an\r
+  associated FirmwareVolumeBlock protocol.\r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+  Module Name:  FirmwareVolumeHeader.h\r
+\r
+  @par Revision Reference:\r
+  These definitions are from Firmware Volume Block Spec 0.9.\r
+\r
+**/\r
+\r
+#ifndef __EFI_FIRMWARE_VOLUME_HEADER_H__\r
+#define __EFI_FIRMWARE_VOLUME_HEADER_H__\r
+\r
+//\r
+// Firmware Volume Block Attributes definition\r
+//\r
+typedef UINT32  EFI_FVB_ATTRIBUTES;\r
+\r
+//\r
+// Firmware Volume Block Attributes bit definitions\r
+//\r
+#define EFI_FVB_READ_DISABLED_CAP   0x00000001\r
+#define EFI_FVB_READ_ENABLED_CAP    0x00000002\r
+#define EFI_FVB_READ_STATUS         0x00000004\r
+\r
+#define EFI_FVB_WRITE_DISABLED_CAP  0x00000008\r
+#define EFI_FVB_WRITE_ENABLED_CAP   0x00000010\r
+#define EFI_FVB_WRITE_STATUS        0x00000020\r
+\r
+#define EFI_FVB_LOCK_CAP            0x00000040\r
+#define EFI_FVB_LOCK_STATUS         0x00000080\r
+\r
+#define EFI_FVB_STICKY_WRITE        0x00000200\r
+#define EFI_FVB_MEMORY_MAPPED       0x00000400\r
+#define EFI_FVB_ERASE_POLARITY      0x00000800\r
+\r
+#define EFI_FVB_ALIGNMENT_CAP       0x00008000\r
+#define EFI_FVB_ALIGNMENT_2         0x00010000\r
+#define EFI_FVB_ALIGNMENT_4         0x00020000\r
+#define EFI_FVB_ALIGNMENT_8         0x00040000\r
+#define EFI_FVB_ALIGNMENT_16        0x00080000\r
+#define EFI_FVB_ALIGNMENT_32        0x00100000\r
+#define EFI_FVB_ALIGNMENT_64        0x00200000\r
+#define EFI_FVB_ALIGNMENT_128       0x00400000\r
+#define EFI_FVB_ALIGNMENT_256       0x00800000\r
+#define EFI_FVB_ALIGNMENT_512       0x01000000\r
+#define EFI_FVB_ALIGNMENT_1K        0x02000000\r
+#define EFI_FVB_ALIGNMENT_2K        0x04000000\r
+#define EFI_FVB_ALIGNMENT_4K        0x08000000\r
+#define EFI_FVB_ALIGNMENT_8K        0x10000000\r
+#define EFI_FVB_ALIGNMENT_16K       0x20000000\r
+#define EFI_FVB_ALIGNMENT_32K       0x40000000\r
+#define EFI_FVB_ALIGNMENT_64K       0x80000000\r
+\r
+#define EFI_FVB_CAPABILITIES  (EFI_FVB_READ_DISABLED_CAP | \\r
+                              EFI_FVB_READ_ENABLED_CAP | \\r
+                              EFI_FVB_WRITE_DISABLED_CAP | \\r
+                              EFI_FVB_WRITE_ENABLED_CAP | \\r
+                              EFI_FVB_LOCK_CAP \\r
+                              )\r
+\r
+#define EFI_TEST_FFS_ATTRIBUTES_BIT(FvbAttributes, TestAttributes, Bit) \\r
+    ( \\r
+      (BOOLEAN) ( \\r
+          (FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit) \\r
+        ) \\r
+    )\r
+\r
+#define EFI_FVB_STATUS    (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | EFI_FVB_LOCK_STATUS)\r
+\r
+#endif\r
index 43ce1ab079c7879353e0a1e3d2cc01c506b7f4e7..fa9cada07cc774166aea3f7b93a4421ee5a0562c 100644 (file)
@@ -23,6 +23,8 @@
 #include <PiPei.h>\r
 \r
 #include <Common/FrameworkFirmwareFileSystem.h>\r
+#include <Common/FrameworkFirmwareVolumeImageFormat.h>\r
+#include <Common/FrameworkFirmwareVolumeHeader.h>\r
 #include <Common/FrameworkHob.h>\r
 #include <Common/FrameworkLegacy16.h>\r
 #include <Common/DataHubRecords.h>\r
diff --git a/IntelFrameworkPkg/Include/Ppi/FindFv.h b/IntelFrameworkPkg/Include/Ppi/FindFv.h
new file mode 100644 (file)
index 0000000..9a3e173
--- /dev/null
@@ -0,0 +1,71 @@
+/** @file\r
+  This file declares FindFv PPI used to locate FVs that contain PEIMs in PEI\r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+  Module Name:  FindFv.h\r
+\r
+  @par Revision Reference:\r
+  This PPI is defined in PEI CIS\r
+  Version 0.91\r
+\r
+**/\r
+\r
+#ifndef __FIND_FV_H__\r
+#define __FIND_FV_H__\r
+\r
+#define EFI_PEI_FIND_FV_PPI_GUID \\r
+  { \\r
+    0x36164812, 0xa023, 0x44e5, {0xbd, 0x85, 0x5, 0xbf, 0x3c, 0x77, 0x0, 0xaa } \\r
+  }\r
+\r
+typedef struct _EFI_PEI_FIND_FV_PPI EFI_PEI_FIND_FV_PPI;\r
+\r
+/**\r
+  This interface returns the base address of the firmware volume whose index \r
+  was passed in FvNumber.Once this function reports a firmware volume \r
+  index/base address pair, that index/address pairing must continue throughout PEI.\r
+\r
+  @param  PeiServices    Pointer to the PEI Services Table.\r
+  @param  This           Interface pointer that implements the Find FV service.\r
+  @param  FvNumber       The index of the firmware volume to locate.\r
+  @param  FvAddress      The address of the volume to discover.\r
+\r
+  @retval EFI_SUCCESS           An additional firmware volume was found.\r
+  @retval EFI_OUT_OF_RESOURCES  There are no firmware volumes for the given FvNumber.\r
+  @retval EFI_INVALID_PARAMETER *FvAddress is NULL.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_PEI_FIND_FV_FINDFV) (\r
+  IN EFI_PEI_FIND_FV_PPI      *This,\r
+  IN EFI_PEI_SERVICES         **PeiServices,\r
+  UINT8                       *FvNumber,\r
+  EFI_FIRMWARE_VOLUME_HEADER  **FVAddress\r
+  );\r
+\r
+/**\r
+  @par Ppi Description:\r
+  Hardware mechanisms for locating FVs in a platform vary widely.\r
+  EFI_PEI_FIND_FV_PPI serves to abstract this variation so that the \r
+  PEI Foundation can remain standard across a wide variety of platforms.\r
+\r
+  @param FindFv\r
+  Service that abstracts the location of additional firmware volumes.\r
+\r
+**/\r
+struct _EFI_PEI_FIND_FV_PPI {\r
+  EFI_PEI_FIND_FV_FINDFV  FindFv;\r
+};\r
+\r
+extern EFI_GUID gEfiFindFvPpiGuid;\r
+\r
+#endif\r