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