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