]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/FvbServicesRuntimeDxe/FwBlockService.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmulatorPkg / FvbServicesRuntimeDxe / FwBlockService.h
CommitLineData
949f388f 1/*++ @file\r
2 Firmware volume block driver for Intel Firmware Hub (FWH) device\r
3\r
4Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
5Portions copyright (c) 2011, Apple Inc. All rights reserved.\r
e3ba31da 6SPDX-License-Identifier: BSD-2-Clause-Patent\r
949f388f 7\r
8**/\r
9\r
10#ifndef _FW_BLOCK_SERVICE_H\r
11#define _FW_BLOCK_SERVICE_H\r
12\r
13//\r
14// BugBug: Add documentation here for data structure!!!!\r
15//\r
16#define FVB_PHYSICAL 0\r
17#define FVB_VIRTUAL 1\r
18\r
19typedef struct {\r
a550d468
MK
20 EFI_LOCK FvbDevLock;\r
21 UINTN FvBase[2];\r
22 UINTN NumOfBlocks;\r
23 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;\r
949f388f 24} EFI_FW_VOL_INSTANCE;\r
25\r
26typedef struct {\r
a550d468
MK
27 UINT32 NumFv;\r
28 EFI_FW_VOL_INSTANCE *FvInstance[2];\r
949f388f 29} ESAL_FWB_GLOBAL;\r
30\r
31//\r
32// Fvb Protocol instance data\r
33//\r
34#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
35#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FvbExtension, FVB_DEVICE_SIGNATURE)\r
a550d468 36#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')\r
949f388f 37\r
38typedef struct {\r
a550d468
MK
39 MEMMAP_DEVICE_PATH MemMapDevPath;\r
40 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
949f388f 41} FV_DEVICE_PATH;\r
42\r
43typedef struct {\r
a550d468
MK
44 UINTN Signature;\r
45 FV_DEVICE_PATH DevicePath;\r
46 UINTN Instance;\r
47 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
949f388f 48} EFI_FW_VOL_BLOCK_DEVICE;\r
49\r
50EFI_STATUS\r
51GetFvbInfo (\r
a550d468
MK
52 IN UINT64 FvLength,\r
53 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo\r
949f388f 54 )\r
55;\r
56\r
57EFI_STATUS\r
58FvbReadBlock (\r
a550d468
MK
59 IN UINTN Instance,\r
60 IN EFI_LBA Lba,\r
61 IN UINTN BlockOffset,\r
62 IN OUT UINTN *NumBytes,\r
63 IN UINT8 *Buffer,\r
64 IN ESAL_FWB_GLOBAL *Global,\r
65 IN BOOLEAN Virtual\r
949f388f 66 )\r
67;\r
68\r
69EFI_STATUS\r
70FvbWriteBlock (\r
a550d468
MK
71 IN UINTN Instance,\r
72 IN EFI_LBA Lba,\r
73 IN UINTN BlockOffset,\r
74 IN OUT UINTN *NumBytes,\r
75 IN UINT8 *Buffer,\r
76 IN ESAL_FWB_GLOBAL *Global,\r
77 IN BOOLEAN Virtual\r
949f388f 78 )\r
79;\r
80\r
81EFI_STATUS\r
82FvbEraseBlock (\r
a550d468
MK
83 IN UINTN Instance,\r
84 IN EFI_LBA Lba,\r
85 IN ESAL_FWB_GLOBAL *Global,\r
86 IN BOOLEAN Virtual\r
949f388f 87 )\r
88;\r
89\r
90EFI_STATUS\r
91FvbSetVolumeAttributes (\r
a550d468
MK
92 IN UINTN Instance,\r
93 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
94 IN ESAL_FWB_GLOBAL *Global,\r
95 IN BOOLEAN Virtual\r
949f388f 96 )\r
97;\r
98\r
99EFI_STATUS\r
100FvbGetVolumeAttributes (\r
a550d468
MK
101 IN UINTN Instance,\r
102 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
103 IN ESAL_FWB_GLOBAL *Global,\r
104 IN BOOLEAN Virtual\r
949f388f 105 )\r
106;\r
107\r
108EFI_STATUS\r
109FvbGetPhysicalAddress (\r
a550d468
MK
110 IN UINTN Instance,\r
111 OUT EFI_PHYSICAL_ADDRESS *Address,\r
112 IN ESAL_FWB_GLOBAL *Global,\r
113 IN BOOLEAN Virtual\r
949f388f 114 )\r
115;\r
116\r
117EFI_STATUS\r
118EFIAPI\r
119FvbInitialize (\r
a550d468
MK
120 IN EFI_HANDLE ImageHandle,\r
121 IN EFI_SYSTEM_TABLE *SystemTable\r
949f388f 122 )\r
123;\r
124\r
949f388f 125VOID\r
126EFIAPI\r
127FvbClassAddressChangeEvent (\r
a550d468
MK
128 IN EFI_EVENT Event,\r
129 IN VOID *Context\r
949f388f 130 )\r
131;\r
132\r
133EFI_STATUS\r
134FvbGetLbaAddress (\r
a550d468
MK
135 IN UINTN Instance,\r
136 IN EFI_LBA Lba,\r
137 OUT UINTN *LbaAddress,\r
138 OUT UINTN *LbaLength,\r
139 OUT UINTN *NumOfBlocks,\r
140 IN ESAL_FWB_GLOBAL *Global,\r
141 IN BOOLEAN Virtual\r
949f388f 142 )\r
143;\r
144\r
145//\r
146// Protocol APIs\r
147//\r
148EFI_STATUS\r
149EFIAPI\r
150FvbProtocolGetAttributes (\r
a550d468
MK
151 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
152 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
949f388f 153 )\r
154;\r
155\r
156EFI_STATUS\r
157EFIAPI\r
158FvbProtocolSetAttributes (\r
a550d468
MK
159 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
160 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
949f388f 161 )\r
162;\r
163\r
164EFI_STATUS\r
165EFIAPI\r
166FvbProtocolGetPhysicalAddress (\r
a550d468
MK
167 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
168 OUT EFI_PHYSICAL_ADDRESS *Address\r
949f388f 169 )\r
170;\r
171\r
172EFI_STATUS\r
173EFIAPI\r
174FvbProtocolGetBlockSize (\r
a550d468
MK
175 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
176 IN EFI_LBA Lba,\r
177 OUT UINTN *BlockSize,\r
178 OUT UINTN *NumOfBlocks\r
949f388f 179 )\r
180;\r
181\r
182EFI_STATUS\r
183EFIAPI\r
184FvbProtocolRead (\r
a550d468
MK
185 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
186 IN EFI_LBA Lba,\r
187 IN UINTN Offset,\r
188 IN OUT UINTN *NumBytes,\r
189 IN UINT8 *Buffer\r
949f388f 190 )\r
191;\r
192\r
193EFI_STATUS\r
194EFIAPI\r
195FvbProtocolWrite (\r
a550d468
MK
196 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
197 IN EFI_LBA Lba,\r
198 IN UINTN Offset,\r
199 IN OUT UINTN *NumBytes,\r
200 IN UINT8 *Buffer\r
949f388f 201 )\r
202;\r
203\r
204EFI_STATUS\r
205EFIAPI\r
206FvbProtocolEraseBlocks (\r
a550d468 207 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
949f388f 208 ...\r
209 )\r
210;\r
211\r
212#endif\r