]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.h
OvmfPkg/EmuVariableFvbRuntimeDxe: stop using PcdVariableStoreSize
[mirror_edk2.git] / OvmfPkg / EmuVariableFvbRuntimeDxe / Fvb.h
CommitLineData
670d495b 1/*++\r
2\r
56d7640a 3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
89f385ce
LE
4This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
670d495b 11\r
12Module Name:\r
13\r
14 FwBlockService.h\r
89f385ce 15\r
670d495b 16Abstract:\r
17\r
18 Firmware volume block driver for Intel Firmware Hub (FWH) device\r
19\r
20--*/\r
21\r
22#ifndef _FW_BLOCK_SERVICE_H\r
23#define _FW_BLOCK_SERVICE_H\r
24\r
25//\r
26// Fvb Protocol instance data\r
27//\r
28#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
29#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')\r
30\r
31#pragma pack (1)\r
32\r
33typedef struct {\r
34\r
35 EFI_FIRMWARE_VOLUME_HEADER FvHdr;\r
36 EFI_FV_BLOCK_MAP_ENTRY EndBlockMap;\r
37 VARIABLE_STORE_HEADER VarHdr;\r
38\r
39} FVB_FV_HDR_AND_VARS_TEMPLATE;\r
40\r
41typedef struct {\r
42 MEMMAP_DEVICE_PATH MemMapDevPath;\r
43 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
44} FV_DEVICE_PATH;\r
45\r
46#pragma pack ()\r
47\r
48typedef struct {\r
49 UINTN Signature;\r
50 FV_DEVICE_PATH DevicePath;\r
51 VOID *BufferPtr;\r
52 UINTN BlockSize;\r
53 UINTN Size;\r
54 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
55} EFI_FW_VOL_BLOCK_DEVICE;\r
56\r
57\r
58//\r
59// Constants\r
60//\r
7e832926
LE
61#define EMU_FVB_BLOCK_SIZE \\r
62 EFI_PAGE_SIZE\r
63#define EMU_FVB_NUM_SPARE_BLOCKS \\r
64 EFI_SIZE_TO_PAGES ((UINTN)FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize))\r
65#define EMU_FVB_NUM_TOTAL_BLOCKS \\r
66 (2 * EMU_FVB_NUM_SPARE_BLOCKS)\r
67#define EMU_FVB_SIZE \\r
68 (EMU_FVB_NUM_TOTAL_BLOCKS * EMU_FVB_BLOCK_SIZE)\r
670d495b 69#define FTW_WRITE_QUEUE_SIZE \\r
70 (FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) - \\r
71 sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER))\r
72#define EMU_FV_HEADER_LENGTH OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)\r
73\r
74#define NOT_ERASED_BIT 0\r
75#define ERASED_BIT 1\r
76#define ERASED_UINT8 0xff\r
77#define ERASED_UINT32 0xffffffff\r
78\r
79//\r
80// Protocol APIs\r
81//\r
82EFI_STATUS\r
83EFIAPI\r
84FvbProtocolGetAttributes (\r
85 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
86 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
87 )\r
88;\r
89\r
90EFI_STATUS\r
91EFIAPI\r
92FvbProtocolSetAttributes (\r
93 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
94 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
95 )\r
96;\r
97\r
98EFI_STATUS\r
99EFIAPI\r
100FvbProtocolGetPhysicalAddress (\r
101 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
102 OUT EFI_PHYSICAL_ADDRESS *Address\r
103 )\r
104;\r
105\r
106EFI_STATUS\r
107EFIAPI\r
108FvbProtocolGetBlockSize (\r
109 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
110 IN EFI_LBA Lba,\r
111 OUT UINTN *BlockSize,\r
112 OUT UINTN *NumberOfBlocks\r
113 )\r
114;\r
115\r
116EFI_STATUS\r
117EFIAPI\r
118FvbProtocolRead (\r
119 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
120 IN EFI_LBA Lba,\r
121 IN UINTN Offset,\r
122 IN OUT UINTN *NumBytes,\r
123 IN OUT UINT8 *Buffer\r
124 )\r
125;\r
126\r
127EFI_STATUS\r
128EFIAPI\r
129FvbProtocolWrite (\r
130 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
131 IN EFI_LBA Lba,\r
132 IN UINTN Offset,\r
133 IN OUT UINTN *NumBytes,\r
134 IN UINT8 *Buffer\r
135 )\r
136;\r
137\r
138EFI_STATUS\r
139EFIAPI\r
140FvbProtocolEraseBlocks (\r
141 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
142 ...\r
143 )\r
144;\r
145\r
146#endif\r