efiprot.h revision 1.1.1.3 1 1.1 jakllsch /* $NetBSD: efiprot.h,v 1.1.1.3 2021/09/30 18:50:09 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.1.3 jmcneill #define EFI_FILE_SYSTEM_VOLUME_LABEL_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.1.3 jmcneill } EFI_FILE_SYSTEM_VOLUME_LABEL;
528 1.1 jakllsch
529 1.1.1.3 jmcneill #define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL,VolumeLabel)
530 1.1.1.3 jmcneill
531 1.1.1.3 jmcneill //
532 1.1.1.3 jmcneill // For compatibility with older versions of gnu-efi
533 1.1.1.3 jmcneill //
534 1.1.1.3 jmcneill #define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID EFI_FILE_SYSTEM_VOLUME_LABEL_ID
535 1.1.1.3 jmcneill #define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FILE_SYSTEM_VOLUME_LABEL
536 1.1 jakllsch
537 1.1 jakllsch //
538 1.1 jakllsch // Load file protocol
539 1.1 jakllsch //
540 1.1 jakllsch
541 1.1 jakllsch
542 1.1.1.2 jmcneill #define EFI_LOAD_FILE_PROTOCOL_GUID \
543 1.1 jakllsch { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
544 1.1.1.2 jmcneill #define LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL_GUID
545 1.1 jakllsch
546 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_LOAD_FILE_PROTOCOL);
547 1.1 jakllsch
548 1.1 jakllsch typedef
549 1.1 jakllsch EFI_STATUS
550 1.1 jakllsch (EFIAPI *EFI_LOAD_FILE) (
551 1.1.1.2 jmcneill IN struct _EFI_LOAD_FILE_PROTOCOL *This,
552 1.1 jakllsch IN EFI_DEVICE_PATH *FilePath,
553 1.1 jakllsch IN BOOLEAN BootPolicy,
554 1.1 jakllsch IN OUT UINTN *BufferSize,
555 1.1 jakllsch IN VOID *Buffer OPTIONAL
556 1.1 jakllsch );
557 1.1 jakllsch
558 1.1.1.2 jmcneill typedef struct _EFI_LOAD_FILE_PROTOCOL {
559 1.1 jakllsch EFI_LOAD_FILE LoadFile;
560 1.1.1.2 jmcneill } EFI_LOAD_FILE_PROTOCOL;
561 1.1 jakllsch
562 1.1.1.2 jmcneill typedef struct _EFI_LOAD_FILE_PROTOCOL _EFI_LOAD_FILE_INTERFACE;
563 1.1.1.2 jmcneill typedef EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_INTERFACE;
564 1.1 jakllsch
565 1.1 jakllsch //
566 1.1 jakllsch // Device IO protocol
567 1.1 jakllsch //
568 1.1 jakllsch
569 1.1.1.2 jmcneill #define EFI_DEVICE_IO_PROTOCOL_GUID \
570 1.1 jakllsch { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
571 1.1.1.2 jmcneill #define DEVICE_IO_PROTOCOL EFI_DEVICE_IO_PROTOCOL_GUID
572 1.1 jakllsch
573 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DEVICE_IO_PROTOCOL);
574 1.1 jakllsch
575 1.1 jakllsch typedef enum {
576 1.1 jakllsch IO_UINT8,
577 1.1 jakllsch IO_UINT16,
578 1.1 jakllsch IO_UINT32,
579 1.1 jakllsch IO_UINT64,
580 1.1 jakllsch //
581 1.1 jakllsch // Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
582 1.1 jakllsch //
583 1.1 jakllsch MMIO_COPY_UINT8,
584 1.1 jakllsch MMIO_COPY_UINT16,
585 1.1 jakllsch MMIO_COPY_UINT32,
586 1.1 jakllsch MMIO_COPY_UINT64
587 1.1 jakllsch } EFI_IO_WIDTH;
588 1.1 jakllsch
589 1.1 jakllsch #define EFI_PCI_ADDRESS(_bus,_dev,_func) \
590 1.1 jakllsch ( (UINT64) ( (((UINTN)_bus) << 24) + (((UINTN)_dev) << 16) + (((UINTN)_func) << 8) ) )
591 1.1 jakllsch
592 1.1 jakllsch
593 1.1 jakllsch typedef
594 1.1 jakllsch EFI_STATUS
595 1.1 jakllsch (EFIAPI *EFI_DEVICE_IO) (
596 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
597 1.1 jakllsch IN EFI_IO_WIDTH Width,
598 1.1 jakllsch IN UINT64 Address,
599 1.1 jakllsch IN UINTN Count,
600 1.1 jakllsch IN OUT VOID *Buffer
601 1.1 jakllsch );
602 1.1 jakllsch
603 1.1 jakllsch typedef struct {
604 1.1 jakllsch EFI_DEVICE_IO Read;
605 1.1 jakllsch EFI_DEVICE_IO Write;
606 1.1 jakllsch } EFI_IO_ACCESS;
607 1.1 jakllsch
608 1.1.1.2 jmcneill typedef
609 1.1 jakllsch EFI_STATUS
610 1.1 jakllsch (EFIAPI *EFI_PCI_DEVICE_PATH) (
611 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
612 1.1 jakllsch IN UINT64 Address,
613 1.1 jakllsch IN OUT EFI_DEVICE_PATH **PciDevicePath
614 1.1 jakllsch );
615 1.1 jakllsch
616 1.1 jakllsch typedef enum {
617 1.1 jakllsch EfiBusMasterRead,
618 1.1 jakllsch EfiBusMasterWrite,
619 1.1 jakllsch EfiBusMasterCommonBuffer
620 1.1 jakllsch } EFI_IO_OPERATION_TYPE;
621 1.1 jakllsch
622 1.1 jakllsch typedef
623 1.1 jakllsch EFI_STATUS
624 1.1 jakllsch (EFIAPI *EFI_IO_MAP) (
625 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
626 1.1 jakllsch IN EFI_IO_OPERATION_TYPE Operation,
627 1.1 jakllsch IN EFI_PHYSICAL_ADDRESS *HostAddress,
628 1.1 jakllsch IN OUT UINTN *NumberOfBytes,
629 1.1 jakllsch OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
630 1.1 jakllsch OUT VOID **Mapping
631 1.1 jakllsch );
632 1.1 jakllsch
633 1.1 jakllsch typedef
634 1.1 jakllsch EFI_STATUS
635 1.1 jakllsch (EFIAPI *EFI_IO_UNMAP) (
636 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
637 1.1 jakllsch IN VOID *Mapping
638 1.1 jakllsch );
639 1.1 jakllsch
640 1.1 jakllsch typedef
641 1.1 jakllsch EFI_STATUS
642 1.1 jakllsch (EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
643 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
644 1.1 jakllsch IN EFI_ALLOCATE_TYPE Type,
645 1.1 jakllsch IN EFI_MEMORY_TYPE MemoryType,
646 1.1 jakllsch IN UINTN Pages,
647 1.1 jakllsch IN OUT EFI_PHYSICAL_ADDRESS *HostAddress
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_FLUSH) (
653 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This
654 1.1 jakllsch );
655 1.1 jakllsch
656 1.1 jakllsch typedef
657 1.1 jakllsch EFI_STATUS
658 1.1 jakllsch (EFIAPI *EFI_IO_FREE_BUFFER) (
659 1.1.1.2 jmcneill IN struct _EFI_DEVICE_IO_PROTOCOL *This,
660 1.1 jakllsch IN UINTN Pages,
661 1.1 jakllsch IN EFI_PHYSICAL_ADDRESS HostAddress
662 1.1 jakllsch );
663 1.1 jakllsch
664 1.1.1.2 jmcneill typedef struct _EFI_DEVICE_IO_PROTOCOL {
665 1.1 jakllsch EFI_IO_ACCESS Mem;
666 1.1 jakllsch EFI_IO_ACCESS Io;
667 1.1 jakllsch EFI_IO_ACCESS Pci;
668 1.1 jakllsch EFI_IO_MAP Map;
669 1.1 jakllsch EFI_PCI_DEVICE_PATH PciDevicePath;
670 1.1 jakllsch EFI_IO_UNMAP Unmap;
671 1.1 jakllsch EFI_IO_ALLOCATE_BUFFER AllocateBuffer;
672 1.1 jakllsch EFI_IO_FLUSH Flush;
673 1.1 jakllsch EFI_IO_FREE_BUFFER FreeBuffer;
674 1.1.1.2 jmcneill } EFI_DEVICE_IO_PROTOCOL;
675 1.1 jakllsch
676 1.1.1.2 jmcneill typedef struct _EFI_DEVICE_IO_PROTOCOL _EFI_DEVICE_IO_INTERFACE;
677 1.1.1.2 jmcneill typedef EFI_DEVICE_IO_PROTOCOL EFI_DEVICE_IO_INTERFACE;
678 1.1 jakllsch
679 1.1 jakllsch //
680 1.1 jakllsch // Unicode Collation protocol
681 1.1 jakllsch //
682 1.1 jakllsch
683 1.1.1.2 jmcneill #define EFI_UNICODE_COLLATION_PROTOCOL_GUID \
684 1.1 jakllsch { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
685 1.1.1.2 jmcneill #define UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL_GUID
686 1.1 jakllsch
687 1.1.1.2 jmcneill #define EFI_UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff)
688 1.1.1.2 jmcneill #define UNICODE_BYTE_ORDER_MARK EFI_UNICODE_BYTE_ORDER_MARK
689 1.1 jakllsch
690 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_UNICODE_COLLATION_PROTOCOL);
691 1.1 jakllsch
692 1.1 jakllsch typedef
693 1.1 jakllsch INTN
694 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRICOLL) (
695 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
696 1.1 jakllsch IN CHAR16 *s1,
697 1.1 jakllsch IN CHAR16 *s2
698 1.1 jakllsch );
699 1.1 jakllsch
700 1.1 jakllsch typedef
701 1.1 jakllsch BOOLEAN
702 1.1 jakllsch (EFIAPI *EFI_UNICODE_METAIMATCH) (
703 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
704 1.1 jakllsch IN CHAR16 *String,
705 1.1 jakllsch IN CHAR16 *Pattern
706 1.1 jakllsch );
707 1.1 jakllsch
708 1.1 jakllsch typedef
709 1.1 jakllsch VOID
710 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRLWR) (
711 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
712 1.1 jakllsch IN OUT CHAR16 *Str
713 1.1 jakllsch );
714 1.1 jakllsch
715 1.1 jakllsch typedef
716 1.1 jakllsch VOID
717 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRUPR) (
718 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
719 1.1 jakllsch IN OUT CHAR16 *Str
720 1.1 jakllsch );
721 1.1 jakllsch
722 1.1 jakllsch typedef
723 1.1 jakllsch VOID
724 1.1 jakllsch (EFIAPI *EFI_UNICODE_FATTOSTR) (
725 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
726 1.1 jakllsch IN UINTN FatSize,
727 1.1 jakllsch IN CHAR8 *Fat,
728 1.1 jakllsch OUT CHAR16 *String
729 1.1 jakllsch );
730 1.1 jakllsch
731 1.1 jakllsch typedef
732 1.1 jakllsch BOOLEAN
733 1.1 jakllsch (EFIAPI *EFI_UNICODE_STRTOFAT) (
734 1.1.1.2 jmcneill IN struct _EFI_UNICODE_COLLATION_PROTOCOL *This,
735 1.1 jakllsch IN CHAR16 *String,
736 1.1 jakllsch IN UINTN FatSize,
737 1.1 jakllsch OUT CHAR8 *Fat
738 1.1 jakllsch );
739 1.1 jakllsch
740 1.1.1.2 jmcneill //
741 1.1.1.2 jmcneill // Hash Protocol
742 1.1.1.2 jmcneill //
743 1.1.1.2 jmcneill #define EFI_HASH_PROTOCOL_GUID \
744 1.1.1.2 jmcneill { 0xC5184932, 0xDBA5, 0x46DB, { 0xA5, 0xBA, 0xCC, 0x0B, 0xDA, 0x9C, 0x14, 0x35 } }
745 1.1.1.2 jmcneill #define HASH_PROTOCOL EFI_HASH_PROTOCOL_GUID
746 1.1.1.2 jmcneill
747 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1_GUID \
748 1.1.1.2 jmcneill { 0x2AE9D80F, 0x3FB2, 0x4095, { 0xB7, 0xB1, 0xE9, 0x31, 0x57, 0xB9, 0x46, 0xB6 } } // Deprecated
749 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1 EFI_HASH_ALGORITHM_SHA1_GUID
750 1.1.1.2 jmcneill
751 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA224_GUID \
752 1.1.1.2 jmcneill { 0x8DF01A06, 0x9BD5, 0x4BF7, { 0xB0, 0x21, 0xDB, 0x4F, 0xD9, 0xCC, 0xF4, 0x5B } } // Deprecated
753 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA224 EFI_HASH_ALGORITHM_SHA224_GUID
754 1.1.1.2 jmcneill
755 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256_GUID \
756 1.1.1.2 jmcneill { 0x51AA59DE, 0xFDF2, 0x4EA3, { 0xBC, 0x63, 0x87, 0x5F, 0xB7, 0x84, 0x2E, 0xE9 } } // Deprecated
757 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256 EFI_HASH_ALGORITHM_SHA256_GUID
758 1.1.1.2 jmcneill
759 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA384_GUID \
760 1.1.1.2 jmcneill { 0xEFA96432, 0xDE33, 0x4DD2, { 0xAE, 0xE6, 0x32, 0x8C, 0x33, 0xDF, 0x77, 0x7A } } // Deprecated
761 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA384 EFI_HASH_ALGORITHM_SHA384_GUID
762 1.1.1.2 jmcneill
763 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA512_GUID \
764 1.1.1.2 jmcneill { 0xCAA4381E, 0x750C, 0x4770, { 0xB8, 0x70, 0x7A, 0x23, 0xB4, 0xE4, 0x21, 0x30 } } // Deprecated
765 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA512 EFI_HASH_ALGORITHM_SHA512_GUID
766 1.1 jakllsch
767 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_MD5_GUID \
768 1.1.1.2 jmcneill { 0x0AF7C79C, 0x65B5, 0x4319, { 0xB0, 0xAE, 0x44, 0xEC, 0x48, 0x4E, 0x4A, 0xD7 } } // Deprecated
769 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_MD5 EFI_HASH_ALGORITHM_MD5_GUID
770 1.1.1.2 jmcneill
771 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID \
772 1.1.1.2 jmcneill { 0x24C5DC2F, 0x53E2, 0x40CA, { 0x9E, 0xD6, 0xA5, 0xD9, 0xA4, 0x9F, 0x46, 0x3B } }
773 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA1_NOPAD EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID
774 1.1.1.2 jmcneill
775 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID \
776 1.1.1.2 jmcneill { 0x8628752A, 0x6CB7, 0x4814, { 0x96, 0xFC, 0x24, 0xA8, 0x15, 0xAC, 0x22, 0x26 } }
777 1.1.1.2 jmcneill #define EFI_HASH_ALGORITHM_SHA256_NOPAD EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID
778 1.1.1.2 jmcneill
779 1.1.1.2 jmcneill
780 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_HASH_PROTOCOL);
781 1.1.1.2 jmcneill
782 1.1.1.2 jmcneill typedef UINT8 EFI_MD5_HASH[16];
783 1.1.1.2 jmcneill typedef UINT8 EFI_SHA1_HASH[20];
784 1.1.1.2 jmcneill typedef UINT8 EFI_SHA224_HASH[28];
785 1.1.1.2 jmcneill typedef UINT8 EFI_SHA256_HASH[32];
786 1.1.1.2 jmcneill typedef UINT8 EFI_SHA384_HASH[48];
787 1.1.1.2 jmcneill typedef UINT8 EFI_SHA512_HASH[64];
788 1.1.1.2 jmcneill typedef union _EFI_HASH_OUTPUT {
789 1.1.1.2 jmcneill EFI_MD5_HASH *Md5Hash;
790 1.1.1.2 jmcneill EFI_SHA1_HASH *Sha1Hash;
791 1.1.1.2 jmcneill EFI_SHA224_HASH *Sha224Hash;
792 1.1.1.2 jmcneill EFI_SHA256_HASH *Sha256Hash;
793 1.1.1.2 jmcneill EFI_SHA384_HASH *Sha384Hash;
794 1.1.1.2 jmcneill EFI_SHA512_HASH *Sha512Hash;
795 1.1.1.2 jmcneill } EFI_HASH_OUTPUT;
796 1.1.1.2 jmcneill
797 1.1.1.2 jmcneill typedef
798 1.1.1.2 jmcneill EFI_STATUS
799 1.1.1.2 jmcneill (EFIAPI *EFI_HASH_GET_HASH_SIZE) (
800 1.1.1.2 jmcneill IN CONST struct _EFI_HASH_PROTOCOL *This,
801 1.1.1.2 jmcneill IN CONST EFI_GUID *HashAlgorithm,
802 1.1.1.2 jmcneill OUT UINTN *HashSize);
803 1.1.1.2 jmcneill
804 1.1.1.2 jmcneill typedef
805 1.1.1.2 jmcneill EFI_STATUS
806 1.1.1.2 jmcneill (EFIAPI *EFI_HASH_HASH) (
807 1.1.1.2 jmcneill IN CONST struct _EFI_HASH_PROTOCOL *This,
808 1.1.1.2 jmcneill IN CONST EFI_GUID *HashAlgorithm,
809 1.1.1.2 jmcneill IN BOOLEAN Extend,
810 1.1.1.2 jmcneill IN CONST UINT8 *Message,
811 1.1.1.2 jmcneill IN UINT64 MessageSize,
812 1.1.1.2 jmcneill IN OUT EFI_HASH_OUTPUT *Hash);
813 1.1.1.2 jmcneill
814 1.1.1.2 jmcneill typedef struct _EFI_HASH_PROTOCOL {
815 1.1.1.2 jmcneill EFI_HASH_GET_HASH_SIZE GetHashSize;
816 1.1.1.2 jmcneill EFI_HASH_HASH Hash;
817 1.1.1.2 jmcneill } EFI_HASH_PROTOCOL;
818 1.1.1.2 jmcneill
819 1.1.1.2 jmcneill typedef struct _EFI_HASH_PROTOCOL _EFI_HASH;
820 1.1.1.2 jmcneill typedef EFI_HASH_PROTOCOL EFI_HASH;
821 1.1.1.2 jmcneill
822 1.1.1.2 jmcneill
823 1.1.1.2 jmcneill typedef struct _EFI_UNICODE_COLLATION_PROTOCOL {
824 1.1 jakllsch
825 1.1 jakllsch // general
826 1.1 jakllsch EFI_UNICODE_STRICOLL StriColl;
827 1.1 jakllsch EFI_UNICODE_METAIMATCH MetaiMatch;
828 1.1 jakllsch EFI_UNICODE_STRLWR StrLwr;
829 1.1 jakllsch EFI_UNICODE_STRUPR StrUpr;
830 1.1 jakllsch
831 1.1 jakllsch // for supporting fat volumes
832 1.1 jakllsch EFI_UNICODE_FATTOSTR FatToStr;
833 1.1 jakllsch EFI_UNICODE_STRTOFAT StrToFat;
834 1.1 jakllsch
835 1.1 jakllsch CHAR8 *SupportedLanguages;
836 1.1.1.2 jmcneill } EFI_UNICODE_COLLATION_PROTOCOL;
837 1.1.1.2 jmcneill
838 1.1.1.2 jmcneill typedef EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_INTERFACE;
839 1.1 jakllsch
840 1.1 jakllsch /* Graphics output protocol */
841 1.1 jakllsch #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
842 1.1.1.2 jmcneill { 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } }
843 1.1 jakllsch typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL;
844 1.1 jakllsch
845 1.1 jakllsch typedef struct {
846 1.1 jakllsch UINT32 RedMask;
847 1.1 jakllsch UINT32 GreenMask;
848 1.1 jakllsch UINT32 BlueMask;
849 1.1 jakllsch UINT32 ReservedMask;
850 1.1 jakllsch } EFI_PIXEL_BITMASK;
851 1.1 jakllsch
852 1.1 jakllsch typedef enum {
853 1.1 jakllsch PixelRedGreenBlueReserved8BitPerColor,
854 1.1 jakllsch PixelBlueGreenRedReserved8BitPerColor,
855 1.1 jakllsch PixelBitMask,
856 1.1 jakllsch PixelBltOnly,
857 1.1 jakllsch PixelFormatMax
858 1.1 jakllsch } EFI_GRAPHICS_PIXEL_FORMAT;
859 1.1 jakllsch
860 1.1 jakllsch typedef struct {
861 1.1 jakllsch UINT32 Version;
862 1.1 jakllsch UINT32 HorizontalResolution;
863 1.1 jakllsch UINT32 VerticalResolution;
864 1.1 jakllsch EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;
865 1.1 jakllsch EFI_PIXEL_BITMASK PixelInformation;
866 1.1 jakllsch UINT32 PixelsPerScanLine;
867 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
868 1.1 jakllsch
869 1.1 jakllsch /**
870 1.1 jakllsch Return the current video mode information.
871 1.1 jakllsch
872 1.1 jakllsch @param This Protocol instance pointer.
873 1.1 jakllsch @param ModeNumber The mode number to return information on.
874 1.1 jakllsch @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
875 1.1 jakllsch @param Info A pointer to callee allocated buffer that returns information about ModeNumber.
876 1.1 jakllsch
877 1.1 jakllsch @retval EFI_SUCCESS Mode information returned.
878 1.1 jakllsch @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.
879 1.1 jakllsch @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode.
880 1.1 jakllsch @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
881 1.1 jakllsch @retval EFI_INVALID_PARAMETER One of the input args was NULL.
882 1.1 jakllsch
883 1.1 jakllsch **/
884 1.1 jakllsch typedef
885 1.1 jakllsch EFI_STATUS
886 1.1 jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
887 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
888 1.1 jakllsch IN UINT32 ModeNumber,
889 1.1 jakllsch OUT UINTN *SizeOfInfo,
890 1.1 jakllsch OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
891 1.1 jakllsch )
892 1.1 jakllsch ;
893 1.1 jakllsch
894 1.1 jakllsch /**
895 1.1 jakllsch Return the current video mode information.
896 1.1 jakllsch
897 1.1 jakllsch @param This Protocol instance pointer.
898 1.1 jakllsch @param ModeNumber The mode number to be set.
899 1.1 jakllsch
900 1.1 jakllsch @retval EFI_SUCCESS Graphics mode was changed.
901 1.1 jakllsch @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
902 1.1 jakllsch @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.
903 1.1 jakllsch
904 1.1 jakllsch **/
905 1.1 jakllsch typedef
906 1.1 jakllsch EFI_STATUS
907 1.1 jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
908 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
909 1.1 jakllsch IN UINT32 ModeNumber
910 1.1 jakllsch );
911 1.1 jakllsch
912 1.1 jakllsch typedef struct {
913 1.1 jakllsch UINT8 Blue;
914 1.1 jakllsch UINT8 Green;
915 1.1 jakllsch UINT8 Red;
916 1.1 jakllsch UINT8 Reserved;
917 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
918 1.1 jakllsch
919 1.1 jakllsch typedef union {
920 1.1 jakllsch EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel;
921 1.1 jakllsch UINT32 Raw;
922 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION;
923 1.1 jakllsch
924 1.1 jakllsch typedef enum {
925 1.1 jakllsch EfiBltVideoFill,
926 1.1 jakllsch EfiBltVideoToBltBuffer,
927 1.1.1.2 jmcneill EfiBltBufferToVideo,
928 1.1 jakllsch EfiBltVideoToVideo,
929 1.1 jakllsch EfiGraphicsOutputBltOperationMax
930 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
931 1.1 jakllsch
932 1.1 jakllsch /**
933 1.1 jakllsch The following table defines actions for BltOperations:
934 1.1 jakllsch
935 1.1.1.2 jmcneill <B>EfiBltVideoFill</B> - Write data from the BltBuffer pixel (SourceX, SourceY)
936 1.1.1.2 jmcneill directly to every pixel of the video display rectangle
937 1.1.1.2 jmcneill (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
938 1.1 jakllsch Only one pixel will be used from the BltBuffer. Delta is NOT used.
939 1.1 jakllsch
940 1.1.1.2 jmcneill <B>EfiBltVideoToBltBuffer</B> - Read data from the video display rectangle
941 1.1.1.2 jmcneill (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
942 1.1.1.2 jmcneill the BltBuffer rectangle (DestinationX, DestinationY )
943 1.1.1.2 jmcneill (DestinationX + Width, DestinationY + Height). If DestinationX or
944 1.1.1.2 jmcneill DestinationY is not zero then Delta must be set to the length in bytes
945 1.1 jakllsch of a row in the BltBuffer.
946 1.1 jakllsch
947 1.1.1.2 jmcneill <B>EfiBltBufferToVideo</B> - Write data from the BltBuffer rectangle
948 1.1.1.2 jmcneill (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
949 1.1.1.2 jmcneill video display rectangle (DestinationX, DestinationY)
950 1.1.1.2 jmcneill (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
951 1.1.1.2 jmcneill not zero then Delta must be set to the length in bytes of a row in the
952 1.1 jakllsch BltBuffer.
953 1.1 jakllsch
954 1.1 jakllsch <B>EfiBltVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)
955 1.1.1.2 jmcneill (SourceX + Width, SourceY + Height) .to the video display rectangle
956 1.1.1.2 jmcneill (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
957 1.1 jakllsch The BltBuffer and Delta are not used in this mode.
958 1.1 jakllsch
959 1.1 jakllsch @param This Protocol instance pointer.
960 1.1 jakllsch @param BltBuffer Buffer containing data to blit into video buffer. This
961 1.1 jakllsch buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
962 1.1 jakllsch @param BltOperation Operation to perform on BlitBuffer and video memory
963 1.1 jakllsch @param SourceX X coordinate of source for the BltBuffer.
964 1.1 jakllsch @param SourceY Y coordinate of source for the BltBuffer.
965 1.1 jakllsch @param DestinationX X coordinate of destination for the BltBuffer.
966 1.1 jakllsch @param DestinationY Y coordinate of destination for the BltBuffer.
967 1.1 jakllsch @param Width Width of rectangle in BltBuffer in pixels.
968 1.1 jakllsch @param Height Hight of rectangle in BltBuffer in pixels.
969 1.1 jakllsch @param Delta OPTIONAL
970 1.1 jakllsch
971 1.1 jakllsch @retval EFI_SUCCESS The Blt operation completed.
972 1.1 jakllsch @retval EFI_INVALID_PARAMETER BltOperation is not valid.
973 1.1 jakllsch @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.
974 1.1 jakllsch
975 1.1 jakllsch **/
976 1.1 jakllsch typedef
977 1.1 jakllsch EFI_STATUS
978 1.1 jakllsch (EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
979 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
980 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL
981 1.1 jakllsch IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
982 1.1 jakllsch IN UINTN SourceX,
983 1.1 jakllsch IN UINTN SourceY,
984 1.1 jakllsch IN UINTN DestinationX,
985 1.1 jakllsch IN UINTN DestinationY,
986 1.1 jakllsch IN UINTN Width,
987 1.1 jakllsch IN UINTN Height,
988 1.1 jakllsch IN UINTN Delta OPTIONAL
989 1.1 jakllsch );
990 1.1 jakllsch
991 1.1 jakllsch typedef struct {
992 1.1 jakllsch UINT32 MaxMode;
993 1.1 jakllsch UINT32 Mode;
994 1.1 jakllsch EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;
995 1.1 jakllsch UINTN SizeOfInfo;
996 1.1 jakllsch EFI_PHYSICAL_ADDRESS FrameBufferBase;
997 1.1 jakllsch UINTN FrameBufferSize;
998 1.1 jakllsch } EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
999 1.1 jakllsch
1000 1.1 jakllsch struct _EFI_GRAPHICS_OUTPUT_PROTOCOL {
1001 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode;
1002 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode;
1003 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt;
1004 1.1 jakllsch EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode;
1005 1.1 jakllsch };
1006 1.1 jakllsch
1007 1.1.1.2 jmcneill
1008 1.1.1.2 jmcneill
1009 1.1.1.2 jmcneill /*
1010 1.1.1.2 jmcneill * EFI EDID Discovered Protocol
1011 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 11.9
1012 1.1.1.2 jmcneill */
1013 1.1.1.2 jmcneill #define EFI_EDID_DISCOVERED_PROTOCOL_GUID \
1014 1.1.1.2 jmcneill { 0x1C0C34F6, 0xD380, 0x41FA, { 0xA0, 0x49, 0x8a, 0xD0, 0x6C, 0x1A, 0x66, 0xAA} }
1015 1.1.1.2 jmcneill
1016 1.1.1.2 jmcneill typedef struct _EFI_EDID_DISCOVERED_PROTOCOL {
1017 1.1.1.2 jmcneill UINT32 SizeOfEdid;
1018 1.1.1.2 jmcneill UINT8 *Edid;
1019 1.1.1.2 jmcneill } EFI_EDID_DISCOVERED_PROTOCOL;
1020 1.1.1.2 jmcneill
1021 1.1.1.2 jmcneill
1022 1.1.1.2 jmcneill
1023 1.1.1.2 jmcneill /*
1024 1.1.1.2 jmcneill * EFI EDID Active Protocol
1025 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 11.9
1026 1.1.1.2 jmcneill */
1027 1.1.1.2 jmcneill #define EFI_EDID_ACTIVE_PROTOCOL_GUID \
1028 1.1.1.2 jmcneill { 0xBD8C1056, 0x9F36, 0x44EC, { 0x92, 0xA8, 0xA6, 0x33, 0x7F, 0x81, 0x79, 0x86} }
1029 1.1.1.2 jmcneill
1030 1.1.1.2 jmcneill typedef struct _EFI_EDID_ACTIVE_PROTOCOL {
1031 1.1.1.2 jmcneill UINT32 SizeOfEdid;
1032 1.1.1.2 jmcneill UINT8 *Edid;
1033 1.1.1.2 jmcneill } EFI_EDID_ACTIVE_PROTOCOL;
1034 1.1.1.2 jmcneill
1035 1.1.1.2 jmcneill
1036 1.1.1.2 jmcneill
1037 1.1.1.2 jmcneill /*
1038 1.1.1.2 jmcneill * EFI EDID Override Protocol
1039 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 11.9
1040 1.1.1.2 jmcneill */
1041 1.1.1.2 jmcneill #define EFI_EDID_OVERRIDE_PROTOCOL_GUID \
1042 1.1.1.2 jmcneill { 0x48ECB431, 0xFB72, 0x45C0, { 0xA9, 0x22, 0xF4, 0x58, 0xFE, 0x04, 0x0B, 0xD5} }
1043 1.1.1.2 jmcneill
1044 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_EDID_OVERRIDE_PROTOCOL);
1045 1.1.1.2 jmcneill
1046 1.1.1.2 jmcneill typedef
1047 1.1.1.2 jmcneill EFI_STATUS
1048 1.1.1.2 jmcneill (EFIAPI *EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID) (
1049 1.1.1.2 jmcneill IN struct _EFI_EDID_OVERRIDE_PROTOCOL *This,
1050 1.1.1.2 jmcneill IN EFI_HANDLE *ChildHandle,
1051 1.1.1.2 jmcneill OUT UINT32 *Attributes,
1052 1.1.1.2 jmcneill IN OUT UINTN *EdidSize,
1053 1.1.1.2 jmcneill IN OUT UINT8 **Edid);
1054 1.1.1.2 jmcneill
1055 1.1.1.2 jmcneill typedef struct _EFI_EDID_OVERRIDE_PROTOCOL {
1056 1.1.1.2 jmcneill EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid;
1057 1.1.1.2 jmcneill } EFI_EDID_OVERRIDE_PROTOCOL;
1058 1.1.1.2 jmcneill
1059 1.1.1.2 jmcneill
1060 1.1.1.2 jmcneill
1061 1.1 jakllsch INTERFACE_DECL(_EFI_SERVICE_BINDING);
1062 1.1 jakllsch
1063 1.1 jakllsch typedef
1064 1.1 jakllsch EFI_STATUS
1065 1.1 jakllsch (EFIAPI *EFI_SERVICE_BINDING_CREATE_CHILD) (
1066 1.1 jakllsch IN struct _EFI_SERVICE_BINDING *This,
1067 1.1 jakllsch IN EFI_HANDLE *ChildHandle
1068 1.1 jakllsch );
1069 1.1 jakllsch
1070 1.1 jakllsch typedef
1071 1.1 jakllsch EFI_STATUS
1072 1.1 jakllsch (EFIAPI *EFI_SERVICE_BINDING_DESTROY_CHILD) (
1073 1.1 jakllsch IN struct _EFI_SERVICE_BINDING *This,
1074 1.1 jakllsch IN EFI_HANDLE ChildHandle
1075 1.1 jakllsch );
1076 1.1 jakllsch
1077 1.1 jakllsch typedef struct _EFI_SERVICE_BINDING {
1078 1.1 jakllsch EFI_SERVICE_BINDING_CREATE_CHILD CreateChild;
1079 1.1 jakllsch EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild;
1080 1.1 jakllsch } EFI_SERVICE_BINDING;
1081 1.1 jakllsch
1082 1.1 jakllsch
1083 1.1.1.2 jmcneill
1084 1.1.1.2 jmcneill /*
1085 1.1.1.2 jmcneill * EFI Driver Binding Protocol
1086 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 10.1
1087 1.1.1.2 jmcneill */
1088 1.1.1.2 jmcneill #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
1089 1.1.1.2 jmcneill { 0x18A031AB, 0xB443, 0x4D1A, { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71} }
1090 1.1.1.2 jmcneill #define DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL_GUID
1091 1.1.1.2 jmcneill
1092 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DRIVER_BINDING_PROTOCOL);
1093 1.1.1.2 jmcneill
1094 1.1.1.2 jmcneill typedef
1095 1.1.1.2 jmcneill EFI_STATUS
1096 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED) (
1097 1.1.1.2 jmcneill IN struct _EFI_DRIVER_BINDING_PROTOCOL *This,
1098 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1099 1.1.1.2 jmcneill IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL);
1100 1.1.1.2 jmcneill
1101 1.1.1.2 jmcneill typedef
1102 1.1.1.2 jmcneill EFI_STATUS
1103 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_START) (
1104 1.1.1.2 jmcneill IN struct _EFI_DRIVER_BINDING_PROTOCOL *This,
1105 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1106 1.1.1.2 jmcneill IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL);
1107 1.1.1.2 jmcneill
1108 1.1.1.2 jmcneill typedef
1109 1.1.1.2 jmcneill EFI_STATUS
1110 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_BINDING_PROTOCOL_STOP) (
1111 1.1.1.2 jmcneill IN struct _EFI_DRIVER_BINDING_PROTOCOL *This,
1112 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1113 1.1.1.2 jmcneill IN UINTN NumberOfChildren,
1114 1.1.1.2 jmcneill IN EFI_HANDLE *ChildHandleBuffer OPTIONAL);
1115 1.1.1.2 jmcneill
1116 1.1.1.2 jmcneill typedef struct _EFI_DRIVER_BINDING_PROTOCOL {
1117 1.1.1.2 jmcneill EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED Supported;
1118 1.1.1.2 jmcneill EFI_DRIVER_BINDING_PROTOCOL_START Start;
1119 1.1.1.2 jmcneill EFI_DRIVER_BINDING_PROTOCOL_STOP Stop;
1120 1.1.1.2 jmcneill UINT32 Version;
1121 1.1.1.2 jmcneill EFI_HANDLE ImageHandle;
1122 1.1.1.2 jmcneill EFI_HANDLE DriverBindingHandle;
1123 1.1.1.2 jmcneill } EFI_DRIVER_BINDING_PROTOCOL;
1124 1.1.1.2 jmcneill
1125 1.1.1.2 jmcneill typedef struct _EFI_DRIVER_BINDING_PROTOCOL _EFI_DRIVER_BINDING;
1126 1.1.1.2 jmcneill typedef EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING;
1127 1.1.1.2 jmcneill
1128 1.1.1.2 jmcneill
1129 1.1.1.2 jmcneill /*
1130 1.1.1.2 jmcneill * Backwards compatibility with older GNU-EFI versions. Deprecated.
1131 1.1.1.2 jmcneill */
1132 1.1.1.2 jmcneill #define EFI_DRIVER_SUPPORTED EFI_DRIVER_BINDING_PROTOCOL_SUPPORTED
1133 1.1.1.2 jmcneill #define EFI_DRIVER_START EFI_DRIVER_BINDING_PROTOCOL_START
1134 1.1.1.2 jmcneill #define EFI_DRIVER_STOP EFI_DRIVER_BINDING_PROTOCOL_STOP
1135 1.1.1.2 jmcneill
1136 1.1.1.2 jmcneill
1137 1.1.1.2 jmcneill
1138 1.1.1.2 jmcneill /*
1139 1.1.1.2 jmcneill * EFI Component Name Protocol
1140 1.1.1.2 jmcneill * Deprecated - use EFI Component Name 2 Protocol instead
1141 1.1.1.2 jmcneill */
1142 1.1.1.2 jmcneill #define EFI_COMPONENT_NAME_PROTOCOL_GUID \
1143 1.1.1.2 jmcneill {0x107A772C, 0xD5E1, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
1144 1.1.1.2 jmcneill #define COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME_PROTOCOL_GUID
1145 1.1.1.2 jmcneill
1146 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_COMPONENT_NAME_PROTOCOL);
1147 1.1.1.2 jmcneill
1148 1.1.1.2 jmcneill typedef
1149 1.1.1.2 jmcneill EFI_STATUS
1150 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME_GET_DRIVER_NAME) (
1151 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME_PROTOCOL *This,
1152 1.1.1.2 jmcneill IN CHAR8 *Language,
1153 1.1.1.2 jmcneill OUT CHAR16 **DriverName);
1154 1.1.1.2 jmcneill
1155 1.1.1.2 jmcneill typedef
1156 1.1.1.2 jmcneill EFI_STATUS
1157 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME_GET_CONTROLLER_NAME) (
1158 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME_PROTOCOL *This,
1159 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1160 1.1.1.2 jmcneill IN EFI_HANDLE ChildHandle OPTIONAL,
1161 1.1.1.2 jmcneill IN CHAR8 *Language,
1162 1.1.1.2 jmcneill OUT CHAR16 **ControllerName);
1163 1.1.1.2 jmcneill
1164 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME_PROTOCOL {
1165 1.1.1.2 jmcneill EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName;
1166 1.1.1.2 jmcneill EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName;
1167 1.1.1.2 jmcneill CHAR8 *SupportedLanguages;
1168 1.1.1.2 jmcneill } EFI_COMPONENT_NAME_PROTOCOL;
1169 1.1.1.2 jmcneill
1170 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME_PROTOCOL _EFI_COMPONENT_NAME;
1171 1.1.1.2 jmcneill typedef EFI_COMPONENT_NAME_PROTOCOL EFI_COMPONENT_NAME;
1172 1.1.1.2 jmcneill
1173 1.1.1.2 jmcneill
1174 1.1.1.2 jmcneill /*
1175 1.1.1.2 jmcneill * EFI Component Name 2 Protocol
1176 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 10.5
1177 1.1.1.2 jmcneill */
1178 1.1.1.2 jmcneill #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
1179 1.1.1.2 jmcneill {0x6A7A5CFF, 0xE8D9, 0x4F70, { 0xBA, 0xDA, 0x75, 0xAB, 0x30, 0x25, 0xCE, 0x14} }
1180 1.1.1.2 jmcneill #define COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL_GUID
1181 1.1.1.2 jmcneill
1182 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_COMPONENT_NAME2_PROTOCOL);
1183 1.1.1.2 jmcneill
1184 1.1.1.2 jmcneill typedef
1185 1.1.1.2 jmcneill EFI_STATUS
1186 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME2_GET_DRIVER_NAME) (
1187 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME2_PROTOCOL *This,
1188 1.1.1.2 jmcneill IN CHAR8 *Language,
1189 1.1.1.2 jmcneill OUT CHAR16 **DriverName);
1190 1.1.1.2 jmcneill
1191 1.1.1.2 jmcneill typedef
1192 1.1.1.2 jmcneill EFI_STATUS
1193 1.1.1.2 jmcneill (EFIAPI *EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) (
1194 1.1.1.2 jmcneill IN struct _EFI_COMPONENT_NAME2_PROTOCOL *This,
1195 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1196 1.1.1.2 jmcneill IN EFI_HANDLE ChildHandle OPTIONAL,
1197 1.1.1.2 jmcneill IN CHAR8 *Language,
1198 1.1.1.2 jmcneill OUT CHAR16 **ControllerName);
1199 1.1.1.2 jmcneill
1200 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME2_PROTOCOL {
1201 1.1.1.2 jmcneill EFI_COMPONENT_NAME2_GET_DRIVER_NAME GetDriverName;
1202 1.1.1.2 jmcneill EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME GetControllerName;
1203 1.1.1.2 jmcneill CHAR8 *SupportedLanguages;
1204 1.1.1.2 jmcneill } EFI_COMPONENT_NAME2_PROTOCOL;
1205 1.1.1.2 jmcneill
1206 1.1.1.2 jmcneill typedef struct _EFI_COMPONENT_NAME2_PROTOCOL _EFI_COMPONENT_NAME2;
1207 1.1.1.2 jmcneill typedef EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2;
1208 1.1.1.2 jmcneill
1209 1.1.1.2 jmcneill
1210 1.1.1.2 jmcneill
1211 1.1.1.2 jmcneill /*
1212 1.1.1.2 jmcneill * EFI Loaded Image Protocol
1213 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 8.1
1214 1.1.1.2 jmcneill */
1215 1.1.1.2 jmcneill #define EFI_LOADED_IMAGE_PROTOCOL_GUID \
1216 1.1.1.2 jmcneill { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
1217 1.1.1.2 jmcneill #define LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL_GUID
1218 1.1.1.2 jmcneill
1219 1.1.1.2 jmcneill #define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000
1220 1.1.1.2 jmcneill #define EFI_IMAGE_INFORMATION_REVISION EFI_LOADED_IMAGE_PROTOCOL_REVISION
1221 1.1.1.2 jmcneill
1222 1.1.1.2 jmcneill typedef
1223 1.1.1.2 jmcneill EFI_STATUS
1224 1.1.1.2 jmcneill (EFIAPI *EFI_IMAGE_UNLOAD) (
1225 1.1.1.2 jmcneill IN EFI_HANDLE ImageHandle
1226 1.1.1.2 jmcneill );
1227 1.1.1.2 jmcneill
1228 1.1.1.2 jmcneill typedef struct {
1229 1.1.1.2 jmcneill UINT32 Revision;
1230 1.1.1.2 jmcneill EFI_HANDLE ParentHandle;
1231 1.1.1.2 jmcneill struct _EFI_SYSTEM_TABLE *SystemTable;
1232 1.1.1.2 jmcneill
1233 1.1.1.2 jmcneill // Source location of image
1234 1.1.1.2 jmcneill EFI_HANDLE DeviceHandle;
1235 1.1.1.2 jmcneill EFI_DEVICE_PATH *FilePath;
1236 1.1.1.2 jmcneill VOID *Reserved;
1237 1.1.1.2 jmcneill
1238 1.1.1.2 jmcneill // Images load options
1239 1.1.1.2 jmcneill UINT32 LoadOptionsSize;
1240 1.1.1.2 jmcneill VOID *LoadOptions;
1241 1.1.1.2 jmcneill
1242 1.1.1.2 jmcneill // Location of where image was loaded
1243 1.1.1.2 jmcneill VOID *ImageBase;
1244 1.1.1.2 jmcneill UINT64 ImageSize;
1245 1.1.1.2 jmcneill EFI_MEMORY_TYPE ImageCodeType;
1246 1.1.1.2 jmcneill EFI_MEMORY_TYPE ImageDataType;
1247 1.1.1.2 jmcneill
1248 1.1.1.2 jmcneill // If the driver image supports a dynamic unload request
1249 1.1.1.2 jmcneill EFI_IMAGE_UNLOAD Unload;
1250 1.1.1.2 jmcneill } EFI_LOADED_IMAGE_PROTOCOL;
1251 1.1.1.2 jmcneill
1252 1.1.1.2 jmcneill typedef EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE;
1253 1.1.1.2 jmcneill
1254 1.1.1.3 jmcneill #define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \
1255 1.1.1.3 jmcneill {0xbc62157e, 0x3e33, 0x4fec, {0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf} }
1256 1.1.1.2 jmcneill
1257 1.1.1.2 jmcneill /*
1258 1.1.1.2 jmcneill * Random Number Generator Protocol
1259 1.1.1.2 jmcneill * UEFI Specification Version 2.5 Section 35.5
1260 1.1.1.2 jmcneill */
1261 1.1.1.2 jmcneill #define EFI_RNG_PROTOCOL_GUID \
1262 1.1.1.2 jmcneill { 0x3152bca5, 0xeade, 0x433d, {0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44} }
1263 1.1.1.2 jmcneill
1264 1.1.1.2 jmcneill typedef EFI_GUID EFI_RNG_ALGORITHM;
1265 1.1.1.2 jmcneill
1266 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_SP800_90_HASH_256_GUID \
1267 1.1.1.2 jmcneill {0xa7af67cb, 0x603b, 0x4d42, {0xba, 0x21, 0x70, 0xbf, 0xb6, 0x29, 0x3f, 0x96} }
1268 1.1.1.2 jmcneill
1269 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_SP800_90_HMAC_256_GUID \
1270 1.1.1.2 jmcneill {0xc5149b43, 0xae85, 0x4f53, {0x99, 0x82, 0xb9, 0x43, 0x35, 0xd3, 0xa9, 0xe7} }
1271 1.1.1.2 jmcneill
1272 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_SP800_90_CTR_256_GUID \
1273 1.1.1.2 jmcneill {0x44f0de6e, 0x4d8c, 0x4045, {0xa8, 0xc7, 0x4d, 0xd1, 0x68, 0x85, 0x6b, 0x9e} }
1274 1.1.1.2 jmcneill
1275 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_X9_31_3DES_GUID \
1276 1.1.1.2 jmcneill {0x63c4785a, 0xca34, 0x4012, {0xa3, 0xc8, 0x0b, 0x6a, 0x32, 0x4f, 0x55, 0x46} }
1277 1.1.1.2 jmcneill
1278 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_X9_31_AES_GUID \
1279 1.1.1.2 jmcneill {0xacd03321, 0x777e, 0x4d3d, {0xb1, 0xc8, 0x20, 0xcf, 0xd8, 0x88, 0x20, 0xc9} }
1280 1.1.1.2 jmcneill
1281 1.1.1.2 jmcneill #define EFI_RNG_ALGORITHM_RAW \
1282 1.1.1.2 jmcneill {0xe43176d7, 0xb6e8, 0x4827, {0xb7, 0x84, 0x7f, 0xfd, 0xc4, 0xb6, 0x85, 0x61} }
1283 1.1.1.2 jmcneill
1284 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_RNG_PROTOCOL);
1285 1.1.1.2 jmcneill
1286 1.1.1.2 jmcneill typedef
1287 1.1.1.2 jmcneill EFI_STATUS
1288 1.1.1.2 jmcneill (EFIAPI *EFI_RNG_GET_INFO) (
1289 1.1.1.2 jmcneill IN struct _EFI_RNG_PROTOCOL *This,
1290 1.1.1.2 jmcneill IN OUT UINTN *RNGAlgorithmListSize,
1291 1.1.1.2 jmcneill OUT EFI_RNG_ALGORITHM *RNGAlgorithmList
1292 1.1.1.2 jmcneill );
1293 1.1.1.2 jmcneill
1294 1.1.1.2 jmcneill typedef
1295 1.1.1.2 jmcneill EFI_STATUS
1296 1.1.1.2 jmcneill (EFIAPI *EFI_RNG_GET_RNG) (
1297 1.1.1.2 jmcneill IN struct _EFI_RNG_PROTOCOL *This,
1298 1.1.1.2 jmcneill IN EFI_RNG_ALGORITHM *RNGAlgorithm, OPTIONAL
1299 1.1.1.2 jmcneill IN UINTN RNGValueLength,
1300 1.1.1.2 jmcneill OUT UINT8 *RNGValue
1301 1.1.1.2 jmcneill );
1302 1.1.1.2 jmcneill
1303 1.1.1.2 jmcneill typedef struct _EFI_RNG_PROTOCOL {
1304 1.1.1.2 jmcneill EFI_RNG_GET_INFO GetInfo;
1305 1.1.1.2 jmcneill EFI_RNG_GET_RNG GetRNG;
1306 1.1.1.2 jmcneill } EFI_RNG_PROTOCOL;
1307 1.1.1.2 jmcneill
1308 1.1.1.2 jmcneill
1309 1.1.1.2 jmcneill //
1310 1.1.1.2 jmcneill // EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL
1311 1.1.1.2 jmcneill //
1312 1.1.1.2 jmcneill
1313 1.1.1.2 jmcneill #define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID \
1314 1.1.1.2 jmcneill { 0x6b30c738, 0xa391, 0x11d4, {0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1315 1.1.1.2 jmcneill
1316 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL);
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) (
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_HANDLE *DriverImageHandle);
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_GET_DRIVER_PATH) (
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 OUT EFI_DEVICE_PATH **DriverImagePath);
1331 1.1.1.2 jmcneill
1332 1.1.1.2 jmcneill typedef
1333 1.1.1.2 jmcneill EFI_STATUS
1334 1.1.1.2 jmcneill (EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED) (
1335 1.1.1.2 jmcneill IN struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,
1336 1.1.1.2 jmcneill IN EFI_HANDLE ControllerHandle,
1337 1.1.1.2 jmcneill IN EFI_DEVICE_PATH *DriverImagePath,
1338 1.1.1.2 jmcneill IN EFI_HANDLE DriverImageHandle);
1339 1.1.1.2 jmcneill
1340 1.1.1.2 jmcneill typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL {
1341 1.1.1.2 jmcneill EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver;
1342 1.1.1.2 jmcneill EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath;
1343 1.1.1.2 jmcneill EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded;
1344 1.1.1.2 jmcneill } EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL;
1345 1.1.1.2 jmcneill
1346 1.1.1.2 jmcneill //
1347 1.1.1.2 jmcneill // EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
1348 1.1.1.2 jmcneill //
1349 1.1.1.2 jmcneill
1350 1.1.1.2 jmcneill #define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID \
1351 1.1.1.2 jmcneill { 0x3bc1b285, 0x8a15, 0x4a82, {0xaa, 0xbf, 0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65} }
1352 1.1.1.2 jmcneill
1353 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL);
1354 1.1.1.2 jmcneill
1355 1.1.1.2 jmcneill typedef
1356 1.1.1.2 jmcneill EFI_STATUS
1357 1.1.1.2 jmcneill (EFIAPI *EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER) (
1358 1.1.1.2 jmcneill IN struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *This,
1359 1.1.1.2 jmcneill IN OUT EFI_HANDLE *DriverImageHandle);
1360 1.1.1.2 jmcneill
1361 1.1.1.2 jmcneill typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL {
1362 1.1.1.2 jmcneill EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver;
1363 1.1.1.2 jmcneill } EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL;
1364 1.1.1.2 jmcneill
1365 1.1.1.2 jmcneill //
1366 1.1.1.2 jmcneill // EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
1367 1.1.1.2 jmcneill //
1368 1.1.1.2 jmcneill
1369 1.1.1.2 jmcneill #define EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID \
1370 1.1.1.2 jmcneill { 0xb1ee129e, 0xda36, 0x4181, {0x91, 0xf8, 0x04, 0xa4, 0x92, 0x37, 0x66, 0xa7} }
1371 1.1.1.2 jmcneill
1372 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL);
1373 1.1.1.2 jmcneill
1374 1.1.1.2 jmcneill typedef
1375 1.1.1.2 jmcneill UINT32
1376 1.1.1.2 jmcneill (EFIAPI *EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION) (
1377 1.1.1.2 jmcneill IN struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL *This);
1378 1.1.1.2 jmcneill
1379 1.1.1.2 jmcneill typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL {
1380 1.1.1.2 jmcneill EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion;
1381 1.1.1.2 jmcneill } EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL;
1382 1.1.1.2 jmcneill
1383 1.1.1.2 jmcneill //
1384 1.1.1.2 jmcneill // EFI_EBC_PROTOCOL
1385 1.1.1.2 jmcneill //
1386 1.1.1.2 jmcneill
1387 1.1.1.2 jmcneill #define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
1388 1.1.1.2 jmcneill {0x13ac6dd1, 0x73d0, 0x11d4, {0xb0, 0x6b, 0x00, 0xaa, 0x00, 0xbd, 0x6d, 0xe7} }
1389 1.1.1.2 jmcneill
1390 1.1.1.2 jmcneill #define EFI_EBC_PROTOCOL_GUID EFI_EBC_INTERPRETER_PROTOCOL_GUID
1391 1.1.1.2 jmcneill
1392 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_EBC_PROTOCOL);
1393 1.1.1.2 jmcneill
1394 1.1.1.2 jmcneill typedef
1395 1.1.1.2 jmcneill EFI_STATUS
1396 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_CREATE_THUNK)(
1397 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This,
1398 1.1.1.2 jmcneill IN EFI_HANDLE ImageHandle,
1399 1.1.1.2 jmcneill IN VOID *EbcEntryPoint,
1400 1.1.1.2 jmcneill OUT VOID **Thunk);
1401 1.1.1.2 jmcneill
1402 1.1.1.2 jmcneill typedef
1403 1.1.1.2 jmcneill EFI_STATUS
1404 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_UNLOAD_IMAGE)(
1405 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This,
1406 1.1.1.2 jmcneill IN EFI_HANDLE ImageHandle);
1407 1.1.1.2 jmcneill
1408 1.1.1.2 jmcneill typedef
1409 1.1.1.2 jmcneill EFI_STATUS
1410 1.1.1.2 jmcneill (EFIAPI *EBC_ICACHE_FLUSH)(
1411 1.1.1.2 jmcneill IN EFI_PHYSICAL_ADDRESS Start,
1412 1.1.1.2 jmcneill IN UINT64 Length);
1413 1.1.1.2 jmcneill
1414 1.1.1.2 jmcneill typedef
1415 1.1.1.2 jmcneill EFI_STATUS
1416 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_REGISTER_ICACHE_FLUSH)(
1417 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This,
1418 1.1.1.2 jmcneill IN EBC_ICACHE_FLUSH Flush);
1419 1.1.1.2 jmcneill
1420 1.1.1.2 jmcneill typedef
1421 1.1.1.2 jmcneill EFI_STATUS
1422 1.1.1.2 jmcneill (EFIAPI *EFI_EBC_GET_VERSION)(
1423 1.1.1.2 jmcneill IN struct _EFI_EBC_PROTOCOL *This,
1424 1.1.1.2 jmcneill IN OUT UINT64 *Version);
1425 1.1.1.2 jmcneill
1426 1.1.1.2 jmcneill typedef struct _EFI_EBC_PROTOCOL {
1427 1.1.1.2 jmcneill EFI_EBC_CREATE_THUNK CreateThunk;
1428 1.1.1.2 jmcneill EFI_EBC_UNLOAD_IMAGE UnloadImage;
1429 1.1.1.2 jmcneill EFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush;
1430 1.1.1.2 jmcneill EFI_EBC_GET_VERSION GetVersion;
1431 1.1.1.2 jmcneill } EFI_EBC_PROTOCOL;
1432 1.1.1.2 jmcneill
1433 1.1.1.2 jmcneill #endif
1434