]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h
BaseTools/BinToPcd: Fix Python 2.7.x compatibility issue
[mirror_edk2.git] / OvmfPkg / QemuFlashFvbServicesRuntimeDxe / FwBlockService.h
... / ...
CommitLineData
1/**@file\r
2\r
3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
4\r
5 This program and the accompanying materials are licensed and made available\r
6 under the terms and conditions of the BSD License which accompanies this\r
7 distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13 Module Name:\r
14\r
15 FwBlockService.h\r
16\r
17 Abstract:\r
18\r
19 Firmware volume block driver for Intel Firmware Hub (FWH) device\r
20\r
21**/\r
22\r
23#ifndef _FW_BLOCK_SERVICE_H\r
24#define _FW_BLOCK_SERVICE_H\r
25\r
26typedef struct {\r
27 UINTN FvBase;\r
28 UINTN NumOfBlocks;\r
29 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;\r
30} EFI_FW_VOL_INSTANCE;\r
31\r
32typedef struct {\r
33 UINT32 NumFv;\r
34 EFI_FW_VOL_INSTANCE *FvInstance;\r
35} ESAL_FWB_GLOBAL;\r
36\r
37extern ESAL_FWB_GLOBAL *mFvbModuleGlobal;\r
38\r
39//\r
40// Fvb Protocol instance data\r
41//\r
42#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \\r
43 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
44\r
45#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \\r
46 FvbExtension, FVB_DEVICE_SIGNATURE)\r
47\r
48#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')\r
49\r
50typedef struct {\r
51 MEDIA_FW_VOL_DEVICE_PATH FvDevPath;\r
52 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
53} FV_PIWG_DEVICE_PATH;\r
54\r
55typedef struct {\r
56 MEMMAP_DEVICE_PATH MemMapDevPath;\r
57 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
58} FV_MEMMAP_DEVICE_PATH;\r
59\r
60typedef struct {\r
61 UINTN Signature;\r
62 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
63 UINTN Instance;\r
64 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
65} EFI_FW_VOL_BLOCK_DEVICE;\r
66\r
67EFI_STATUS\r
68GetFvbInfo (\r
69 IN UINT64 FvLength,\r
70 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo\r
71 );\r
72\r
73EFI_STATUS\r
74FvbSetVolumeAttributes (\r
75 IN UINTN Instance,\r
76 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
77 IN ESAL_FWB_GLOBAL *Global\r
78 );\r
79\r
80EFI_STATUS\r
81FvbGetVolumeAttributes (\r
82 IN UINTN Instance,\r
83 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
84 IN ESAL_FWB_GLOBAL *Global\r
85 );\r
86\r
87EFI_STATUS\r
88FvbGetPhysicalAddress (\r
89 IN UINTN Instance,\r
90 OUT EFI_PHYSICAL_ADDRESS *Address,\r
91 IN ESAL_FWB_GLOBAL *Global\r
92 );\r
93\r
94EFI_STATUS\r
95EFIAPI\r
96FvbInitialize (\r
97 IN EFI_HANDLE ImageHandle,\r
98 IN EFI_SYSTEM_TABLE *SystemTable\r
99 );\r
100\r
101\r
102VOID\r
103EFIAPI\r
104FvbClassAddressChangeEvent (\r
105 IN EFI_EVENT Event,\r
106 IN VOID *Context\r
107 );\r
108\r
109EFI_STATUS\r
110FvbGetLbaAddress (\r
111 IN UINTN Instance,\r
112 IN EFI_LBA Lba,\r
113 OUT UINTN *LbaAddress,\r
114 OUT UINTN *LbaLength,\r
115 OUT UINTN *NumOfBlocks,\r
116 IN ESAL_FWB_GLOBAL *Global\r
117 );\r
118\r
119//\r
120// Protocol APIs\r
121//\r
122EFI_STATUS\r
123EFIAPI\r
124FvbProtocolGetAttributes (\r
125 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
126 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
127 );\r
128\r
129EFI_STATUS\r
130EFIAPI\r
131FvbProtocolSetAttributes (\r
132 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
133 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
134 );\r
135\r
136EFI_STATUS\r
137EFIAPI\r
138FvbProtocolGetPhysicalAddress (\r
139 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
140 OUT EFI_PHYSICAL_ADDRESS *Address\r
141 );\r
142\r
143EFI_STATUS\r
144EFIAPI\r
145FvbProtocolGetBlockSize (\r
146 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
147 IN CONST EFI_LBA Lba,\r
148 OUT UINTN *BlockSize,\r
149 OUT UINTN *NumOfBlocks\r
150 );\r
151\r
152EFI_STATUS\r
153EFIAPI\r
154FvbProtocolRead (\r
155 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
156 IN CONST EFI_LBA Lba,\r
157 IN CONST UINTN Offset,\r
158 IN OUT UINTN *NumBytes,\r
159 IN UINT8 *Buffer\r
160 );\r
161\r
162EFI_STATUS\r
163EFIAPI\r
164FvbProtocolWrite (\r
165 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
166 IN EFI_LBA Lba,\r
167 IN UINTN Offset,\r
168 IN OUT UINTN *NumBytes,\r
169 IN UINT8 *Buffer\r
170 );\r
171\r
172EFI_STATUS\r
173EFIAPI\r
174FvbProtocolEraseBlocks (\r
175 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
176 ...\r
177 );\r
178\r
179//\r
180// The following functions have different implementations dependent on the\r
181// module type chosen for building this driver.\r
182//\r
183VOID\r
184InstallProtocolInterfaces (\r
185 IN EFI_FW_VOL_BLOCK_DEVICE *FvbDevice\r
186 );\r
187\r
188VOID\r
189InstallVirtualAddressChangeHandler (\r
190 VOID\r
191 );\r
192\r
193EFI_STATUS\r
194MarkIoMemoryRangeForRuntimeAccess (\r
195 IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
196 IN UINTN Length\r
197 );\r
198\r
199#endif\r