]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/Common/FirmwareVolumeHeader.h
Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing...
[mirror_edk2.git] / OldMdePkg / Include / Common / FirmwareVolumeHeader.h
diff --git a/OldMdePkg/Include/Common/FirmwareVolumeHeader.h b/OldMdePkg/Include/Common/FirmwareVolumeHeader.h
new file mode 100644 (file)
index 0000000..c2bbddf
--- /dev/null
@@ -0,0 +1,116 @@
+/** @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
+///\r
+/// Firmware Volume Header Revision definition\r
+///\r
+#define EFI_FVH_REVISION  0x01\r
+\r
+///\r
+/// Firmware Volume Header Signature definition\r
+///\r
+#define EFI_FVH_SIGNATURE EFI_SIGNATURE_32 ('_', 'F', 'V', 'H')\r
+\r
+///\r
+/// Firmware Volume Header Block Map Entry definition\r
+///\r
+typedef struct {\r
+  UINT32  NumBlocks;\r
+  UINT32  BlockLength;\r
+} EFI_FV_BLOCK_MAP_ENTRY;\r
+\r
+///\r
+/// Firmware Volume Header definition\r
+///\r
+typedef struct {\r
+  UINT8                   ZeroVector[16];\r
+  EFI_GUID                FileSystemGuid;\r
+  UINT64                  FvLength;\r
+  UINT32                  Signature;\r
+  EFI_FVB_ATTRIBUTES      Attributes;\r
+  UINT16                  HeaderLength;\r
+  UINT16                  Checksum;\r
+  UINT8                   Reserved[3];\r
+  UINT8                   Revision;\r
+  EFI_FV_BLOCK_MAP_ENTRY  FvBlockMap[1];\r
+} EFI_FIRMWARE_VOLUME_HEADER;\r
+\r
+#endif\r