]> git.proxmox.com Git - mirror_edk2.git/blame - UnixPkg/FvbServicesRuntimeDxe/FwBlockService.h
Integrate patch from Andrew Fish to make it run on OS X.
[mirror_edk2.git] / UnixPkg / FvbServicesRuntimeDxe / FwBlockService.h
CommitLineData
804405e7 1/*++\r
2\r
ccd55824 3Copyright (c) 2006 - 2009, Intel Corporation \r
804405e7 4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 FwBlockService.h\r
15 \r
16Abstract:\r
17\r
18 Firmware volume block driver for Intel Firmware Hub (FWH) device\r
19\r
20--*/\r
21\r
22#ifndef _FW_BLOCK_SERVICE_H\r
23#define _FW_BLOCK_SERVICE_H\r
24\r
25//\r
26// BugBug: Add documentation here for data structure!!!!\r
27//\r
28#define FVB_PHYSICAL 0\r
29#define FVB_VIRTUAL 1\r
30\r
31typedef struct {\r
32 EFI_LOCK FvbDevLock;\r
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
804405e7 41} ESAL_FWB_GLOBAL;\r
42\r
43//\r
44// Fvb Protocol instance data\r
45//\r
46#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
47#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FvbExtension, FVB_DEVICE_SIGNATURE)\r
208301e9 48#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')\r
804405e7 49\r
50typedef struct {\r
51 MEMMAP_DEVICE_PATH MemMapDevPath;\r
52 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
53} FV_DEVICE_PATH;\r
54\r
55typedef struct {\r
56 UINTN Signature;\r
57 FV_DEVICE_PATH DevicePath;\r
58 UINTN Instance;\r
59 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
804405e7 60} EFI_FW_VOL_BLOCK_DEVICE;\r
61\r
62EFI_STATUS\r
63GetFvbInfo (\r
64 IN UINT64 FvLength,\r
65 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo\r
66 )\r
67;\r
68\r
69EFI_STATUS\r
70FvbReadBlock (\r
71 IN UINTN Instance,\r
72 IN EFI_LBA Lba,\r
73 IN UINTN BlockOffset,\r
74 IN OUT UINTN *NumBytes,\r
75 IN UINT8 *Buffer,\r
76 IN ESAL_FWB_GLOBAL *Global,\r
77 IN BOOLEAN Virtual\r
78 )\r
79;\r
80\r
81EFI_STATUS\r
82FvbWriteBlock (\r
83 IN UINTN Instance,\r
84 IN EFI_LBA Lba,\r
85 IN UINTN BlockOffset,\r
86 IN OUT UINTN *NumBytes,\r
87 IN UINT8 *Buffer,\r
88 IN ESAL_FWB_GLOBAL *Global,\r
89 IN BOOLEAN Virtual\r
90 )\r
91;\r
92\r
93EFI_STATUS\r
94FvbEraseBlock (\r
95 IN UINTN Instance,\r
96 IN EFI_LBA Lba,\r
97 IN ESAL_FWB_GLOBAL *Global,\r
98 IN BOOLEAN Virtual\r
99 )\r
100;\r
101\r
102EFI_STATUS\r
103FvbSetVolumeAttributes (\r
104 IN UINTN Instance,\r
dfb8993c 105 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
804405e7 106 IN ESAL_FWB_GLOBAL *Global,\r
107 IN BOOLEAN Virtual\r
108 )\r
109;\r
110\r
111EFI_STATUS\r
112FvbGetVolumeAttributes (\r
113 IN UINTN Instance,\r
dfb8993c 114 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
804405e7 115 IN ESAL_FWB_GLOBAL *Global,\r
116 IN BOOLEAN Virtual\r
117 )\r
118;\r
119\r
120EFI_STATUS\r
121FvbGetPhysicalAddress (\r
122 IN UINTN Instance,\r
123 OUT EFI_PHYSICAL_ADDRESS *Address,\r
124 IN ESAL_FWB_GLOBAL *Global,\r
125 IN BOOLEAN Virtual\r
126 )\r
127;\r
128\r
129EFI_STATUS\r
130EFIAPI\r
131FvbInitialize (\r
132 IN EFI_HANDLE ImageHandle,\r
133 IN EFI_SYSTEM_TABLE *SystemTable\r
134 )\r
135;\r
136\r
137\r
138VOID\r
139EFIAPI\r
140FvbClassAddressChangeEvent (\r
141 IN EFI_EVENT Event,\r
142 IN VOID *Context\r
143 )\r
144;\r
145\r
146EFI_STATUS\r
147FvbGetLbaAddress (\r
148 IN UINTN Instance,\r
149 IN EFI_LBA Lba,\r
150 OUT UINTN *LbaAddress,\r
151 OUT UINTN *LbaLength,\r
152 OUT UINTN *NumOfBlocks,\r
153 IN ESAL_FWB_GLOBAL *Global,\r
154 IN BOOLEAN Virtual\r
155 )\r
156;\r
157\r
158//\r
159// Protocol APIs\r
160//\r
161EFI_STATUS\r
162EFIAPI\r
163FvbProtocolGetAttributes (\r
ccd55824 164 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
dfb8993c 165 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
804405e7 166 )\r
167;\r
168\r
169EFI_STATUS\r
170EFIAPI\r
171FvbProtocolSetAttributes (\r
ccd55824 172 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
dfb8993c 173 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
804405e7 174 )\r
175;\r
176\r
177EFI_STATUS\r
178EFIAPI\r
179FvbProtocolGetPhysicalAddress (\r
ccd55824 180 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
804405e7 181 OUT EFI_PHYSICAL_ADDRESS *Address\r
182 )\r
183;\r
184\r
185EFI_STATUS\r
186EFIAPI\r
187FvbProtocolGetBlockSize (\r
ccd55824 188 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
804405e7 189 IN EFI_LBA Lba,\r
190 OUT UINTN *BlockSize,\r
191 OUT UINTN *NumOfBlocks\r
192 )\r
193;\r
194\r
195EFI_STATUS\r
196EFIAPI\r
197FvbProtocolRead (\r
ccd55824 198 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
804405e7 199 IN EFI_LBA Lba,\r
200 IN UINTN Offset,\r
201 IN OUT UINTN *NumBytes,\r
202 IN UINT8 *Buffer\r
203 )\r
204;\r
205\r
206EFI_STATUS\r
207EFIAPI\r
208FvbProtocolWrite (\r
ccd55824 209 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
804405e7 210 IN EFI_LBA Lba,\r
211 IN UINTN Offset,\r
212 IN OUT UINTN *NumBytes,\r
213 IN UINT8 *Buffer\r
214 )\r
215;\r
216\r
217EFI_STATUS\r
218EFIAPI\r
219FvbProtocolEraseBlocks (\r
ccd55824 220 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
804405e7 221 ...\r
222 )\r
223;\r
224\r
804405e7 225#endif\r