]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Common/FirmwareVolumeHeader.h
Sync this file with MiscSubClass spec and add some struture alias to use them more...
[mirror_edk2.git] / MdePkg / Include / Common / FirmwareVolumeHeader.h
1 /** @file
2 Defines data structure that is the volume header found at the beginning of
3 all firmware volumes that are either memory mapped, or have an
4 associated FirmwareVolumeBlock protocol.
5
6 Copyright (c) 2006, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15 Module Name: FirmwareVolumeHeader.h
16
17 @par Revision Reference:
18 These definitions are from Firmware Volume Block Spec 0.9.
19
20 **/
21
22 #ifndef __EFI_FIRMWARE_VOLUME_HEADER_H__
23 #define __EFI_FIRMWARE_VOLUME_HEADER_H__
24
25 //
26 // Firmware Volume Block Attributes definition
27 //
28 typedef UINT32 EFI_FVB_ATTRIBUTES;
29
30 //
31 // Firmware Volume Block Attributes bit definitions
32 //
33 #define EFI_FVB_READ_DISABLED_CAP 0x00000001
34 #define EFI_FVB_READ_ENABLED_CAP 0x00000002
35 #define EFI_FVB_READ_STATUS 0x00000004
36
37 #define EFI_FVB_WRITE_DISABLED_CAP 0x00000008
38 #define EFI_FVB_WRITE_ENABLED_CAP 0x00000010
39 #define EFI_FVB_WRITE_STATUS 0x00000020
40
41 #define EFI_FVB_LOCK_CAP 0x00000040
42 #define EFI_FVB_LOCK_STATUS 0x00000080
43
44 #define EFI_FVB_STICKY_WRITE 0x00000200
45 #define EFI_FVB_MEMORY_MAPPED 0x00000400
46 #define EFI_FVB_ERASE_POLARITY 0x00000800
47
48 #define EFI_FVB_ALIGNMENT_CAP 0x00008000
49 #define EFI_FVB_ALIGNMENT_2 0x00010000
50 #define EFI_FVB_ALIGNMENT_4 0x00020000
51 #define EFI_FVB_ALIGNMENT_8 0x00040000
52 #define EFI_FVB_ALIGNMENT_16 0x00080000
53 #define EFI_FVB_ALIGNMENT_32 0x00100000
54 #define EFI_FVB_ALIGNMENT_64 0x00200000
55 #define EFI_FVB_ALIGNMENT_128 0x00400000
56 #define EFI_FVB_ALIGNMENT_256 0x00800000
57 #define EFI_FVB_ALIGNMENT_512 0x01000000
58 #define EFI_FVB_ALIGNMENT_1K 0x02000000
59 #define EFI_FVB_ALIGNMENT_2K 0x04000000
60 #define EFI_FVB_ALIGNMENT_4K 0x08000000
61 #define EFI_FVB_ALIGNMENT_8K 0x10000000
62 #define EFI_FVB_ALIGNMENT_16K 0x20000000
63 #define EFI_FVB_ALIGNMENT_32K 0x40000000
64 #define EFI_FVB_ALIGNMENT_64K 0x80000000
65
66 #define EFI_FVB_CAPABILITIES (EFI_FVB_READ_DISABLED_CAP | \
67 EFI_FVB_READ_ENABLED_CAP | \
68 EFI_FVB_WRITE_DISABLED_CAP | \
69 EFI_FVB_WRITE_ENABLED_CAP | \
70 EFI_FVB_LOCK_CAP \
71 )
72
73 #define EFI_FVB_STATUS (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | EFI_FVB_LOCK_STATUS)
74
75 ///
76 /// Firmware Volume Header Revision definition
77 ///
78 #define EFI_FVH_REVISION 0x01
79
80 ///
81 /// Firmware Volume Header Signature definition
82 ///
83 #define EFI_FVH_SIGNATURE EFI_SIGNATURE_32 ('_', 'F', 'V', 'H')
84
85 ///
86 /// Firmware Volume Header Block Map Entry definition
87 ///
88 typedef struct {
89 UINT32 NumBlocks;
90 UINT32 BlockLength;
91 } EFI_FV_BLOCK_MAP_ENTRY;
92
93 ///
94 /// Firmware Volume Header definition
95 ///
96 typedef struct {
97 UINT8 ZeroVector[16];
98 EFI_GUID FileSystemGuid;
99 UINT64 FvLength;
100 UINT32 Signature;
101 EFI_FVB_ATTRIBUTES Attributes;
102 UINT16 HeaderLength;
103 UINT16 Checksum;
104 UINT8 Reserved[3];
105 UINT8 Revision;
106 EFI_FV_BLOCK_MAP_ENTRY FvBlockMap[1];
107 } EFI_FIRMWARE_VOLUME_HEADER;
108
109 #endif