]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[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
ac0a286f
MK
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
670d495b 24\r
25#pragma pack (1)\r
26\r
27typedef struct {\r
ac0a286f
MK
28 EFI_FIRMWARE_VOLUME_HEADER FvHdr;\r
29 EFI_FV_BLOCK_MAP_ENTRY EndBlockMap;\r
30 VARIABLE_STORE_HEADER VarHdr;\r
670d495b 31} FVB_FV_HDR_AND_VARS_TEMPLATE;\r
32\r
33typedef struct {\r
ac0a286f
MK
34 MEMMAP_DEVICE_PATH MemMapDevPath;\r
35 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
670d495b 36} FV_DEVICE_PATH;\r
37\r
38#pragma pack ()\r
39\r
40typedef struct {\r
ac0a286f
MK
41 UINTN Signature;\r
42 FV_DEVICE_PATH DevicePath;\r
43 VOID *BufferPtr;\r
44 UINTN BlockSize;\r
45 UINTN Size;\r
46 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
670d495b 47} EFI_FW_VOL_BLOCK_DEVICE;\r
48\r
670d495b 49//\r
50// Constants\r
51//\r
7e832926
LE
52#define EMU_FVB_BLOCK_SIZE \\r
53 EFI_PAGE_SIZE\r
54#define EMU_FVB_NUM_SPARE_BLOCKS \\r
55 EFI_SIZE_TO_PAGES ((UINTN)FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize))\r
56#define EMU_FVB_NUM_TOTAL_BLOCKS \\r
57 (2 * EMU_FVB_NUM_SPARE_BLOCKS)\r
58#define EMU_FVB_SIZE \\r
59 (EMU_FVB_NUM_TOTAL_BLOCKS * EMU_FVB_BLOCK_SIZE)\r
670d495b 60#define FTW_WRITE_QUEUE_SIZE \\r
61 (FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) - \\r
62 sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER))\r
ac0a286f 63#define EMU_FV_HEADER_LENGTH OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)\r
670d495b 64\r
ac0a286f
MK
65#define NOT_ERASED_BIT 0\r
66#define ERASED_BIT 1\r
67#define ERASED_UINT8 0xff\r
68#define ERASED_UINT32 0xffffffff\r
670d495b 69\r
70//\r
71// Protocol APIs\r
72//\r
73EFI_STATUS\r
74EFIAPI\r
75FvbProtocolGetAttributes (\r
76 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
77 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
78 )\r
79;\r
80\r
81EFI_STATUS\r
82EFIAPI\r
83FvbProtocolSetAttributes (\r
84 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
85 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
86 )\r
87;\r
88\r
89EFI_STATUS\r
90EFIAPI\r
91FvbProtocolGetPhysicalAddress (\r
92 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
93 OUT EFI_PHYSICAL_ADDRESS *Address\r
94 )\r
95;\r
96\r
97EFI_STATUS\r
98EFIAPI\r
99FvbProtocolGetBlockSize (\r
100 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
101 IN EFI_LBA Lba,\r
102 OUT UINTN *BlockSize,\r
103 OUT UINTN *NumberOfBlocks\r
104 )\r
105;\r
106\r
107EFI_STATUS\r
108EFIAPI\r
109FvbProtocolRead (\r
110 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
111 IN EFI_LBA Lba,\r
112 IN UINTN Offset,\r
113 IN OUT UINTN *NumBytes,\r
114 IN OUT UINT8 *Buffer\r
115 )\r
116;\r
117\r
118EFI_STATUS\r
119EFIAPI\r
120FvbProtocolWrite (\r
121 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
122 IN EFI_LBA Lba,\r
123 IN UINTN Offset,\r
124 IN OUT UINTN *NumBytes,\r
125 IN UINT8 *Buffer\r
126 )\r
127;\r
128\r
129EFI_STATUS\r
130EFIAPI\r
131FvbProtocolEraseBlocks (\r
132 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
133 ...\r
134 )\r
135;\r
136\r
137#endif\r