]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h
OvmfPkg: QemuFlashFvbServicesRuntimeDxe: remove FvbScratchSpace field
[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
ea0d111e
LE
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
a4ce9ffd 9\r
ea0d111e
LE
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
a4ce9ffd 12\r
ea0d111e 13 Module Name:\r
141f0c64 14\r
ea0d111e 15 FwBlockService.h\r
a4ce9ffd 16\r
ea0d111e
LE
17 Abstract:\r
18\r
19 Firmware volume block driver for Intel Firmware Hub (FWH) device\r
a4ce9ffd
JJ
20\r
21**/\r
22\r
23#ifndef _FW_BLOCK_SERVICE_H\r
24#define _FW_BLOCK_SERVICE_H\r
25\r
26//\r
27// BugBug: Add documentation here for data structure!!!!\r
28//\r
29#define FVB_PHYSICAL 0\r
30#define FVB_VIRTUAL 1\r
31\r
32typedef struct {\r
a4ce9ffd
JJ
33 UINTN FvBase[2];\r
34 UINTN NumOfBlocks;\r
35 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;\r
36} EFI_FW_VOL_INSTANCE;\r
37\r
38typedef struct {\r
39 UINT32 NumFv;\r
40 EFI_FW_VOL_INSTANCE *FvInstance[2];\r
a4ce9ffd
JJ
41} ESAL_FWB_GLOBAL;\r
42\r
43//\r
44// Fvb Protocol instance data\r
45//\r
ea0d111e
LE
46#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \\r
47 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
48\r
49#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \\r
50 FvbExtension, FVB_DEVICE_SIGNATURE)\r
51\r
a4ce9ffd
JJ
52#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')\r
53\r
54typedef struct {\r
55 MEDIA_FW_VOL_DEVICE_PATH FvDevPath;\r
56 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
57} FV_PIWG_DEVICE_PATH;\r
58\r
59typedef struct {\r
60 MEMMAP_DEVICE_PATH MemMapDevPath;\r
61 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
62} FV_MEMMAP_DEVICE_PATH;\r
63\r
64typedef struct {\r
65 UINTN Signature;\r
66 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
67 UINTN Instance;\r
68 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
69} EFI_FW_VOL_BLOCK_DEVICE;\r
70\r
71EFI_STATUS\r
72GetFvbInfo (\r
73 IN UINT64 FvLength,\r
74 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo\r
75 );\r
76\r
77EFI_STATUS\r
78FvbSetVolumeAttributes (\r
79 IN UINTN Instance,\r
80 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
81 IN ESAL_FWB_GLOBAL *Global,\r
82 IN BOOLEAN Virtual\r
83 );\r
84\r
85EFI_STATUS\r
86FvbGetVolumeAttributes (\r
87 IN UINTN Instance,\r
88 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
89 IN ESAL_FWB_GLOBAL *Global,\r
90 IN BOOLEAN Virtual\r
91 );\r
92\r
93EFI_STATUS\r
94FvbGetPhysicalAddress (\r
95 IN UINTN Instance,\r
96 OUT EFI_PHYSICAL_ADDRESS *Address,\r
97 IN ESAL_FWB_GLOBAL *Global,\r
98 IN BOOLEAN Virtual\r
99 );\r
100\r
101EFI_STATUS\r
102EFIAPI\r
103FvbInitialize (\r
104 IN EFI_HANDLE ImageHandle,\r
105 IN EFI_SYSTEM_TABLE *SystemTable\r
106 );\r
107\r
108\r
109VOID\r
110EFIAPI\r
111FvbClassAddressChangeEvent (\r
112 IN EFI_EVENT Event,\r
113 IN VOID *Context\r
114 );\r
115\r
116EFI_STATUS\r
117FvbGetLbaAddress (\r
118 IN UINTN Instance,\r
119 IN EFI_LBA Lba,\r
120 OUT UINTN *LbaAddress,\r
121 OUT UINTN *LbaLength,\r
122 OUT UINTN *NumOfBlocks,\r
123 IN ESAL_FWB_GLOBAL *Global,\r
124 IN BOOLEAN Virtual\r
125 );\r
126\r
127//\r
128// Protocol APIs\r
129//\r
130EFI_STATUS\r
131EFIAPI\r
132FvbProtocolGetAttributes (\r
133 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
134 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
135 );\r
136\r
137EFI_STATUS\r
138EFIAPI\r
139FvbProtocolSetAttributes (\r
140 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
141 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
142 );\r
143\r
144EFI_STATUS\r
145EFIAPI\r
146FvbProtocolGetPhysicalAddress (\r
147 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
148 OUT EFI_PHYSICAL_ADDRESS *Address\r
149 );\r
150\r
151EFI_STATUS\r
152EFIAPI\r
153FvbProtocolGetBlockSize (\r
154 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
155 IN CONST EFI_LBA Lba,\r
156 OUT UINTN *BlockSize,\r
157 OUT UINTN *NumOfBlocks\r
158 );\r
159\r
160EFI_STATUS\r
161EFIAPI\r
162FvbProtocolRead (\r
163 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
164 IN CONST EFI_LBA Lba,\r
165 IN CONST UINTN Offset,\r
166 IN OUT UINTN *NumBytes,\r
167 IN UINT8 *Buffer\r
168 );\r
169\r
170EFI_STATUS\r
171EFIAPI\r
172FvbProtocolWrite (\r
173 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
174 IN EFI_LBA Lba,\r
175 IN UINTN Offset,\r
176 IN OUT UINTN *NumBytes,\r
177 IN UINT8 *Buffer\r
178 );\r
179\r
180EFI_STATUS\r
181EFIAPI\r
182FvbProtocolEraseBlocks (\r
183 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
184 ...\r
185 );\r
186\r
187#endif\r