efiprot.h revision 1.1.1.2 1 1.1 jakllsch /* $NetBSD: efiprot.h,v 1.1.1.2 2018/08/16 18:17:47 jmcneill Exp $ */
2 1.1 jakllsch
3 1.1 jakllsch #ifndef _EFI_PROT_H
4 1.1 jakllsch #define _EFI_PROT_H
5 1.1 jakllsch
6 1.1 jakllsch /*++
7 1.1 jakllsch
8 1.1 jakllsch Copyright (c) 1998 Intel Corporation
9 1.1 jakllsch
10 1.1 jakllsch Module Name:
11 1.1 jakllsch
12 1.1 jakllsch efiprot.h
13 1.1 jakllsch
14 1.1 jakllsch Abstract:
15 1.1 jakllsch
16 1.1 jakllsch EFI Protocols
17 1.1 jakllsch
18 1.1 jakllsch
19 1.1 jakllsch
20 1.1 jakllsch Revision History
21 1.1 jakllsch
22 1.1 jakllsch --*/
23 1.1 jakllsch
24 1.1 jakllsch //
25 1.1 jakllsch // FPSWA library protocol
26 1.1 jakllsch //
27 1.1.1.2 jmcneill #define EFI_FPSWA_PROTOCOL_GUID \
28 1.1 jakllsch { 0xc41b6531, 0x97b9, 0x11d3, {0x9a, 0x29, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
29 1.1.1.2 jmcneill #define FPSWA_PROTOCOL EFI_FPSWA_PROTOCOL_GUID
30 1.1 jakllsch
31 1.1 jakllsch //
32 1.1 jakllsch // Device Path protocol
33 1.1 jakllsch //
34 1.1 jakllsch
35 1.1.1.2 jmcneill #define EFI_DEVICE_PATH_PROTOCOL_GUID \
36 1.1 jakllsch { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
37 1.1.1.2 jmcneill #define DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL_GUID
38 1.1 jakllsch
39 1.1 jakllsch
40 1.1 jakllsch //
41 1.1 jakllsch // Block IO protocol
42 1.1 jakllsch //
43 1.1 jakllsch
44 1.1.1.2 jmcneill #define EFI_BLOCK_IO_PROTOCOL_GUID \
45 1.1 jakllsch { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
46 1.1.1.2 jmcneill #define BLOCK_IO_PROTOCOL EFI_BLOCK_IO_PROTOCOL_GUID
47 1.1 jakllsch
48 1.1.1.2 jmcneill #define EFI_BLOCK_IO_PROTOCOL_REVISION 0x00010000
49 1.1.1.2 jmcneill #define EFI_BLOCK_IO_PROTOCOL_REVISION2 0x00020001
50 1.1.1.2 jmcneill #define EFI_BLOCK_IO_PROTOCOL_REVISION3 ((2<<16) | 31)
51 1.1.1.2 jmcneill #define EFI_BLOCK_IO_INTERFACE_REVISION EFI_BLOCK_IO_PROTOCOL_REVISION
52 1.1.1.2 jmcneill #define EFI_BLOCK_IO_INTERFACE_REVISION2 EFI_BLOCK_IO_PROTOCOL_REVISION2
53 1.1.1.2 jmcneill #define EFI_BLOCK_IO_INTERFACE_REVISION3 EFI_BLOCK_IO_PROTOCOL_REVISION3
54 1.1.1.2 jmcneill
55 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_BLOCK_IO_PROTOCOL);
56 1.1 jakllsch
57 1.1 jakllsch typedef
58 1.1 jakllsch EFI_STATUS
59 1.1 jakllsch (EFIAPI *EFI_BLOCK_RESET) (
60 1.1.1.2 jmcneill IN struct _EFI_BLOCK_IO_PROTOCOL *This,
61 1.1.1.2 jmcneill IN BOOLEAN ExtendedVerification
62 1.1 jakllsch );
63 1.1 jakllsch
64 1.1 jakllsch typedef
65 1.1 jakllsch EFI_STATUS
66 1.1 jakllsch (EFIAPI *EFI_BLOCK_READ) (
67 1.1.1.2 jmcneill IN struct _EFI_BLOCK_IO_PROTOCOL *This,
68 1.1.1.2 jmcneill IN UINT32 MediaId,
69 1.1.1.2 jmcneill IN EFI_LBA LBA,
70 1.1.1.2 jmcneill IN UINTN BufferSize,
71 1.1.1.2 jmcneill OUT VOID *Buffer
72 1.1 jakllsch );
73 1.1 jakllsch
74 1.1 jakllsch
75 1.1 jakllsch typedef
76 1.1 jakllsch EFI_STATUS
77 1.1 jakllsch (EFIAPI *EFI_BLOCK_WRITE) (
78 1.1.1.2 jmcneill IN struct _EFI_BLOCK_IO_PROTOCOL *This,
79 1.1.1.2 jmcneill IN UINT32 MediaId,
80 1.1.1.2 jmcneill IN EFI_LBA LBA,
81 1.1.1.2 jmcneill IN UINTN BufferSize,
82 1.1.1.2 jmcneill IN VOID *Buffer
83 1.1 jakllsch );
84 1.1 jakllsch
85 1.1 jakllsch
86 1.1 jakllsch typedef
87 1.1 jakllsch EFI_STATUS
88 1.1 jakllsch (EFIAPI *EFI_BLOCK_FLUSH) (
89 1.1.1.2 jmcneill IN struct _EFI_BLOCK_IO_PROTOCOL *This
90 1.1 jakllsch );
91 1.1 jakllsch
92 1.1 jakllsch
93 1.1 jakllsch
94 1.1 jakllsch typedef struct {
95 1.1 jakllsch UINT32 MediaId;
96 1.1 jakllsch BOOLEAN RemovableMedia;
97 1.1 jakllsch BOOLEAN MediaPresent;
98 1.1 jakllsch
99 1.1 jakllsch BOOLEAN LogicalPartition;
100 1.1 jakllsch BOOLEAN ReadOnly;
101 1.1 jakllsch BOOLEAN WriteCaching;
102 1.1 jakllsch
103 1.1 jakllsch UINT32 BlockSize;
104 1.1 jakllsch UINT32 IoAlign;
105 1.1 jakllsch
106 1.1 jakllsch EFI_LBA LastBlock;
107 1.1 jakllsch
108 1.1 jakllsch /* revision 2 */
109 1.1 jakllsch EFI_LBA LowestAlignedLba;
110 1.1 jakllsch UINT32 LogicalBlocksPerPhysicalBlock;
111 1.1 jakllsch /* revision 3 */
112 1.1 jakllsch UINT32 OptimalTransferLengthGranularity;
113 1.1 jakllsch } EFI_BLOCK_IO_MEDIA;
114 1.1 jakllsch
115 1.1.1.2 jmcneill typedef struct _EFI_BLOCK_IO_PROTOCOL {
116 1.1 jakllsch UINT64 Revision;
117 1.1 jakllsch
118 1.1 jakllsch EFI_BLOCK_IO_MEDIA *Media;
119 1.1 jakllsch
120 1.1 jakllsch EFI_BLOCK_RESET Reset;
121 1.1 jakllsch EFI_BLOCK_READ ReadBlocks;
122 1.1 jakllsch EFI_BLOCK_WRITE WriteBlocks;
123 1.1 jakllsch EFI_BLOCK_FLUSH FlushBlocks;
124 1.1 jakllsch
125 1.1.1.2 jmcneill } EFI_BLOCK_IO_PROTOCOL;
126 1.1.1.2 jmcneill
127 1.1.1.2 jmcneill typedef struct _EFI_BLOCK_IO_PROTOCOL _EFI_BLOCK_IO;
128 1.1.1.2 jmcneill typedef EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO;
129 1.1.1.2 jmcneill
130 1.1.1.2 jmcneill #define EFI_BLOCK_IO2_PROTOCOL_GUID \
131 1.1.1.2 jmcneill { 0xa77b2472, 0xe282, 0x4e9f, {0xa2, 0x45, 0xc2, 0xc0, 0xe2, 0x7b, 0xbc, 0xc1} }
132 1.1.1.2 jmcneill
133 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_BLOCK_IO2_PROTOCOL);
134 1.1.1.2 jmcneill
135 1.1.1.2 jmcneill typedef struct {
136 1.1.1.2 jmcneill EFI_EVENT Event;
137 1.1.1.2 jmcneill EFI_STATUS TransactionStatus;
138 1.1.1.2 jmcneill } EFI_BLOCK_IO2_TOKEN;
139 1.1.1.2 jmcneill
140 1.1.1.2 jmcneill typedef
141 1.1.1.2 jmcneill EFI_STATUS
142 1.1.1.2 jmcneill (EFIAPI *EFI_BLOCK_RESET_EX) (
143 1.1.1.2 jmcneill IN struct _EFI_BLOCK_IO2_PROTOCOL *This,
144 1.1.1.2 jmcneill IN BOOLEAN ExtendedVerification
145 1.1.1.2 jmcneill );
146 1.1.1.2 jmcneill
147 1.1.1.2 jmcneill typedef
148 1.1.1.2 jmcneill EFI_STATUS
149 1.1.1.2 jmcneill (EFIAPI *EFI_BLOCK_READ_EX) (
150 1.1.1.2 jmcneill IN struct _EFI_BLOCK_IO2_PROTOCOL *This,
151 1.1.1.2 jmcneill IN UINT32 MediaId,
152 1.1.1.2 jmcneill IN EFI_LBA LBA,
153 1.1.1.2 jmcneill IN OUT EFI_BLOCK_IO2_TOKEN *Token,
154 1.1.1.2 jmcneill IN UINTN BufferSize,
155 1.1.1.2 jmcneill OUT VOID *Buffer
156 1.1.1.2 jmcneill );
157 1.1.1.2 jmcneill
158 1.1.1.2 jmcneill typedef
159 1.1.1.2 jmcneill EFI_STATUS
160 1.1.1.2 jmcneill (EFIAPI *EFI_BLOCK_WRITE_EX) (
161 1.1.1.2 jmcneill IN struct _EFI_BLOCK_IO2_PROTOCOL *This,
162 1.1.1.2 jmcneill IN UINT32 MediaId,
163 1.1.1.2 jmcneill IN EFI_LBA LBA,
164 1.1.1.2 jmcneill IN OUT EFI_BLOCK_IO2_TOKEN *Token,
165 1.1.1.2 jmcneill IN UINTN BufferSize,
166 1.1.1.2 jmcneill IN VOID *Buffer
167 1.1.1.2 jmcneill );
168 1.1 jakllsch
169 1.1.1.2 jmcneill typedef
170 1.1.1.2 jmcneill EFI_STATUS
171 1.1.1.2 jmcneill (EFIAPI *EFI_BLOCK_FLUSH_EX) (
172 1.1.1.2 jmcneill IN struct _EFI_BLOCK_IO2_PROTOCOL *This,
173 1.1.1.2 jmcneill IN OUT EFI_BLOCK_IO2_TOKEN *Token
174 1.1.1.2 jmcneill );
175 1.1 jakllsch
176 1.1.1.2 jmcneill typedef struct _EFI_BLOCK_IO2_PROTOCOL {
177 1.1.1.2 jmcneill EFI_BLOCK_IO_MEDIA *Media;
178 1.1.1.2 jmcneill EFI_BLOCK_RESET_EX Reset;
179 1.1.1.2 jmcneill EFI_BLOCK_READ_EX ReadBlocksEx;
180 1.1.1.2 jmcneill EFI_BLOCK_WRITE_EX WriteBlocksEx;
181 1.1.1.2 jmcneill EFI_BLOCK_FLUSH_EX FlushBlocksEx;
182 1.1.1.2 jmcneill } EFI_BLOCK_IO2_PROTOCOL;
183 1.1 jakllsch
184 1.1 jakllsch //
185 1.1 jakllsch // Disk Block IO protocol
186 1.1 jakllsch //
187 1.1 jakllsch
188 1.1.1.2 jmcneill #define EFI_DISK_IO_PROTOCOL_GUID \
189 1.1 jakllsch { 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
190 1.1.1.2 jmcneill #define DISK_IO_PROTOCOL EFI_DISK_IO_PROTOCOL_GUID
191 1.1.1.2 jmcneill
192 1.1.1.2 jmcneill #define EFI_DISK_IO_PROTOCOL_REVISION 0x00010000
193 1.1.1.2 jmcneill #define EFI_DISK_IO_INTERFACE_REVISION EFI_DISK_IO_PROTOCOL_REVISION
194 1.1 jakllsch
195 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DISK_IO_PROTOCOL);
196 1.1 jakllsch
197 1.1 jakllsch typedef
198 1.1 jakllsch EFI_STATUS
199 1.1 jakllsch (EFIAPI *EFI_DISK_READ) (
200 1.1.1.2 jmcneill IN struct _EFI_DISK_IO_PROTOCOL *This,
201 1.1.1.2 jmcneill IN UINT32 MediaId,
202 1.1.1.2 jmcneill IN UINT64 Offset,
203 1.1.1.2 jmcneill IN UINTN BufferSize,
204 1.1.1.2 jmcneill OUT VOID *Buffer
205 1.1 jakllsch );
206 1.1 jakllsch
207 1.1 jakllsch
208 1.1 jakllsch typedef
209 1.1 jakllsch EFI_STATUS
210 1.1 jakllsch (EFIAPI *EFI_DISK_WRITE) (
211 1.1.1.2 jmcneill IN struct _EFI_DISK_IO_PROTOCOL *This,
212 1.1.1.2 jmcneill IN UINT32 MediaId,
213 1.1.1.2 jmcneill IN UINT64 Offset,
214 1.1.1.2 jmcneill IN UINTN BufferSize,
215 1.1.1.2 jmcneill IN VOID *Buffer
216 1.1 jakllsch );
217 1.1 jakllsch
218 1.1 jakllsch
219 1.1.1.2 jmcneill typedef struct _EFI_DISK_IO_PROTOCOL {
220 1.1 jakllsch UINT64 Revision;
221 1.1 jakllsch EFI_DISK_READ ReadDisk;
222 1.1 jakllsch EFI_DISK_WRITE WriteDisk;
223 1.1.1.2 jmcneill } EFI_DISK_IO_PROTOCOL;
224 1.1.1.2 jmcneill
225 1.1.1.2 jmcneill typedef struct _EFI_DISK_IO_PROTOCOL _EFI_DISK_IO;
226 1.1.1.2 jmcneill typedef EFI_DISK_IO_PROTOCOL EFI_DISK_IO;
227 1.1.1.2 jmcneill
228 1.1 jakllsch
229 1.1.1.2 jmcneill #define EFI_DISK_IO2_PROTOCOL_GUID \
230 1.1.1.2 jmcneill { 0x151c8eae, 0x7f2c, 0x472c, {0x9e, 0x54, 0x98, 0x28, 0x19, 0x4f, 0x6a, 0x88} }
231 1.1.1.2 jmcneill
232 1.1.1.2 jmcneill #define EFI_DISK_IO2_PROTOCOL_REVISION 0x00020000
233 1.1.1.2 jmcneill
234 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DISK_IO2_PROTOCOL);
235 1.1.1.2 jmcneill
236 1.1.1.2 jmcneill typedef struct {
237 1.1.1.2 jmcneill EFI_EVENT Event;
238 1.1.1.2 jmcneill EFI_STATUS TransactionStatus;
239 1.1.1.2 jmcneill } EFI_DISK_IO2_TOKEN;
240 1.1.1.2 jmcneill
241 1.1.1.2 jmcneill typedef
242 1.1.1.2 jmcneill EFI_STATUS
243 1.1.1.2 jmcneill (EFIAPI *EFI_DISK_CANCEL_EX) (
244 1.1.1.2 jmcneill IN struct _EFI_DISK_IO2_PROTOCOL *This
245 1.1.1.2 jmcneill );
246 1.1.1.2 jmcneill
247 1.1.1.2 jmcneill typedef
248 1.1.1.2 jmcneill EFI_STATUS
249 1.1.1.2 jmcneill (EFIAPI *EFI_DISK_READ_EX) (
250 1.1.1.2 jmcneill IN struct _EFI_DISK_IO2_PROTOCOL *This,
251 1.1.1.2 jmcneill IN UINT32 MediaId,
252 1.1.1.2 jmcneill IN UINT64 Offset,
253 1.1.1.2 jmcneill IN OUT EFI_DISK_IO2_TOKEN *Token,
254 1.1.1.2 jmcneill IN UINTN BufferSize,
255 1.1.1.2 jmcneill OUT VOID *Buffer
256 1.1.1.2 jmcneill );
257 1.1.1.2 jmcneill
258 1.1.1.2 jmcneill typedef
259 1.1.1.2 jmcneill EFI_STATUS
260 1.1.1.2 jmcneill (EFIAPI *EFI_DISK_WRITE_EX) (
261 1.1.1.2 jmcneill IN struct _EFI_DISK_IO2_PROTOCOL *This,
262 1.1.1.2 jmcneill IN UINT32 MediaId,
263 1.1.1.2 jmcneill IN UINT64 Offset,
264 1.1.1.2 jmcneill IN OUT EFI_DISK_IO2_TOKEN *Token,
265 1.1.1.2 jmcneill IN UINTN BufferSize,
266 1.1.1.2 jmcneill IN VOID *Buffer
267 1.1.1.2 jmcneill );
268 1.1.1.2 jmcneill
269 1.1.1.2 jmcneill typedef
270 1.1.1.2 jmcneill EFI_STATUS
271 1.1.1.2 jmcneill (EFIAPI *EFI_DISK_FLUSH_EX) (
272 1.1.1.2 jmcneill IN struct _EFI_DISK_IO2_PROTOCOL *This,
273 1.1.1.2 jmcneill IN OUT EFI_DISK_IO2_TOKEN *Token
274 1.1.1.2 jmcneill );
275 1.1.1.2 jmcneill
276 1.1.1.2 jmcneill typedef struct _EFI_DISK_IO2_PROTOCOL {
277 1.1.1.2 jmcneill UINT64 Revision;
278 1.1.1.2 jmcneill EFI_DISK_CANCEL_EX Cancel;
279 1.1.1.2 jmcneill EFI_DISK_READ_EX ReadDiskEx;
280 1.1.1.2 jmcneill EFI_DISK_WRITE_EX WriteDiskEx;
281 1.1.1.2 jmcneill EFI_DISK_FLUSH_EX FlushDiskEx;
282 1.1.1.2 jmcneill } EFI_DISK_IO2_PROTOCOL;
283 1.1 jakllsch
284 1.1 jakllsch //
285 1.1 jakllsch // Simple file system protocol
286 1.1 jakllsch //
287 1.1 jakllsch
288 1.1.1.2 jmcneill #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
289 1.1 jakllsch { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
290 1.1.1.2 jmcneill #define SIMPLE_FILE_SYSTEM_PROTOCOL EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID
291 1.1 jakllsch
292 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_SIMPLE_FILE_SYSTEM_PROTOCOL);
293 1.1 jakllsch INTERFACE_DECL(_EFI_FILE_HANDLE);
294 1.1 jakllsch
295 1.1 jakllsch typedef
296 1.1 jakllsch EFI_STATUS
297 1.1 jakllsch (EFIAPI *EFI_VOLUME_OPEN) (
298 1.1.1.2 jmcneill IN struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,
299 1.1.1.2 jmcneill OUT struct _EFI_FILE_HANDLE **Root
300 1.1 jakllsch );
301 1.1 jakllsch
302 1.1.1.2 jmcneill #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION 0x00010000
303 1.1.1.2 jmcneill #define EFI_FILE_IO_INTERFACE_REVISION EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION
304 1.1 jakllsch
305 1.1.1.2 jmcneill typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL {
306 1.1 jakllsch UINT64 Revision;
307 1.1 jakllsch EFI_VOLUME_OPEN OpenVolume;
308 1.1.1.2 jmcneill } EFI_SIMPLE_FILE_SYSTEM_PROTOCOL;
309 1.1.1.2 jmcneill
310 1.1.1.2 jmcneill typedef struct _EFI_SIMPLE_FILE_SYSTEM_PROTOCOL _EFI_FILE_IO_INTERFACE;
311 1.1.1.2 jmcneill typedef EFI_SIMPLE_FILE_SYSTEM_PROTOCOL EFI_FILE_IO_INTERFACE;
312 1.1 jakllsch
313 1.1 jakllsch //
314 1.1 jakllsch //
315 1.1 jakllsch //
316 1.1 jakllsch
317 1.1 jakllsch typedef
318 1.1 jakllsch EFI_STATUS
319 1.1 jakllsch (EFIAPI *EFI_FILE_OPEN) (
320 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File,
321 1.1 jakllsch OUT struct _EFI_FILE_HANDLE **NewHandle,
322 1.1 jakllsch IN CHAR16 *FileName,
323 1.1 jakllsch IN UINT64 OpenMode,
324 1.1 jakllsch IN UINT64 Attributes
325 1.1 jakllsch );
326 1.1 jakllsch
327 1.1 jakllsch // Open modes
328 1.1 jakllsch #define EFI_FILE_MODE_READ 0x0000000000000001
329 1.1 jakllsch #define EFI_FILE_MODE_WRITE 0x0000000000000002
330 1.1 jakllsch #define EFI_FILE_MODE_CREATE 0x8000000000000000
331 1.1 jakllsch
332 1.1 jakllsch // File attributes
333 1.1 jakllsch #define EFI_FILE_READ_ONLY 0x0000000000000001
334 1.1 jakllsch #define EFI_FILE_HIDDEN 0x0000000000000002
335 1.1 jakllsch #define EFI_FILE_SYSTEM 0x0000000000000004
336 1.1 jakllsch #define EFI_FILE_RESERVIED 0x0000000000000008
337 1.1 jakllsch #define EFI_FILE_DIRECTORY 0x0000000000000010
338 1.1 jakllsch #define EFI_FILE_ARCHIVE 0x0000000000000020
339 1.1 jakllsch #define EFI_FILE_VALID_ATTR 0x0000000000000037
340 1.1 jakllsch
341 1.1 jakllsch typedef
342 1.1 jakllsch EFI_STATUS
343 1.1 jakllsch (EFIAPI *EFI_FILE_CLOSE) (
344 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File
345 1.1 jakllsch );
346 1.1 jakllsch
347 1.1 jakllsch typedef
348 1.1 jakllsch EFI_STATUS
349 1.1 jakllsch (EFIAPI *EFI_FILE_DELETE) (
350 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File
351 1.1 jakllsch );
352 1.1 jakllsch
353 1.1 jakllsch typedef
354 1.1 jakllsch EFI_STATUS
355 1.1 jakllsch (EFIAPI *EFI_FILE_READ) (
356 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File,
357 1.1 jakllsch IN OUT UINTN *BufferSize,
358 1.1 jakllsch OUT VOID *Buffer
359 1.1 jakllsch );
360 1.1 jakllsch
361 1.1 jakllsch typedef
362 1.1 jakllsch EFI_STATUS
363 1.1 jakllsch (EFIAPI *EFI_FILE_WRITE) (
364 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File,
365 1.1 jakllsch IN OUT UINTN *BufferSize,
366 1.1 jakllsch IN VOID *Buffer
367 1.1 jakllsch );
368 1.1 jakllsch
369 1.1 jakllsch typedef
370 1.1 jakllsch EFI_STATUS
371 1.1 jakllsch (EFIAPI *EFI_FILE_SET_POSITION) (
372 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File,
373 1.1 jakllsch IN UINT64 Position
374 1.1 jakllsch );
375 1.1 jakllsch
376 1.1 jakllsch typedef
377 1.1 jakllsch EFI_STATUS
378 1.1 jakllsch (EFIAPI *EFI_FILE_GET_POSITION) (
379 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File,
380 1.1 jakllsch OUT UINT64 *Position
381 1.1 jakllsch );
382 1.1 jakllsch
383 1.1 jakllsch typedef
384 1.1 jakllsch EFI_STATUS
385 1.1 jakllsch (EFIAPI *EFI_FILE_GET_INFO) (
386 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File,
387 1.1 jakllsch IN EFI_GUID *InformationType,
388 1.1 jakllsch IN OUT UINTN *BufferSize,
389 1.1 jakllsch OUT VOID *Buffer
390 1.1 jakllsch );
391 1.1 jakllsch
392 1.1 jakllsch typedef
393 1.1 jakllsch EFI_STATUS
394 1.1 jakllsch (EFIAPI *EFI_FILE_SET_INFO) (
395 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File,
396 1.1 jakllsch IN EFI_GUID *InformationType,
397 1.1 jakllsch IN UINTN BufferSize,
398 1.1 jakllsch IN VOID *Buffer
399 1.1 jakllsch );
400 1.1 jakllsch
401 1.1 jakllsch typedef
402 1.1 jakllsch EFI_STATUS
403 1.1 jakllsch (EFIAPI *EFI_FILE_FLUSH) (
404 1.1 jakllsch IN struct _EFI_FILE_HANDLE *File
405 1.1 jakllsch );
406 1.1 jakllsch
407 1.1.1.2 jmcneill typedef struct {
408 1.1.1.2 jmcneill EFI_EVENT Event;
409 1.1.1.2 jmcneill EFI_STATUS Status;
410 1.1.1.2 jmcneill UINTN BufferSize;
411 1.1.1.2 jmcneill VOID *Buffer;
412 1.1.1.2 jmcneill } EFI_FILE_IO_TOKEN;
413 1.1.1.2 jmcneill
414 1.1.1.2 jmcneill typedef
415 1.1.1.2 jmcneill EFI_STATUS
416 1.1.1.2 jmcneill (EFIAPI *EFI_FILE_OPEN_EX)(
417 1.1.1.2 jmcneill IN struct _EFI_FILE_HANDLE *File,
418 1.1.1.2 jmcneill OUT struct _EFI_FILE_HANDLE **NewHandle,
419 1.1.1.2 jmcneill IN CHAR16 *FileName,
420 1.1.1.2 jmcneill IN UINT64 OpenMode,
421 1.1.1.2 jmcneill IN UINT64 Attributes,
422 1.1.1.2 jmcneill IN OUT EFI_FILE_IO_TOKEN *Token
423 1.1.1.2 jmcneill );
424 1.1.1.2 jmcneill
425 1.1.1.2 jmcneill typedef
426 1.1.1.2 jmcneill EFI_STATUS
427 1.1.1.2 jmcneill (EFIAPI *EFI_FILE_READ_EX) (
428 1.1.1.2 jmcneill IN struct _EFI_FILE_HANDLE *File,
429 1.1.1.2 jmcneill IN OUT EFI_FILE_IO_TOKEN *Token
430 1.1.1.2 jmcneill );
431 1.1.1.2 jmcneill
432 1.1.1.2 jmcneill typedef
433 1.1.1.2 jmcneill EFI_STATUS
434 1.1.1.2 jmcneill (EFIAPI *EFI_FILE_WRITE_EX) (
435 1.1.1.2 jmcneill IN struct _EFI_FILE_HANDLE *File,
436 1.1.1.2 jmcneill IN OUT EFI_FILE_IO_TOKEN *Token
437 1.1.1.2 jmcneill );
438 1.1.1.2 jmcneill
439 1.1.1.2 jmcneill typedef
440 1.1.1.2 jmcneill EFI_STATUS
441 1.1.1.2 jmcneill (EFIAPI *EFI_FILE_FLUSH_EX) (
442 1.1.1.2 jmcneill IN struct _EFI_FILE_HANDLE *File,
443 1.1.1.2 jmcneill IN OUT EFI_FILE_IO_TOKEN *Token
444 1.1.1.2 jmcneill );
445 1.1 jakllsch
446 1.1.1.2 jmcneill #define EFI_FILE_PROTOCOL_REVISION 0x00010000
447 1.1.1.2 jmcneill #define EFI_FILE_PROTOCOL_REVISION2 0x00020000
448 1.1.1.2 jmcneill #define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
449 1.1.1.2 jmcneill #define EFI_FILE_HANDLE_REVISION EFI_FILE_PROTOCOL_REVISION
450 1.1 jakllsch
451 1.1 jakllsch typedef struct _EFI_FILE_HANDLE {
452 1.1 jakllsch UINT64 Revision;
453 1.1 jakllsch EFI_FILE_OPEN Open;
454 1.1 jakllsch EFI_FILE_CLOSE Close;
455 1.1 jakllsch EFI_FILE_DELETE Delete;
456 1.1 jakllsch EFI_FILE_READ Read;
457 1.1 jakllsch EFI_FILE_WRITE Write;
458 1.1 jakllsch EFI_FILE_GET_POSITION GetPosition;
459 1.1 jakllsch EFI_FILE_SET_POSITION SetPosition;
460 1.1 jakllsch EFI_FILE_GET_INFO GetInfo;
461 1.1 jakllsch EFI_FILE_SET_INFO SetInfo;
462 1.1 jakllsch EFI_FILE_FLUSH Flush;
463 1.1.1.2 jmcneill EFI_FILE_OPEN_EX OpenEx;
464 1.1.1.2 jmcneill EFI_FILE_READ_EX ReadEx;
465 1.1.1.2 jmcneill EFI_FILE_WRITE_EX WriteEx;
466 1.1.1.2 jmcneill EFI_FILE_FLUSH_EX FlushEx;
467 1.1.1.2 jmcneill } EFI_FILE_PROTOCOL, *EFI_FILE_HANDLE;
468 1.1.1.2 jmcneill
469 1.1.1.2 jmcneill typedef EFI_FILE_PROTOCOL EFI_FILE;
470 1.1 jakllsch
471 1.1 jakllsch
472 1.1 jakllsch //
473 1.1 jakllsch // File information types
474 1.1 jakllsch //
475 1.1 jakllsch
476 1.1 jakllsch #define EFI_FILE_INFO_ID \
477 1.1 jakllsch { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
478 1.1 jakllsch
479 1.1 jakllsch typedef struct {
480 1.1 jakllsch UINT64 Size;
481 1.1 jakllsch UINT64 FileSize;
482 1.1 jakllsch UINT64 PhysicalSize;
483 1.1 jakllsch EFI_TIME CreateTime;
484 1.1 jakllsch EFI_TIME LastAccessTime;
485 1.1 jakllsch EFI_TIME ModificationTime;
486 1.1 jakllsch UINT64 Attribute;
487 1.1 jakllsch CHAR16 FileName[1];
488 1.1 jakllsch } EFI_FILE_INFO;
489 1.1 jakllsch
490 1.1 jakllsch //
491 1.1 jakllsch // The FileName field of the EFI_FILE_INFO data structure is variable length.
492 1.1 jakllsch // Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
493 1.1.1.2 jmcneill // be the size of the data structure without the FileName field. The following macro
494 1.1 jakllsch // computes this size correctly no matter how big the FileName array is declared.
495 1.1.1.2 jmcneill // This is required to make the EFI_FILE_INFO data structure ANSI compilant.
496 1.1 jakllsch //
497 1.1 jakllsch
498 1.1 jakllsch #define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
499 1.1 jakllsch
500 1.1 jakllsch #define EFI_FILE_SYSTEM_INFO_ID \
501 1.1 jakllsch { 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
502 1.1 jakllsch
503 1.1 jakllsch typedef struct {
504 1.1 jakllsch UINT64 Size;
505 1.1 jakllsch BOOLEAN ReadOnly;
506 1.1 jakllsch UINT64 VolumeSize;
507 1.1 jakllsch UINT64 FreeSpace;
508 1.1 jakllsch UINT32 BlockSize;
509 1.1 jakllsch CHAR16 VolumeLabel[1];
510 1.1 jakllsch } EFI_FILE_SYSTEM_INFO;
511 1.1 jakllsch
512 1.1 jakllsch //
513 1.1 jakllsch // The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
514 1.1 jakllsch // Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
515 1.1.1.2 jmcneill // to be the size of the data structure without the VolumeLable field. The following macro
516 1.1 jakllsch // computes this size correctly no matter how big the VolumeLable array is declared.
517 1.1.1.2 jmcneill // This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
518 1.1 jakllsch //
519 1.1 jakllsch
520 1.1 jakllsch #define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
521 1.1 jakllsch
522 1.1 jakllsch #define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID \
523 1.1 jakllsch { 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
524 1.1 jakllsch
525 1.1 jakllsch typedef struct {
526 1.1 jakllsch CHAR16 VolumeLabel[1];
527 1.1 jakllsch } EFI_FILE_SYSTEM_VOLUME_LABEL_INFO;
528 1.1 jakllsch
529 1.1 jakllsch #define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
530 1.1 jakllsch
531 1.1 jakllsch //
532 1.1 jakllsch // Load file protocol
533 1.1 jakllsch //
534 1.1 jakllsch
535 1.1 jakllsch
536 1.1.1.2 jmcneill #define EFI_LOAD_FILE_PROTOCOL_GUID \
537 1.1 jakllsch { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
538 1.1.1.2 jmcneill #define LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL_GUID
539 1.1 jakllsch
540 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_LOAD_FILE_PROTOCOL);
541 1.1 jakllsch
542 1.1 jakllsch typedef
543 1.1 jakllsch EFI_STATUS
544 1.1 jakllsch (EFIAPI *EFI_LOAD_FILE) (
545 1.1.1.2 jmcneill IN struct _EFI_LOAD_FILE_PROTOCOL *This,
546 1.1 jakllsch IN EFI_DEVICE_PATH *FilePath,
547 1.1 jakllsch IN BOOLEAN BootPolicy,
548 1.1 jakllsch IN OUT UINTN *BufferSize,
549 1.1 jakllsch IN VOID *Buffer OPTIONAL
550 1.1 jakllsch );
551 1.1 jakllsch
552 1.1.1.2 jmcneill typedef struct _EFI_LOAD_FILE_PROTOCOL {
553 1.1 jakllsch EFI_LOAD_FILE LoadFile;
554 1.1.1.2 jmcneill } EFI_LOAD_FILE_PROTOCOL;
555 1.1 jakllsch
556 1.1.1.2 jmcneill typedef struct _EFI_LOAD_FILE_PROTOCOL _EFI_LOAD_FILE_INTERFACE;
557 1.1.1.2 jmcneill typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_INTERFACE;
558 1.1 jakllsch
559 1.1 jakllsch //
560 1.1 jakllsch // Device IO protocol
561 1.1 jakllsch //
562 1.1 jakllsch
563 1.1.1.2 jmcneill #define EFI_DEVICE_IO_PROTOCOL_GUID \
564 1.1 jakllsch { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
565 1.1.1.2 jmcneill #define DEVICE_IO_PROTOCOL EFI_DEVICE_IO_PROTOCOL_GUID
566 1.1 jakllsch
567 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DEVICE_IO_PROTOCOL);
568 1.1 jakllsch
569 1.1 jakllsch typedef enum {
570 1.1 jakllsch IO_UINT8,
571 1.1 jakllsch IO_UINT16,
572 1.1 jakllsch IO_UINT32,
573 1.1 jakllsch IO_UINT64,
574 1.1 jakllsch //
575 1.1 jakllsch // Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
576 1.1 jakllsch //
577 1.1 jakllsch MMIO_COPY_UINT8,
578 1.1 jakllsch MMIO_COPY_UINT16,
579 1.1 jakllsch MMIO_COPY_UINT32,
580 1.1 jakllsch MMIO_COPY_UINT64
581 1.1 jakllsch } EFI_IO_WIDTH;
582 1.1 jakllsch
583 1.1 jakllsch #define EFI_PCI_ADDRESS(_bus,_dev,_func) \
584 1.1 jakllsch ( (UINT64) ( (((UINTN)_bus) << 24) + (((UINTN)_dev) << 16) + (((UINTN)_func) << 8) ) )
585 1.1 jakllsch
586 1.1 jakllsch
587 1.1 jakllsch typedef
588 1.1 jakllsch EFI_STATUS
589 1.1 jakllsch (EFIAPI *EFI_DEVICE_IO) (
590 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
591 1.1 jakllsch IN EFI_IO_WIDTH Width,
592 1.1 jakllsch IN UINT64 Address,
593 1.1 jakllsch IN UINTN Count,
594 1.1 jakllsch IN OUT VOID *Buffer
595 1.1 jakllsch );
596 1.1 jakllsch
597 1.1 jakllsch typedef struct {
598 1.1 jakllsch EFI_DEVICE_IO Read;
599 1.1 jakllsch EFI_DEVICE_IO Write;
600 1.1 jakllsch } EFI_IO_ACCESS;
601 1.1 jakllsch
602 1.1.1.2 jmcneill typedef
603 1.1 jakllsch EFI_STATUS
604 1.1 jakllsch (EFIAPI *EFI_PCI_DEVICE_PATH) (
605 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
606 1.1 jakllsch IN UINT64 Address,
607 1.1 jakllsch IN OUT EFI_DEVICE_PATH **PciDevicePath
608 1.1 jakllsch );
609 1.1 jakllsch
610 1.1 jakllsch typedef enum {
611 1.1 jakllsch EfiBusMasterRead,
612 1.1 jakllsch EfiBusMasterWrite,
613 1.1 jakllsch EfiBusMasterCommonBuffer
614 1.1 jakllsch } EFI_IO_OPERATION_TYPE;
615 1.1 jakllsch
616 1.1 jakllsch typedef
617 1.1 jakllsch EFI_STATUS
618 1.1 jakllsch (EFIAPI *EFI_IO_MAP) (
619 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
620 1.1 jakllsch IN EFI_IO_OPERATION_TYPE Operation,
621 1.1 jakllsch IN EFI_PHYSICAL_ADDRESS *HostAddress,
622 1.1 jakllsch IN OUT UINTN *NumberOfBytes,
623 1.1 jakllsch OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
624 1.1 jakllsch OUT VOID **Mapping
625 1.1 jakllsch );
626 1.1 jakllsch
627 1.1 jakllsch typedef
628 1.1 jakllsch EFI_STATUS
629 1.1 jakllsch (EFIAPI *EFI_IO_UNMAP) (
630 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
631 1.1 jakllsch IN VOID *Mapping
632 1.1 jakllsch );
633 1.1 jakllsch
634 1.1 jakllsch typedef
635 1.1 jakllsch EFI_STATUS
636 1.1 jakllsch (EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
637 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
638 1.1 jakllsch IN EFI_ALLOCATE_TYPE Type,
639 1.1 jakllsch IN EFI_MEMORY_TYPE MemoryType,
640 1.1 jakllsch IN UINTN Pages,
641 1.1 jakllsch IN OUT EFI_PHYSICAL_ADDRESS *HostAddress
642 1.1 jakllsch );
643 1.1 jakllsch
644 1.1 jakllsch typedef
645 1.1 jakllsch EFI_STATUS
646 1.1 jakllsch (EFIAPI *EFI_IO_FLUSH) (
647 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This
648 1.1 jakllsch );
649 1.1 jakllsch
650 1.1 jakllsch typedef
651 1.1 jakllsch EFI_STATUS
652 1.1 jakllsch (EFIAPI *EFI_IO_FREE_BUFFER) (
653 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
654 1.1 jakllsch IN UINTN Pages,
655 1.1 jakllsch IN EFI_PHYSICAL_ADDRESS HostAddress
656 1.1 jakllsch );
657 1.1 jakllsch
658 1.1.1.2 jmcneill typedef struct _EFI_DEVICE_IO_PROTOCOL {
659 1.1 jakllsch EFI_IO_ACCESS Mem;
660 1.1 jakllsch EFI_IO_ACCESS Io;
661 1.1 jakllsch EFI_IO_ACCESS Pci;
662 1.1 jakllsch EFI_IO_MAP Map;
663 1.1 jakllsch EFI_PCI_DEVICE_PATH PciDevicePath;
664 1.1 jakllsch EFI_IO_UNMAP Unmap;
665 1.1 jakllsch EFI_IO_ALLOCATE_BUFFER AllocateBuffer;
666 1.1 jakllsch EFI_IO_FLUSH Flush;
667 1.1 jakllsch EFI_IO_FREE_BUFFER FreeBuffer;
668 1.1.1.2 jmcneill } EFI_DEVICE_IO_PROTOCOL;
669 1.1 jakllsch
670 1.1.1.2 jmcneill typedef struct _EFI_DEVICE_IO_PROTOCOL _EFI_DEVICE_IO_INTERFACE;
671 1.1.1.2 jmcneill typedef EFI_DEVICE_IO_PROTOCOL EFI_DEVICE_IO_INTERFACE;
672 1.1 jakllsch
673 1.1 jakllsch //
674 1.1 jakllsch // Unicode Collation protocol
675 1.1 jakllsch //
676 1.1 jakllsch
677 1.1.1.2 jmcneill #define EFI_UNICODE_COLLATION_PROTOCOL_GUID \
678 1.1 jakllsch { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
679 1.1.1.2 jmcneill #define UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL_GUID
680 1.1 jakllsch
681 1.1.1.2 jmcneill #define EFI_UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff)
682 1.1.1.2 jmcneill #define UNICODE_BYTE_ORDER_MARK EFI_UNICODE_BYTE_ORDER_MARK
683 1.1 jakllsch
684 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_UNICODE_COLLATION_PROTOCOL);
685 1.1 jakllsch
686 1.1 jakllsch typedef
687 1.1 jakllsch INTN
688 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRICOLL) (
689 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
690 1.1 jakllsch IN CHAR16 *s1,
691 1.1 jakllsch IN CHAR16 *s2
692 1.1 jakllsch );
693 1.1 jakllsch
694 1.1 jakllsch typedef
695 1.1 jakllsch BOOLEAN
696 1.1 jakllsch (EFIAPI *EFI_UNICODE_METAIMATCH) (
697 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
698 1.1 jakllsch IN CHAR16 *String,
699 1.1 jakllsch IN CHAR16 *Pattern
700 1.1 jakllsch );
701 1.1 jakllsch
702 1.1 jakllsch typedef
703 1.1 jakllsch VOID
704 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRLWR) (
705 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
706 1.1 jakllsch IN OUT CHAR16 *Str
707 1.1 jakllsch );
708 1.1 jakllsch
709 1.1 jakllsch typedef
710 1.1 jakllsch VOID
711 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRUPR) (
712 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
713 1.1 jakllsch IN OUT CHAR16 *Str
714 1.1 jakllsch );
715 1.1 jakllsch
716 1.1 jakllsch typedef
717 1.1 jakllsch VOID
718 1.1 jakllsch (EFIAPI *EFI_UNICODE_FATTOSTR) (
719 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
720 1.1 jakllsch IN UINTN FatSize,
721 1.1 jakllsch IN CHAR8 *Fat,
722 1.1 jakllsch OUT CHAR16 *String
723 1.1 jakllsch );
724 1.1 jakllsch
725 1.1 jakllsch typedef
726 1.1 jakllsch BOOLEAN
727 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRTOFAT) (
728 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
729 1.1 jakllsch IN CHAR16 *String,
730 1.1 jakllsch IN UINTN FatSize,
731 1.1 jakllsch OUT CHAR8 *Fat
732 1.1 jakllsch );
733 1.1 jakllsch
734 1.1.1.2 jmcneill //
735 1.1.1.2 jmcneill // Hash Protocol
736 1.1.1.2 jmcneill //
737 1.1.1.2 jmcneill #define EFI_HASH_PROTOCOL_GUID \
738 1.1.1.2 jmcneill { 0xC5184932, 0xDBA5, 0x46DB, { 0xA5, 0xBA, 0xCC, 0x0B, 0xDA, 0x9C, 0x14, 0x35 } }
739 1.1.1.2 jmcneill #define HASH_PROTOCOL EFI_HASH_PROTOCOL_GUID
740 1.1.1.2 jmcneill
741 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1_GUID \
742 1.1.1.2 jmcneill { 0x2AE9D80F, 0x3FB2, 0x4095, { 0xB7, 0xB1, 0xE9, 0x31, 0x57, 0xB9, 0x46, 0xB6 } } // Deprecated
743 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1 EFI_HASH_ALGORITHM_SHA1_GUID
744 1.1.1.2 jmcneill
745 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA224_GUID \
746 1.1.1.2 jmcneill { 0x8DF01A06, 0x9BD5, 0x4BF7, { 0xB0, 0x21, 0xDB, 0x4F, 0xD9, 0xCC, 0xF4, 0x5B } } // Deprecated
747 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA224 EFI_HASH_ALGORITHM_SHA224_GUID
748 1.1.1.2 jmcneill
749 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256_GUID \
750 1.1.1.2 jmcneill { 0x51AA59DE, 0xFDF2, 0x4EA3, { 0xBC, 0x63, 0x87, 0x5F, 0xB7, 0x84, 0x2E, 0xE9 } } // Deprecated
751 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256 EFI_HASH_ALGORITHM_SHA256_GUID
752 1.1.1.2 jmcneill
753 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA384_GUID \
754 1.1.1.2 jmcneill { 0xEFA96432, 0xDE33, 0x4DD2, { 0xAE, 0xE6, 0x32, 0x8C, 0x33, 0xDF, 0x77, 0x7A } } // Deprecated
755 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA384 EFI_HASH_ALGORITHM_SHA384_GUID
756 1.1.1.2 jmcneill
757 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA512_GUID \
758 1.1.1.2 jmcneill { 0xCAA4381E, 0x750C, 0x4770, { 0xB8, 0x70, 0x7A, 0x23, 0xB4, 0xE4, 0x21, 0x30 } } // Deprecated
759 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA512 EFI_HASH_ALGORITHM_SHA512_GUID
760 1.1 jakllsch
761 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_MD5_GUID \
762 1.1.1.2 jmcneill { 0x0AF7C79C, 0x65B5, 0x4319, { 0xB0, 0xAE, 0x44, 0xEC, 0x48, 0x4E, 0x4A, 0xD7 } } // Deprecated
763 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_MD5 EFI_HASH_ALGORITHM_MD5_GUID
764 1.1.1.2 jmcneill
765 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID \
766 1.1.1.2 jmcneill { 0x24C5DC2F, 0x53E2, 0x40CA, { 0x9E, 0xD6, 0xA5, 0xD9, 0xA4, 0x9F, 0x46, 0x3B } }
767 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1_NOPAD EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID
768 1.1.1.2 jmcneill
769 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID \
770 1.1.1.2 jmcneill { 0x8628752A, 0x6CB7, 0x4814, { 0x96, 0xFC, 0x24, 0xA8, 0x15, 0xAC, 0x22, 0x26 } }
771 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256_NOPAD EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID
772 1.1.1.2 jmcneill
773 1.1.1.2 jmcneill
774 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_HASH_PROTOCOL);
775 1.1.1.2 jmcneill
776 1.1.1.2 jmcneill typedef UINT8 EFI_MD5_HASH[16];
777 1.1.1.2 jmcneill typedef UINT8 EFI_SHA1_HASH[20];
778 1.1.1.2 jmcneill typedef UINT8 EFI_SHA224_HASH[28];
779 1.1.1.2 jmcneill typedef UINT8 EFI_SHA256_HASH[32];
780 1.1.1.2 jmcneill typedef UINT8 EFI_SHA384_HASH[48];
781 1.1.1.2 jmcneill typedef UINT8 EFI_SHA512_HASH[64];
782 1.1.1.2 jmcneill typedef union _EFI_HASH_OUTPUT {
783 1.1.1.2 jmcneill EFI_MD5_HASH *Md5Hash;
784 1.1.1.2 jmcneill EFI_SHA1_HASH *Sha1Hash;
785 1.1.1.2 jmcneill EFI_SHA224_HASH *Sha224Hash;
786 1.1.1.2 jmcneill EFI_SHA256_HASH *Sha256Hash;
787 1.1.1.2 jmcneill EFI_SHA384_HASH *Sha384Hash;
788 1.1.1.2 jmcneill EFI_SHA512_HASH *Sha512Hash;
789 1.1.1.2 jmcneill } EFI_HASH_OUTPUT;
790 1.1.1.2 jmcneill
791 1.1.1.2 jmcneill typedef
792 1.1.1.2 jmcneill EFI_STATUS
793 1.1.1.2 jmcneill (EFIAPI *EFI_HASH_GET_HASH_SIZE) (
794 1.1.1.2 jmcneill IN CONST struct _EFI_HASH_PROTOCOL *This,
795 1.1.1.2 jmcneill IN CONST EFI_GUID *HashAlgorithm,
796 1.1.1.2 jmcneill OUT UINTN *HashSize);
797 1.1.1.2 jmcneill
798 1.1.1.2 jmcneill typedef
799 1.1.1.2 jmcneill EFI_STATUS
800 1.1.1.2 jmcneill (EFIAPI *EFI_HASH_HASH) (
801 1.1.1.2 jmcneill IN CONST struct _EFI_HASH_PROTOCOL *This,
802 1.1.1.2 jmcneill IN CONST EFI_GUID *HashAlgorithm,
803 1.1.1.2 jmcneill IN BOOLEAN Extend,
804 1.1.1.2 jmcneill IN CONST UINT8 *Message,
805 1.1.1.2 jmcneill IN UINT64 MessageSize,
806 1.1.1.2 jmcneill IN OUT EFI_HASH_OUTPUT *Hash);
807 1.1.1.2 jmcneill
808 1.1.1.2 jmcneill typedef struct _EFI_HASH_PROTOCOL {
809 1.1.1.2 jmcneill EFI_HASH_GET_HASH_SIZE GetHashSize;
810 1.1.1.2 jmcneill EFI_HASH_HASH Hash;
811 1.1.1.2 jmcneill } EFI_HASH_PROTOCOL;
812 1.1.1.2 jmcneill
813 1.1.1.2 jmcneill typedef struct _EFI_HASH_PROTOCOL _EFI_HASH;
814 1.1.1.2 jmcneill typedef EFI_HASH_PROTOCOL EFI_HASH;
815 1.1.1.2 jmcneill
816 1.1.1.2 jmcneill
817 1.1.1.2 jmcneill typedef struct _EFI_UNICODE_COLLATION_PROTOCOL {
818 1.1 jakllsch
819 1.1 jakllsch // general
820 1.1 jakllsch EFI_UNICODE_STRICOLL StriColl;
821 1.1 jakllsch EFI_UNICODE_METAIMATCH MetaiMatch;
822 1.1 jakllsch EFI_UNICODE_STRLWR StrLwr;
823 1.1 jakllsch EFI_UNICODE_STRUPR StrUpr;
824 1.1 jakllsch
825 1.1 jakllsch // for supporting fat volumes
826 1.1 jakllsch EFI_UNICODE_FATTOSTR FatToStr;
827 1.1 jakllsch EFI_UNICODE_STRTOFAT StrToFat;
828 1.1 jakllsch
829 1.1 jakllsch CHAR8 *SupportedLanguages;
830 1.1.1.2 jmcneill } EFI_UNICODE_COLLATION_PROTOCOL;
831 1.1.1.2 jmcneill
832 1.1.1.2 jmcneill typedef EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_INTERFACE;
833 1.1 jakllsch
834 1.1 jakllsch /* Graphics output protocol */
835 1.1 jakllsch #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
836 1.1.1.2 jmcneill { 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } }
837 1.1 jakllsch typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL;
838 1.1 jakllsch
839 1.1 jakllsch typedef struct {
840 1.1 jakllsch UINT32 RedMask;
841 1.1 jakllsch UINT32 GreenMask;
842 1.1 jakllsch UINT32 BlueMask;
843 1.1 jakllsch UINT32 ReservedMask;
844 1.1 jakllsch } EFI_PIXEL_BITMASK;
845 1.1 jakllsch
846 1.1 jakllsch typedef enum {
847 1.1 jakllsch PixelRedGreenBlueReserved8BitPerColor,
848 1.1 jakllsch PixelBlueGreenRedReserved8BitPerColor,
849 1.1 jakllsch PixelBitMask,
850 1.1 jakllsch PixelBltOnly,
851 1.1 jakllsch PixelFormatMax
852 1.1 jakllsch } EFI_GRAPHICS_PIXEL_FORMAT;
853 1.1 jakllsch
854 1.1 jakllsch typedef struct {
855 1.1 jakllsch UINT32 Version;
856 1.1 jakllsch UINT32 HorizontalResolution;
857 1.1 jakllsch UINT32 VerticalResolution;
858 1.1 jakllsch EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;
859 1.1 jakllsch EFI_PIXEL_BITMASK PixelInformation;
860 1.1 jakllsch UINT32 PixelsPerScanLine;
861 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
862 1.1 jakllsch
863 1.1 jakllsch /**
864 1.1 jakllsch Return the current video mode information.
865 1.1 jakllsch
866 1.1 jakllsch @param This Protocol instance pointer.
867 1.1 jakllsch @param ModeNumber The mode number to return information on.
868 1.1 jakllsch @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
869 1.1 jakllsch @param Info A pointer to callee allocated buffer that returns information about ModeNumber.
870 1.1 jakllsch
871 1.1 jakllsch @retval EFI_SUCCESS Mode information returned.
872 1.1 jakllsch @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.
873 1.1 jakllsch @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode.
874 1.1 jakllsch @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
875 1.1 jakllsch @retval EFI_INVALID_PARAMETER One of the input args was NULL.
876 1.1 jakllsch
877 1.1 jakllsch **/
878 1.1 jakllsch typedef
879 1.1 jakllsch EFI_STATUS
880 1.1 jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
881 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
882 1.1 jakllsch IN UINT32 ModeNumber,
883 1.1 jakllsch OUT UINTN *SizeOfInfo,
884 1.1 jakllsch OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
885 1.1 jakllsch )
886 1.1 jakllsch ;
887 1.1 jakllsch
888 1.1 jakllsch /**
889 1.1 jakllsch Return the current video mode information.
890 1.1 jakllsch
891 1.1 jakllsch @param This Protocol instance pointer.
892 1.1 jakllsch @param ModeNumber The mode number to be set.
893 1.1 jakllsch
894 1.1 jakllsch @retval EFI_SUCCESS Graphics mode was changed.
895 1.1 jakllsch @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
896 1.1 jakllsch @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.
897 1.1 jakllsch
898 1.1 jakllsch **/
899 1.1 jakllsch typedef
900 1.1 jakllsch EFI_STATUS
901 1.1 jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
902 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
903 1.1 jakllsch IN UINT32 ModeNumber
904 1.1 jakllsch );
905 1.1 jakllsch
906 1.1 jakllsch typedef struct {
907 1.1 jakllsch UINT8 Blue;
908 1.1 jakllsch UINT8 Green;
909 1.1 jakllsch UINT8 Red;
910 1.1 jakllsch UINT8 Reserved;
911 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
912 1.1 jakllsch
913 1.1 jakllsch typedef union {
914 1.1 jakllsch EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel;
915 1.1 jakllsch UINT32 Raw;
916 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION;
917 1.1 jakllsch
918 1.1 jakllsch typedef enum {
919 1.1 jakllsch EfiBltVideoFill,
920 1.1 jakllsch EfiBltVideoToBltBuffer,
921 1.1.1.2 jmcneill EfiBltBufferToVideo,
922 1.1 jakllsch EfiBltVideoToVideo,
923 1.1 jakllsch EfiGraphicsOutputBltOperationMax
924 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
925 1.1 jakllsch
926 1.1 jakllsch /**
927 1.1 jakllsch The following table defines actions for BltOperations:
928 1.1 jakllsch
929 1.1.1.2 jmcneill <B>EfiBltVideoFill</B> - Write data from the BltBuffer pixel (SourceX, SourceY)
930 1.1.1.2 jmcneill directly to every pixel of the video display rectangle
931 1.1.1.2 jmcneill (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
932 1.1 jakllsch Only one pixel will be used from the BltBuffer. Delta is NOT used.
933 1.1 jakllsch
934 1.1.1.2 jmcneill <B>EfiBltVideoToBltBuffer</B> - Read data from the video display rectangle
935 1.1.1.2 jmcneill (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
936 1.1.1.2 jmcneill the BltBuffer rectangle (DestinationX, DestinationY )
937 1.1.1.2 jmcneill (DestinationX + Width, DestinationY + Height). If DestinationX or
938 1.1.1.2 jmcneill DestinationY is not zero then Delta must be set to the length in bytes
939 1.1 jakllsch of a row in the BltBuffer.
940 1.1 jakllsch
941 1.1.1.2 jmcneill <B>EfiBltBufferToVideo</B> - Write data from the BltBuffer rectangle
942 1.1.1.2 jmcneill (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
943 1.1.1.2 jmcneill video display rectangle (DestinationX, DestinationY)
944 1.1.1.2 jmcneill (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
945 1.1.1.2 jmcneill not zero then Delta must be set to the length in bytes of a row in the
946 1.1 jakllsch BltBuffer.
947 1.1 jakllsch
948 1.1 jakllsch <B>EfiBltVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)
949 1.1.1.2 jmcneill (SourceX + Width, SourceY + Height) .to the video display rectangle
950 1.1.1.2 jmcneill (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
951 1.1 jakllsch The BltBuffer and Delta are not used in this mode.
952 1.1 jakllsch
953 1.1 jakllsch @param This Protocol instance pointer.
954 1.1 jakllsch @param BltBuffer Buffer containing data to blit into video buffer. This
955 1.1 jakllsch buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
956 1.1 jakllsch @param BltOperation Operation to perform on BlitBuffer and video memory
957 1.1 jakllsch @param SourceX X coordinate of source for the BltBuffer.
958 1.1 jakllsch @param SourceY Y coordinate of source for the BltBuffer.
959 1.1 jakllsch @param DestinationX X coordinate of destination for the BltBuffer.
960 1.1 jakllsch @param DestinationY Y coordinate of destination for the BltBuffer.
961 1.1 jakllsch @param Width Width of rectangle in BltBuffer in pixels.
962 1.1 jakllsch @param Height Hight of rectangle in BltBuffer in pixels.
963 1.1 jakllsch @param Delta OPTIONAL
964 1.1 jakllsch
965 1.1 jakllsch @retval EFI_SUCCESS The Blt operation completed.
966 1.1 jakllsch @retval EFI_INVALID_PARAMETER BltOperation is not valid.
967 1.1 jakllsch @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
968 1.1 jakllsch
969 1.1 jakllsch **/
970 1.1 jakllsch typedef
971 1.1 jakllsch EFI_STATUS
972 1.1 jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
973 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
974 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL
975 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
976 1.1 jakllsch IN UINTN SourceX,
977 1.1 jakllsch IN UINTN SourceY,
978 1.1 jakllsch IN UINTN DestinationX,
979 1.1 jakllsch IN UINTN DestinationY,
980 1.1 jakllsch IN UINTN Width,
981 1.1 jakllsch IN UINTN Height,
982 1.1 jakllsch IN UINTN Delta OPTIONAL
983 1.1 jakllsch );
984 1.1 jakllsch
985 1.1 jakllsch typedef struct {
986 1.1 jakllsch UINT32 MaxMode;
987 1.1 jakllsch UINT32 Mode;
988 1.1 jakllsch EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;
989 1.1 jakllsch UINTN SizeOfInfo;
990 1.1 jakllsch EFI_PHYSICAL_ADDRESS FrameBufferBase;
991 1.1 jakllsch UINTN FrameBufferSize;
992 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
993 1.1 jakllsch
994 1.1 jakllsch struct _EFI_GRAPHICS_OUTPUT_PROTOCOL {
995 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode;
996 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode;
997 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt;
998 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode;
999 1.1 jakllsch };
1000 1.1 jakllsch
1001 1.1.1.2 jmcneill
1002 1.1.1.2 jmcneill
1003 1.1.1.2 jmcneill /*
1004 1.1.1.2 jmcneill * EFI EDID Discovered Protocol
1005 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 11.9
1006 1.1.1.2 jmcneill */
1007 1.1.1.2 jmcneill #define EFI_EDID_DISCOVERED_PROTOCOL_GUID \
1008 1.1.1.2 jmcneill { 0x1C0C34F6, 0xD380, 0x41FA, { 0xA0, 0x49, 0x8a, 0xD0, 0x6C, 0x1A, 0x66, 0xAA} }
1009 1.1.1.2 jmcneill
1010 1.1.1.2 jmcneill typedef struct _EFI_EDID_DISCOVERED_PROTOCOL {
1011 1.1.1.2 jmcneill UINT32 SizeOfEdid;
1012 1.1.1.2 jmcneill UINT8 *Edid;
1013 1.1.1.2 jmcneill } EFI_EDID_DISCOVERED_PROTOCOL;
1014 1.1.1.2 jmcneill
1015 1.1.1.2 jmcneill
1016 1.1.1.2 jmcneill
1017 1.1.1.2 jmcneill /*
1018 1.1.1.2 jmcneill * EFI EDID Active Protocol
1019 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 11.9
1020 1.1.1.2 jmcneill */
1021 1.1.1.2 jmcneill #define EFI_EDID_ACTIVE_PROTOCOL_GUID \
1022 1.1.1.2 jmcneill { 0xBD8C1056, 0x9F36, 0x44EC, { 0x92, 0xA8, 0xA6, 0x33, 0x7F, 0x81, 0x79, 0x86} }
1023 1.1.1.2 jmcneill
1024 1.1.1.2 jmcneill typedef struct _EFI_EDID_ACTIVE_PROTOCOL {
1025 1.1.1.2 jmcneill UINT32 SizeOfEdid;
1026 1.1.1.2 jmcneill UINT8 *Edid;
1027 1.1.1.2 jmcneill } EFI_EDID_ACTIVE_PROTOCOL;
1028 1.1.1.2 jmcneill
1029 1.1.1.2 jmcneill
1030 1.1.1.2 jmcneill
1031 1.1.1.2 jmcneill /*
1032 1.1.1.2 jmcneill * EFI EDID Override Protocol
1033 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 11.9
1034 1.1.1.2 jmcneill */
1035 1.1.1.2 jmcneill #define EFI_EDID_OVERRIDE_PROTOCOL_GUID \
1036 1.1.1.2 jmcneill { 0x48ECB431, 0xFB72, 0x45C0, { 0xA9, 0x22, 0xF4, 0x58, 0xFE, 0x04, 0x0B, 0xD5} }
1037 1.1.1.2 jmcneill
1038 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_EDID_OVERRIDE_PROTOCOL);
1039 1.1.1.2 jmcneill
1040 1.1.1.2 jmcneill typedef
1041 1.1.1.2 jmcneill EFI_STATUS
1042 1.1.1.2 jmcneill (EFIAPI *EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID) (
1043 1.1.1.2 jmcneill IN struct _EFI_EDID_OVERRIDE_PROTOCOL *This,
1044 1.1.1.2 jmcneill IN EFI_HANDLE *ChildHandle,
1045 1.1.1.2 jmcneill OUT UINT32 *Attributes,
1046 1.1.1.2 jmcneill IN OUT UINTN *EdidSize,
1047 1.1.1.2 jmcneill IN OUT UINT8 **Edid);
1048 1.1.1.2 jmcneill
1049 1.1.1.2 jmcneill typedef struct _EFI_EDID_OVERRIDE_PROTOCOL {
1050 1.1.1.2 jmcneill EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid;
1051 1.1.1.2 jmcneill } EFI_EDID_OVERRIDE_PROTOCOL;
1052 1.1.1.2 jmcneill
1053 1.1.1.2 jmcneill
1054 1.1.1.2 jmcneill
1055 1.1 jakllsch INTERFACE_DECL(_EFI_SERVICE_BINDING);
1056 1.1 jakllsch
1057 1.1 jakllsch typedef
1058 1.1 jakllsch EFI_STATUS
1059 1.1 jakllsch (EFIAPI *EFI_SERVICE_BINDING_CREATE_CHILD) (
1060 1.1 jakllsch IN struct _EFI_SERVICE_BINDING *This,
1061 1.1 jakllsch IN EFI_HANDLE *ChildHandle
1062 1.1 jakllsch );
1063 1.1 jakllsch
1064 1.1 jakllsch typedef
1065 1.1 jakllsch EFI_STATUS
1066 1.1 jakllsch (EFIAPI *EFI_SERVICE_BINDING_DESTROY_CHILD) (
1067 1.1 jakllsch IN struct _EFI_SERVICE_BINDING *This,
1068 1.1 jakllsch IN EFI_HANDLE ChildHandle
1069 1.1 jakllsch );
1070 1.1 jakllsch
1071 1.1 jakllsch typedef struct _EFI_SERVICE_BINDING {
1072 1.1 jakllsch EFI_SERVICE_BINDING_CREATE_CHILD CreateChild;
1073 1.1 jakllsch EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild;
1074 1.1 jakllsch } EFI_SERVICE_BINDING;
1075 1.1 jakllsch
1076 1.1 jakllsch
1077 1.1.1.2 jmcneill
1078 1.1.1.2 jmcneill /*
1079 1.1.1.2 jmcneill * EFI Driver Binding Protocol
1080 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 10.1
1081 1.1.1.2 jmcneill */
1082 1.1.1.2 jmcneill #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
1083 1.1.1.2 jmcneill { 0x18A031AB, 0xB443, 0x4D1A, { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71} }
1084 1.1.1.2 jmcneill #define DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL_GUID
1085 1.1.1.2 jmcneill
1086 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DRIVER_BINDING_PROTOCOL);
1087 1.1.1.2 jmcneill
1088 1.1.1.2 jmcneill typedef
1089 1.1.1.2 jmcneill EFI_STATUS
1090 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED) (
1091 1.1.1.2 jmcneill IN struct _EFI_DRIVER_BINDING_PROTOCOL *This,
1092 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1093 1.1.1.2 jmcneill IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL);
1094 1.1.1.2 jmcneill
1095 1.1.1.2 jmcneill typedef
1096 1.1.1.2 jmcneill EFI_STATUS
1097 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_START) (
1098 1.1.1.2 jmcneill IN struct _EFI_DRIVER_BINDING_PROTOCOL *This,
1099 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1100 1.1.1.2 jmcneill IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL);
1101 1.1.1.2 jmcneill
1102 1.1.1.2 jmcneill typedef
1103 1.1.1.2 jmcneill EFI_STATUS
1104 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_STOP) (
1105 1.1.1.2 jmcneill IN struct _EFI_DRIVER_BINDING_PROTOCOL *This,
1106 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1107 1.1.1.2 jmcneill IN UINTN NumberOfChildren,
1108 1.1.1.2 jmcneill IN EFI_HANDLE *ChildHandleBuffer OPTIONAL);
1109 1.1.1.2 jmcneill
1110 1.1.1.2 jmcneill typedef struct _EFI_DRIVER_BINDING_PROTOCOL {
1111 1.1.1.2 jmcneill EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported;
1112 1.1.1.2 jmcneill EFI_DRIVER_BINDING_PROTOCOL_START Start;
1113 1.1.1.2 jmcneill EFI_DRIVER_BINDING_PROTOCOL_STOP Stop;
1114 1.1.1.2 jmcneill UINT32 Version;
1115 1.1.1.2 jmcneill EFI_HANDLE ImageHandle;
1116 1.1.1.2 jmcneill EFI_HANDLE DriverBindingHandle;
1117 1.1.1.2 jmcneill } EFI_DRIVER_BINDING_PROTOCOL;
1118 1.1.1.2 jmcneill
1119 1.1.1.2 jmcneill typedef struct _EFI_DRIVER_BINDING_PROTOCOL _EFI_DRIVER_BINDING;
1120 1.1.1.2 jmcneill typedef EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING;
1121 1.1.1.2 jmcneill
1122 1.1.1.2 jmcneill
1123 1.1.1.2 jmcneill /*
1124 1.1.1.2 jmcneill * Backwards compatibility with older GNU-EFI versions. Deprecated.
1125 1.1.1.2 jmcneill */
1126 1.1.1.2 jmcneill #define EFI_DRIVER_SUPPORTED EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED
1127 1.1.1.2 jmcneill #define EFI_DRIVER_START EFI_DRIVER_BINDING_PROTOCOL_START
1128 1.1.1.2 jmcneill #define EFI_DRIVER_STOP EFI_DRIVER_BINDING_PROTOCOL_STOP
1129 1.1.1.2 jmcneill
1130 1.1.1.2 jmcneill
1131 1.1.1.2 jmcneill
1132 1.1.1.2 jmcneill /*
1133 1.1.1.2 jmcneill * EFI Component Name Protocol
1134 1.1.1.2 jmcneill * Deprecated - use EFI Component Name 2 Protocol instead
1135 1.1.1.2 jmcneill */
1136 1.1.1.2 jmcneill #define EFI_COMPONENT_NAME_PROTOCOL_GUID \
1137 1.1.1.2 jmcneill {0x107A772C, 0xD5E1, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
1138 1.1.1.2 jmcneill #define COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME_PROTOCOL_GUID
1139 1.1.1.2 jmcneill
1140 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_COMPONENT_NAME_PROTOCOL);
1141 1.1.1.2 jmcneill
1142 1.1.1.2 jmcneill typedef
1143 1.1.1.2 jmcneill EFI_STATUS
1144 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME_GET_DRIVER_NAME) (
1145 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME_PROTOCOL *This,
1146 1.1.1.2 jmcneill IN CHAR8 *Language,
1147 1.1.1.2 jmcneill OUT CHAR16 **DriverName);
1148 1.1.1.2 jmcneill
1149 1.1.1.2 jmcneill typedef
1150 1.1.1.2 jmcneill EFI_STATUS
1151 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME_GET_CONTROLLER_NAME) (
1152 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME_PROTOCOL *This,
1153 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1154 1.1.1.2 jmcneill IN EFI_HANDLE ChildHandle OPTIONAL,
1155 1.1.1.2 jmcneill IN CHAR8 *Language,
1156 1.1.1.2 jmcneill OUT CHAR16 **ControllerName);
1157 1.1.1.2 jmcneill
1158 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME_PROTOCOL {
1159 1.1.1.2 jmcneill EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName;
1160 1.1.1.2 jmcneill EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName;
1161 1.1.1.2 jmcneill CHAR8 *SupportedLanguages;
1162 1.1.1.2 jmcneill } EFI_COMPONENT_NAME_PROTOCOL;
1163 1.1.1.2 jmcneill
1164 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME_PROTOCOL _EFI_COMPONENT_NAME;
1165 1.1.1.2 jmcneill typedef EFI_COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME;
1166 1.1.1.2 jmcneill
1167 1.1.1.2 jmcneill
1168 1.1.1.2 jmcneill /*
1169 1.1.1.2 jmcneill * EFI Component Name 2 Protocol
1170 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 10.5
1171 1.1.1.2 jmcneill */
1172 1.1.1.2 jmcneill #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
1173 1.1.1.2 jmcneill {0x6A7A5CFF, 0xE8D9, 0x4F70, { 0xBA, 0xDA, 0x75, 0xAB, 0x30, 0x25, 0xCE, 0x14} }
1174 1.1.1.2 jmcneill #define COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL_GUID
1175 1.1.1.2 jmcneill
1176 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_COMPONENT_NAME2_PROTOCOL);
1177 1.1.1.2 jmcneill
1178 1.1.1.2 jmcneill typedef
1179 1.1.1.2 jmcneill EFI_STATUS
1180 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME2_GET_DRIVER_NAME) (
1181 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME2_PROTOCOL *This,
1182 1.1.1.2 jmcneill IN CHAR8 *Language,
1183 1.1.1.2 jmcneill OUT CHAR16 **DriverName);
1184 1.1.1.2 jmcneill
1185 1.1.1.2 jmcneill typedef
1186 1.1.1.2 jmcneill EFI_STATUS
1187 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) (
1188 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME2_PROTOCOL *This,
1189 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1190 1.1.1.2 jmcneill IN EFI_HANDLE ChildHandle OPTIONAL,
1191 1.1.1.2 jmcneill IN CHAR8 *Language,
1192 1.1.1.2 jmcneill OUT CHAR16 **ControllerName);
1193 1.1.1.2 jmcneill
1194 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME2_PROTOCOL {
1195 1.1.1.2 jmcneill EFI_COMPONENT_NAME2_GET_DRIVER_NAME GetDriverName;
1196 1.1.1.2 jmcneill EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME GetControllerName;
1197 1.1.1.2 jmcneill CHAR8 *SupportedLanguages;
1198 1.1.1.2 jmcneill } EFI_COMPONENT_NAME2_PROTOCOL;
1199 1.1.1.2 jmcneill
1200 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME2_PROTOCOL _EFI_COMPONENT_NAME2;
1201 1.1.1.2 jmcneill typedef EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2;
1202 1.1.1.2 jmcneill
1203 1.1.1.2 jmcneill
1204 1.1.1.2 jmcneill
1205 1.1.1.2 jmcneill /*
1206 1.1.1.2 jmcneill * EFI Loaded Image Protocol
1207 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 8.1
1208 1.1.1.2 jmcneill */
1209 1.1.1.2 jmcneill #define EFI_LOADED_IMAGE_PROTOCOL_GUID \
1210 1.1.1.2 jmcneill { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
1211 1.1.1.2 jmcneill #define LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL_GUID
1212 1.1.1.2 jmcneill
1213 1.1.1.2 jmcneill #define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000
1214 1.1.1.2 jmcneill #define EFI_IMAGE_INFORMATION_REVISION EFI_LOADED_IMAGE_PROTOCOL_REVISION
1215 1.1.1.2 jmcneill
1216 1.1.1.2 jmcneill typedef
1217 1.1.1.2 jmcneill EFI_STATUS
1218 1.1.1.2 jmcneill (EFIAPI *EFI_IMAGE_UNLOAD) (
1219 1.1.1.2 jmcneill IN EFI_HANDLE ImageHandle
1220 1.1.1.2 jmcneill );
1221 1.1.1.2 jmcneill
1222 1.1.1.2 jmcneill typedef struct {
1223 1.1.1.2 jmcneill UINT32 Revision;
1224 1.1.1.2 jmcneill EFI_HANDLE ParentHandle;
1225 1.1.1.2 jmcneill struct _EFI_SYSTEM_TABLE *SystemTable;
1226 1.1.1.2 jmcneill
1227 1.1.1.2 jmcneill // Source location of image
1228 1.1.1.2 jmcneill EFI_HANDLE DeviceHandle;
1229 1.1.1.2 jmcneill EFI_DEVICE_PATH *FilePath;
1230 1.1.1.2 jmcneill VOID *Reserved;
1231 1.1.1.2 jmcneill
1232 1.1.1.2 jmcneill // Images load options
1233 1.1.1.2 jmcneill UINT32 LoadOptionsSize;
1234 1.1.1.2 jmcneill VOID *LoadOptions;
1235 1.1.1.2 jmcneill
1236 1.1.1.2 jmcneill // Location of where image was loaded
1237 1.1.1.2 jmcneill VOID *ImageBase;
1238 1.1.1.2 jmcneill UINT64 ImageSize;
1239 1.1.1.2 jmcneill EFI_MEMORY_TYPE ImageCodeType;
1240 1.1.1.2 jmcneill EFI_MEMORY_TYPE ImageDataType;
1241 1.1.1.2 jmcneill
1242 1.1.1.2 jmcneill // If the driver image supports a dynamic unload request
1243 1.1.1.2 jmcneill EFI_IMAGE_UNLOAD Unload;
1244 1.1.1.2 jmcneill } EFI_LOADED_IMAGE_PROTOCOL;
1245 1.1.1.2 jmcneill
1246 1.1.1.2 jmcneill typedef EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE;
1247 1.1.1.2 jmcneill
1248 1.1.1.2 jmcneill
1249 1.1.1.2 jmcneill
1250 1.1.1.2 jmcneill /*
1251 1.1.1.2 jmcneill * Random Number Generator Protocol
1252 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 35.5
1253 1.1.1.2 jmcneill */
1254 1.1.1.2 jmcneill #define EFI_RNG_PROTOCOL_GUID \
1255 1.1.1.2 jmcneill { 0x3152bca5, 0xeade, 0x433d, {0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44} }
1256 1.1.1.2 jmcneill
1257 1.1.1.2 jmcneill typedef EFI_GUID EFI_RNG_ALGORITHM;
1258 1.1.1.2 jmcneill
1259 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_SP800_90_HASH_256_GUID \
1260 1.1.1.2 jmcneill {0xa7af67cb, 0x603b, 0x4d42, {0xba, 0x21, 0x70, 0xbf, 0xb6, 0x29, 0x3f, 0x96} }
1261 1.1.1.2 jmcneill
1262 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_SP800_90_HMAC_256_GUID \
1263 1.1.1.2 jmcneill {0xc5149b43, 0xae85, 0x4f53, {0x99, 0x82, 0xb9, 0x43, 0x35, 0xd3, 0xa9, 0xe7} }
1264 1.1.1.2 jmcneill
1265 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_SP800_90_CTR_256_GUID \
1266 1.1.1.2 jmcneill {0x44f0de6e, 0x4d8c, 0x4045, {0xa8, 0xc7, 0x4d, 0xd1, 0x68, 0x85, 0x6b, 0x9e} }
1267 1.1.1.2 jmcneill
1268 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_X9_31_3DES_GUID \
1269 1.1.1.2 jmcneill {0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46} }
1270 1.1.1.2 jmcneill
1271 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_X9_31_AES_GUID \
1272 1.1.1.2 jmcneill {0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9} }
1273 1.1.1.2 jmcneill
1274 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_RAW \
1275 1.1.1.2 jmcneill {0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61} }
1276 1.1.1.2 jmcneill
1277 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_RNG_PROTOCOL);
1278 1.1.1.2 jmcneill
1279 1.1.1.2 jmcneill typedef
1280 1.1.1.2 jmcneill EFI_STATUS
1281 1.1.1.2 jmcneill (EFIAPI *EFI_RNG_GET_INFO) (
1282 1.1.1.2 jmcneill IN struct _EFI_RNG_PROTOCOL *This,
1283 1.1.1.2 jmcneill IN OUT UINTN *RNGAlgorithmListSize,
1284 1.1.1.2 jmcneill OUT EFI_RNG_ALGORITHM *RNGAlgorithmList
1285 1.1.1.2 jmcneill );
1286 1.1.1.2 jmcneill
1287 1.1.1.2 jmcneill typedef
1288 1.1.1.2 jmcneill EFI_STATUS
1289 1.1.1.2 jmcneill (EFIAPI *EFI_RNG_GET_RNG) (
1290 1.1.1.2 jmcneill IN struct _EFI_RNG_PROTOCOL *This,
1291 1.1.1.2 jmcneill IN EFI_RNG_ALGORITHM *RNGAlgorithm, OPTIONAL
1292 1.1.1.2 jmcneill IN UINTN RNGValueLength,
1293 1.1.1.2 jmcneill OUT UINT8 *RNGValue
1294 1.1.1.2 jmcneill );
1295 1.1.1.2 jmcneill
1296 1.1.1.2 jmcneill typedef struct _EFI_RNG_PROTOCOL {
1297 1.1.1.2 jmcneill EFI_RNG_GET_INFO GetInfo;
1298 1.1.1.2 jmcneill EFI_RNG_GET_RNG GetRNG;
1299 1.1.1.2 jmcneill } EFI_RNG_PROTOCOL;
1300 1.1.1.2 jmcneill
1301 1.1.1.2 jmcneill
1302 1.1.1.2 jmcneill //
1303 1.1.1.2 jmcneill // EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
1304 1.1.1.2 jmcneill //
1305 1.1.1.2 jmcneill
1306 1.1.1.2 jmcneill #define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID \
1307 1.1.1.2 jmcneill { 0x6b30c738, 0xa391, 0x11d4, {0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1308 1.1.1.2 jmcneill
1309 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL);
1310 1.1.1.2 jmcneill
1311 1.1.1.2 jmcneill typedef
1312 1.1.1.2 jmcneill EFI_STATUS
1313 1.1.1.2 jmcneill (EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER) (
1314 1.1.1.2 jmcneill IN struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,
1315 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1316 1.1.1.2 jmcneill IN OUT EFI_HANDLE *DriverImageHandle);
1317 1.1.1.2 jmcneill
1318 1.1.1.2 jmcneill typedef
1319 1.1.1.2 jmcneill EFI_STATUS
1320 1.1.1.2 jmcneill (EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH) (
1321 1.1.1.2 jmcneill IN struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,
1322 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1323 1.1.1.2 jmcneill IN OUT EFI_DEVICE_PATH **DriverImagePath);
1324 1.1.1.2 jmcneill
1325 1.1.1.2 jmcneill typedef
1326 1.1.1.2 jmcneill EFI_STATUS
1327 1.1.1.2 jmcneill (EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED) (
1328 1.1.1.2 jmcneill IN struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,
1329 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1330 1.1.1.2 jmcneill IN EFI_DEVICE_PATH *DriverImagePath,
1331 1.1.1.2 jmcneill IN EFI_HANDLE DriverImageHandle);
1332 1.1.1.2 jmcneill
1333 1.1.1.2 jmcneill typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL {
1334 1.1.1.2 jmcneill EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver;
1335 1.1.1.2 jmcneill EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath;
1336 1.1.1.2 jmcneill EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded;
1337 1.1.1.2 jmcneill } EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL;
1338 1.1.1.2 jmcneill
1339 1.1.1.2 jmcneill //
1340 1.1.1.2 jmcneill // EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
1341 1.1.1.2 jmcneill //
1342 1.1.1.2 jmcneill
1343 1.1.1.2 jmcneill #define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID \
1344 1.1.1.2 jmcneill { 0x3bc1b285, 0x8a15, 0x4a82, {0xaa, 0xbf, 0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65} }
1345 1.1.1.2 jmcneill
1346 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL);
1347 1.1.1.2 jmcneill
1348 1.1.1.2 jmcneill typedef
1349 1.1.1.2 jmcneill EFI_STATUS
1350 1.1.1.2 jmcneill (EFIAPI *EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER) (
1351 1.1.1.2 jmcneill IN struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *This,
1352 1.1.1.2 jmcneill IN OUT EFI_HANDLE *DriverImageHandle);
1353 1.1.1.2 jmcneill
1354 1.1.1.2 jmcneill typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL {
1355 1.1.1.2 jmcneill EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver;
1356 1.1.1.2 jmcneill } EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL;
1357 1.1.1.2 jmcneill
1358 1.1.1.2 jmcneill //
1359 1.1.1.2 jmcneill // EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
1360 1.1.1.2 jmcneill //
1361 1.1.1.2 jmcneill
1362 1.1.1.2 jmcneill #define EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID \
1363 1.1.1.2 jmcneill { 0xb1ee129e, 0xda36, 0x4181, {0x91, 0xf8, 0x04, 0xa4, 0x92, 0x37, 0x66, 0xa7} }
1364 1.1.1.2 jmcneill
1365 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL);
1366 1.1.1.2 jmcneill
1367 1.1.1.2 jmcneill typedef
1368 1.1.1.2 jmcneill UINT32
1369 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION) (
1370 1.1.1.2 jmcneill IN struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL *This);
1371 1.1.1.2 jmcneill
1372 1.1.1.2 jmcneill typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL {
1373 1.1.1.2 jmcneill EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion;
1374 1.1.1.2 jmcneill } EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL;
1375 1.1.1.2 jmcneill
1376 1.1.1.2 jmcneill //
1377 1.1.1.2 jmcneill // EFI_EBC_PROTOCOL
1378 1.1.1.2 jmcneill //
1379 1.1.1.2 jmcneill
1380 1.1.1.2 jmcneill #define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
1381 1.1.1.2 jmcneill {0x13ac6dd1, 0x73d0, 0x11d4, {0xb0, 0x6b, 0x00, 0xaa, 0x00, 0xbd, 0x6d, 0xe7} }
1382 1.1.1.2 jmcneill
1383 1.1.1.2 jmcneill #define EFI_EBC_PROTOCOL_GUID EFI_EBC_INTERPRETER_PROTOCOL_GUID
1384 1.1.1.2 jmcneill
1385 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_EBC_PROTOCOL);
1386 1.1.1.2 jmcneill
1387 1.1.1.2 jmcneill typedef
1388 1.1.1.2 jmcneill EFI_STATUS
1389 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_CREATE_THUNK)(
1390 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This,
1391 1.1.1.2 jmcneill IN EFI_HANDLE ImageHandle,
1392 1.1.1.2 jmcneill IN VOID *EbcEntryPoint,
1393 1.1.1.2 jmcneill OUT VOID **Thunk);
1394 1.1.1.2 jmcneill
1395 1.1.1.2 jmcneill typedef
1396 1.1.1.2 jmcneill EFI_STATUS
1397 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_UNLOAD_IMAGE)(
1398 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This,
1399 1.1.1.2 jmcneill IN EFI_HANDLE ImageHandle);
1400 1.1.1.2 jmcneill
1401 1.1.1.2 jmcneill typedef
1402 1.1.1.2 jmcneill EFI_STATUS
1403 1.1.1.2 jmcneill (EFIAPI *EBC_ICACHE_FLUSH)(
1404 1.1.1.2 jmcneill IN EFI_PHYSICAL_ADDRESS Start,
1405 1.1.1.2 jmcneill IN UINT64 Length);
1406 1.1.1.2 jmcneill
1407 1.1.1.2 jmcneill typedef
1408 1.1.1.2 jmcneill EFI_STATUS
1409 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_REGISTER_ICACHE_FLUSH)(
1410 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This,
1411 1.1.1.2 jmcneill IN EBC_ICACHE_FLUSH Flush);
1412 1.1.1.2 jmcneill
1413 1.1.1.2 jmcneill typedef
1414 1.1.1.2 jmcneill EFI_STATUS
1415 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_GET_VERSION)(
1416 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This,
1417 1.1.1.2 jmcneill IN OUT UINT64 *Version);
1418 1.1.1.2 jmcneill
1419 1.1.1.2 jmcneill typedef struct _EFI_EBC_PROTOCOL {
1420 1.1.1.2 jmcneill EFI_EBC_CREATE_THUNK CreateThunk;
1421 1.1.1.2 jmcneill EFI_EBC_UNLOAD_IMAGE UnloadImage;
1422 1.1.1.2 jmcneill EFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush;
1423 1.1.1.2 jmcneill EFI_EBC_GET_VERSION GetVersion;
1424 1.1.1.2 jmcneill } EFI_EBC_PROTOCOL;
1425 1.1.1.2 jmcneill
1426 1.1.1.2 jmcneill #endif
1427