]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h
NetworkPkg: Apply uncrustify changes
[mirror_edk2.git] / OvmfPkg / QemuFlashFvbServicesRuntimeDxe / FwBlockService.h
CommitLineData
a4ce9ffd
JJ
1/**@file\r
2\r
ea0d111e 3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
141f0c64 4\r
b26f0cf9 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
a4ce9ffd 6\r
ea0d111e 7 Module Name:\r
141f0c64 8\r
ea0d111e 9 FwBlockService.h\r
a4ce9ffd 10\r
ea0d111e
LE
11 Abstract:\r
12\r
13 Firmware volume block driver for Intel Firmware Hub (FWH) device\r
a4ce9ffd
JJ
14\r
15**/\r
16\r
17#ifndef _FW_BLOCK_SERVICE_H\r
18#define _FW_BLOCK_SERVICE_H\r
19\r
a4ce9ffd 20typedef struct {\r
109301e5 21 UINTN FvBase;\r
a4ce9ffd
JJ
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
109301e5 28 EFI_FW_VOL_INSTANCE *FvInstance;\r
a4ce9ffd
JJ
29} ESAL_FWB_GLOBAL;\r
30\r
1767877a
LE
31extern ESAL_FWB_GLOBAL *mFvbModuleGlobal;\r
32\r
a4ce9ffd
JJ
33//\r
34// Fvb Protocol instance data\r
35//\r
ea0d111e
LE
36#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \\r
37 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
38\r
39#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \\r
40 FvbExtension, FVB_DEVICE_SIGNATURE)\r
41\r
a4ce9ffd
JJ
42#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')\r
43\r
44typedef struct {\r
45 MEDIA_FW_VOL_DEVICE_PATH FvDevPath;\r
46 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
47} FV_PIWG_DEVICE_PATH;\r
48\r
49typedef struct {\r
50 MEMMAP_DEVICE_PATH MemMapDevPath;\r
51 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
52} FV_MEMMAP_DEVICE_PATH;\r
53\r
54typedef struct {\r
55 UINTN Signature;\r
56 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
57 UINTN Instance;\r
58 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
59} EFI_FW_VOL_BLOCK_DEVICE;\r
60\r
61EFI_STATUS\r
62GetFvbInfo (\r
63 IN UINT64 FvLength,\r
64 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo\r
65 );\r
66\r
67EFI_STATUS\r
68FvbSetVolumeAttributes (\r
69 IN UINTN Instance,\r
70 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
109301e5 71 IN ESAL_FWB_GLOBAL *Global\r
a4ce9ffd
JJ
72 );\r
73\r
74EFI_STATUS\r
75FvbGetVolumeAttributes (\r
76 IN UINTN Instance,\r
77 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
109301e5 78 IN ESAL_FWB_GLOBAL *Global\r
a4ce9ffd
JJ
79 );\r
80\r
81EFI_STATUS\r
82FvbGetPhysicalAddress (\r
83 IN UINTN Instance,\r
84 OUT EFI_PHYSICAL_ADDRESS *Address,\r
109301e5 85 IN ESAL_FWB_GLOBAL *Global\r
a4ce9ffd
JJ
86 );\r
87\r
88EFI_STATUS\r
89EFIAPI\r
90FvbInitialize (\r
91 IN EFI_HANDLE ImageHandle,\r
92 IN EFI_SYSTEM_TABLE *SystemTable\r
93 );\r
94\r
95\r
96VOID\r
97EFIAPI\r
98FvbClassAddressChangeEvent (\r
99 IN EFI_EVENT Event,\r
100 IN VOID *Context\r
101 );\r
102\r
103EFI_STATUS\r
104FvbGetLbaAddress (\r
105 IN UINTN Instance,\r
106 IN EFI_LBA Lba,\r
107 OUT UINTN *LbaAddress,\r
108 OUT UINTN *LbaLength,\r
109 OUT UINTN *NumOfBlocks,\r
109301e5 110 IN ESAL_FWB_GLOBAL *Global\r
a4ce9ffd
JJ
111 );\r
112\r
113//\r
114// Protocol APIs\r
115//\r
116EFI_STATUS\r
117EFIAPI\r
118FvbProtocolGetAttributes (\r
119 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
120 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
121 );\r
122\r
123EFI_STATUS\r
124EFIAPI\r
125FvbProtocolSetAttributes (\r
126 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
127 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
128 );\r
129\r
130EFI_STATUS\r
131EFIAPI\r
132FvbProtocolGetPhysicalAddress (\r
133 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
134 OUT EFI_PHYSICAL_ADDRESS *Address\r
135 );\r
136\r
137EFI_STATUS\r
138EFIAPI\r
139FvbProtocolGetBlockSize (\r
140 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
141 IN CONST EFI_LBA Lba,\r
142 OUT UINTN *BlockSize,\r
143 OUT UINTN *NumOfBlocks\r
144 );\r
145\r
146EFI_STATUS\r
147EFIAPI\r
148FvbProtocolRead (\r
149 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
150 IN CONST EFI_LBA Lba,\r
151 IN CONST UINTN Offset,\r
152 IN OUT UINTN *NumBytes,\r
153 IN UINT8 *Buffer\r
154 );\r
155\r
156EFI_STATUS\r
157EFIAPI\r
158FvbProtocolWrite (\r
159 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
160 IN EFI_LBA Lba,\r
161 IN UINTN Offset,\r
162 IN OUT UINTN *NumBytes,\r
163 IN UINT8 *Buffer\r
164 );\r
165\r
166EFI_STATUS\r
167EFIAPI\r
168FvbProtocolEraseBlocks (\r
169 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
170 ...\r
171 );\r
172\r
1767877a
LE
173//\r
174// The following functions have different implementations dependent on the\r
175// module type chosen for building this driver.\r
176//\r
177VOID\r
178InstallProtocolInterfaces (\r
179 IN EFI_FW_VOL_BLOCK_DEVICE *FvbDevice\r
180 );\r
181\r
182VOID\r
183InstallVirtualAddressChangeHandler (\r
184 VOID\r
185 );\r
3b3d016b
BS
186\r
187EFI_STATUS\r
188MarkIoMemoryRangeForRuntimeAccess (\r
189 IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
190 IN UINTN Length\r
191 );\r
192\r
cd99d07d
LE
193VOID\r
194SetPcdFlashNvStorageBaseAddresses (\r
195 VOID\r
196 );\r
197\r
a4ce9ffd 198#endif\r