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