]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/FvbServicesRuntimeDxe/FwBlockService.h
CryptoPkg/BaseCryptLib: Make HMAC_CTX size backward compatible
[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
20 EFI_LOCK FvbDevLock;\r
21 UINTN FvBase[2];\r
22 UINTN NumOfBlocks;\r
23 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;\r
24} EFI_FW_VOL_INSTANCE;\r
25\r
26typedef struct {\r
27 UINT32 NumFv;\r
28 EFI_FW_VOL_INSTANCE *FvInstance[2];\r
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
36#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')\r
37\r
38typedef struct {\r
39 MEMMAP_DEVICE_PATH MemMapDevPath;\r
40 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
41} FV_DEVICE_PATH;\r
42\r
43typedef struct {\r
44 UINTN Signature;\r
45 FV_DEVICE_PATH DevicePath;\r
46 UINTN Instance;\r
47 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
48} EFI_FW_VOL_BLOCK_DEVICE;\r
49\r
50EFI_STATUS\r
51GetFvbInfo (\r
52 IN UINT64 FvLength,\r
53 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo\r
54 )\r
55;\r
56\r
57EFI_STATUS\r
58FvbReadBlock (\r
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
66 )\r
67;\r
68\r
69EFI_STATUS\r
70FvbWriteBlock (\r
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
78 )\r
79;\r
80\r
81EFI_STATUS\r
82FvbEraseBlock (\r
83 IN UINTN Instance,\r
84 IN EFI_LBA Lba,\r
85 IN ESAL_FWB_GLOBAL *Global,\r
86 IN BOOLEAN Virtual\r
87 )\r
88;\r
89\r
90EFI_STATUS\r
91FvbSetVolumeAttributes (\r
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
96 )\r
97;\r
98\r
99EFI_STATUS\r
100FvbGetVolumeAttributes (\r
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
105 )\r
106;\r
107\r
108EFI_STATUS\r
109FvbGetPhysicalAddress (\r
110 IN UINTN Instance,\r
111 OUT EFI_PHYSICAL_ADDRESS *Address,\r
112 IN ESAL_FWB_GLOBAL *Global,\r
113 IN BOOLEAN Virtual\r
114 )\r
115;\r
116\r
117EFI_STATUS\r
118EFIAPI\r
119FvbInitialize (\r
120 IN EFI_HANDLE ImageHandle,\r
121 IN EFI_SYSTEM_TABLE *SystemTable\r
122 )\r
123;\r
124\r
125\r
126VOID\r
127EFIAPI\r
128FvbClassAddressChangeEvent (\r
129 IN EFI_EVENT Event,\r
130 IN VOID *Context\r
131 )\r
132;\r
133\r
134EFI_STATUS\r
135FvbGetLbaAddress (\r
136 IN UINTN Instance,\r
137 IN EFI_LBA Lba,\r
138 OUT UINTN *LbaAddress,\r
139 OUT UINTN *LbaLength,\r
140 OUT UINTN *NumOfBlocks,\r
141 IN ESAL_FWB_GLOBAL *Global,\r
142 IN BOOLEAN Virtual\r
143 )\r
144;\r
145\r
146//\r
147// Protocol APIs\r
148//\r
149EFI_STATUS\r
150EFIAPI\r
151FvbProtocolGetAttributes (\r
152 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
153 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
154 )\r
155;\r
156\r
157EFI_STATUS\r
158EFIAPI\r
159FvbProtocolSetAttributes (\r
160 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
161 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
162 )\r
163;\r
164\r
165EFI_STATUS\r
166EFIAPI\r
167FvbProtocolGetPhysicalAddress (\r
168 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
169 OUT EFI_PHYSICAL_ADDRESS *Address\r
170 )\r
171;\r
172\r
173EFI_STATUS\r
174EFIAPI\r
175FvbProtocolGetBlockSize (\r
176 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
177 IN EFI_LBA Lba,\r
178 OUT UINTN *BlockSize,\r
179 OUT UINTN *NumOfBlocks\r
180 )\r
181;\r
182\r
183EFI_STATUS\r
184EFIAPI\r
185FvbProtocolRead (\r
186 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
187 IN EFI_LBA Lba,\r
188 IN UINTN Offset,\r
189 IN OUT UINTN *NumBytes,\r
190 IN UINT8 *Buffer\r
191 )\r
192;\r
193\r
194EFI_STATUS\r
195EFIAPI\r
196FvbProtocolWrite (\r
197 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
198 IN EFI_LBA Lba,\r
199 IN UINTN Offset,\r
200 IN OUT UINTN *NumBytes,\r
201 IN UINT8 *Buffer\r
202 )\r
203;\r
204\r
205EFI_STATUS\r
206EFIAPI\r
207FvbProtocolEraseBlocks (\r
208 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
209 ...\r
210 )\r
211;\r
212\r
213#endif\r