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