]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Framework/Include/TianoSpecApi.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Framework / Include / TianoSpecApi.h
1 /*++
2
3 Copyright (c) 2004 - 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 TianoSpecApi.h
15
16 Abstract:
17
18 Tiano intrinsic definitions in Tiano spec.
19
20
21 --*/
22
23 #ifndef _TIANO_SPEC_API_H_
24 #define _TIANO_SPEC_API_H_
25
26
27 #if ((TIANO_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION < 0x00020000))
28 //
29 // Prior to UEFI 2.0 Tiano extended these enums. This was replaced by
30 // CreateEventEx() Event Groups in UEFI 2.0
31 //
32 #define EFI_EVENT_NOTIFY_SIGNAL_ALL 0x00000400
33
34 #define EFI_EVENT_SIGNAL_READY_TO_BOOT 0x00000203
35 #define EFI_EVENT_SIGNAL_LEGACY_BOOT 0x00000204
36 #endif
37
38 typedef
39 EFI_BOOTSERVICE
40 EFI_STATUS
41 (EFIAPI *EFI_ADD_MEMORY_SPACE) (
42 IN EFI_GCD_MEMORY_TYPE GcdMemoryType,
43 IN EFI_PHYSICAL_ADDRESS BaseAddress,
44 IN UINT64 Length,
45 IN UINT64 Capabilities
46 )
47 /*++
48
49 Routine Description:
50
51 Adds reserved memory, system memory, or memory-mapped I/O resources to the
52 global coherency domain of the processor.
53
54 Arguments:
55
56 GcdMemoryType - Memory type of the memory space.
57
58 BaseAddress - Base address of the memory space.
59
60 Length - Length of the memory space.
61
62 Capabilities - alterable attributes of the memory space.
63
64 Returns:
65
66 EFI_SUCCESS - Merged this memory space into GCD map.
67
68 --*/
69 ;
70
71 typedef
72 EFI_BOOTSERVICE
73 EFI_STATUS
74 (EFIAPI *EFI_ALLOCATE_MEMORY_SPACE) (
75 IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,
76 IN EFI_GCD_MEMORY_TYPE GcdMemoryType,
77 IN UINTN Alignment,
78 IN UINT64 Length,
79 IN OUT EFI_PHYSICAL_ADDRESS * BaseAddress,
80 IN EFI_HANDLE ImageHandle,
81 IN EFI_HANDLE DeviceHandle OPTIONAL
82 )
83 /*++
84
85 Routine Description:
86
87 Allocates nonexistent memory, reserved memory, system memory, or memorymapped
88 I/O resources from the global coherency domain of the processor.
89
90 Arguments:
91
92 GcdAllocateType - The type of allocate operation
93
94 GcdMemoryType - The desired memory type
95
96 Alignment - Align with 2^Alignment
97
98 Length - Length to allocate
99
100 BaseAddress - Base address to allocate
101
102 Imagehandle - The image handle consume the allocated space.
103
104 DeviceHandle - The device handle consume the allocated space.
105
106 Returns:
107
108 EFI_INVALID_PARAMETER - Invalid parameter.
109
110 EFI_NOT_FOUND - No descriptor contains the desired space.
111
112 EFI_SUCCESS - Memory space successfully allocated.
113
114 --*/
115 ;
116
117 typedef
118 EFI_BOOTSERVICE
119 EFI_STATUS
120 (EFIAPI *EFI_FREE_MEMORY_SPACE) (
121 IN EFI_PHYSICAL_ADDRESS BaseAddress,
122 IN UINT64 Length
123 )
124 /*++
125
126 Routine Description:Routine Description:
127
128 Frees nonexistent memory, reserved memory, system memory, or memory-mapped
129 I/O resources from the global coherency domain of the processor.
130
131 Arguments:
132
133 BaseAddress - Base address of the segment.
134
135 Length - Length of the segment.
136
137 Returns:
138
139 EFI_SUCCESS - Space successfully freed.
140
141 --*/
142 ;
143
144 typedef
145 EFI_BOOTSERVICE
146 EFI_STATUS
147 (EFIAPI *EFI_REMOVE_MEMORY_SPACE) (
148 IN EFI_PHYSICAL_ADDRESS BaseAddress,
149 IN UINT64 Length
150 )
151 /*++
152
153 Routine Description:Routine Description:
154
155 Removes reserved memory, system memory, or memory-mapped I/O resources from
156 the global coherency domain of the processor.
157
158 Arguments:
159
160 BaseAddress - Base address of the memory space.
161
162 Length - Length of the memory space.
163
164 Returns:
165
166 EFI_SUCCESS - Successfully remove a segment of memory space.
167
168 --*/
169 ;
170
171 typedef
172 EFI_BOOTSERVICE
173 EFI_STATUS
174 (EFIAPI *EFI_GET_MEMORY_SPACE_DESCRIPTOR) (
175 IN EFI_PHYSICAL_ADDRESS BaseAddress,
176 OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR * Descriptor
177 )
178 /*++
179
180 Routine Description:
181
182 Retrieves the descriptor for a memory region containing a specified address.
183
184 Arguments:
185
186 BaseAddress - Specified start address
187
188 Descriptor - Specified length
189
190 Returns:
191
192 EFI_INVALID_PARAMETER - Invalid parameter
193
194 EFI_SUCCESS - Successfully get memory space descriptor.
195
196 --*/
197 ;
198
199 typedef
200 EFI_BOOTSERVICE
201 EFI_STATUS
202 (EFIAPI *EFI_SET_MEMORY_SPACE_ATTRIBUTES) (
203 IN EFI_PHYSICAL_ADDRESS BaseAddress,
204 IN UINT64 Length,
205 IN UINT64 Attributes
206 )
207 /*++
208
209 Routine Description:
210
211 Modifies the attributes for a memory region in the global coherency domain of the
212 processor.
213
214 Arguments:
215
216 BaseAddress - Specified start address
217
218 Length - Specified length
219
220 Attributes - Specified attributes
221
222 Returns:
223
224 EFI_SUCCESS - Successfully set attribute of a segment of memory space.
225
226 --*/
227 ;
228
229 typedef
230 EFI_BOOTSERVICE
231 EFI_STATUS
232 (EFIAPI *EFI_GET_MEMORY_SPACE_MAP) (
233 OUT UINTN *NumberOfDescriptors,
234 OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap
235 )
236 /*++
237
238 Routine Description:
239
240 Returns a map of the memory resources in the global coherency domain of the
241 processor.
242
243 Arguments:
244
245 NumberOfDescriptors - Number of descriptors.
246
247 MemorySpaceMap - Descriptor array
248
249 Returns:
250
251 EFI_INVALID_PARAMETER - Invalid parameter
252
253 EFI_OUT_OF_RESOURCES - No enough buffer to allocate
254
255 EFI_SUCCESS - Successfully get memory space map.
256
257 --*/
258 ;
259
260 typedef
261 EFI_BOOTSERVICE
262 EFI_STATUS
263 (EFIAPI *EFI_ADD_IO_SPACE) (
264 IN EFI_GCD_IO_TYPE GcdIoType,
265 IN EFI_PHYSICAL_ADDRESS BaseAddress,
266 IN UINT64 Length
267 )
268 /*++
269
270 Routine Description:
271
272 Adds reserved I/O or I/O resources to the global coherency domain of the processor.
273
274 Arguments:
275
276 GcdIoType - IO type of the segment.
277
278 BaseAddress - Base address of the segment.
279
280 Length - Length of the segment.
281
282 Returns:
283
284 EFI_SUCCESS - Merged this segment into GCD map.
285
286 --*/
287 ;
288
289 typedef
290 EFI_BOOTSERVICE
291 EFI_STATUS
292 (EFIAPI *EFI_ALLOCATE_IO_SPACE) (
293 IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,
294 IN EFI_GCD_IO_TYPE GcdIoType,
295 IN UINTN Alignment,
296 IN UINT64 Length,
297 IN OUT EFI_PHYSICAL_ADDRESS * BaseAddress,
298 IN EFI_HANDLE ImageHandle,
299 IN EFI_HANDLE DeviceHandle OPTIONAL
300 )
301 /*++
302
303 Routine Description:
304
305 Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency
306 domain of the processor.
307
308 Arguments:
309
310 GcdAllocateType - The type of allocate operation
311
312 GcdIoType - The desired IO type
313
314 Alignment - Align with 2^Alignment
315
316 Length - Length to allocate
317
318 BaseAddress - Base address to allocate
319
320 Imagehandle - The image handle consume the allocated space.
321
322 DeviceHandle - The device handle consume the allocated space.
323
324 Returns:
325
326 EFI_INVALID_PARAMETER - Invalid parameter.
327
328 EFI_NOT_FOUND - No descriptor contains the desired space.
329
330 EFI_SUCCESS - IO space successfully allocated.
331
332 --*/
333 ;
334
335 typedef
336 EFI_BOOTSERVICE
337 EFI_STATUS
338 (EFIAPI *EFI_FREE_IO_SPACE) (
339 IN EFI_PHYSICAL_ADDRESS BaseAddress,
340 IN UINT64 Length
341 )
342 /*++
343
344 Routine Description:Routine Description:
345
346 Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency
347 domain of the processor.
348
349 Arguments:
350
351 BaseAddress - Base address of the segment.
352
353 Length - Length of the segment.
354
355 Returns:
356
357 EFI_SUCCESS - Space successfully freed.
358
359 --*/
360 ;
361
362 typedef
363 EFI_BOOTSERVICE
364 EFI_STATUS
365 (EFIAPI *EFI_REMOVE_IO_SPACE) (
366 IN EFI_PHYSICAL_ADDRESS BaseAddress,
367 IN UINT64 Length
368 )
369 /*++
370
371 Routine Description:Routine Description:
372
373 Removes reserved I/O or I/O resources from the global coherency domain of the
374 processor.
375
376 Arguments:
377
378 BaseAddress - Base address of the segment.
379
380 Length - Length of the segment.
381
382 Returns:
383
384 EFI_SUCCESS - Successfully removed a segment of IO space.
385
386 --*/
387 ;
388
389 typedef
390 EFI_BOOTSERVICE
391 EFI_STATUS
392 (EFIAPI *EFI_GET_IO_SPACE_DESCRIPTOR) (
393 IN EFI_PHYSICAL_ADDRESS BaseAddress,
394 OUT EFI_GCD_IO_SPACE_DESCRIPTOR * Descriptor
395 )
396 /*++
397
398 Routine Description:
399
400 Retrieves the descriptor for an I/O region containing a specified address.
401
402 Arguments:
403
404 BaseAddress - Specified start address
405
406 Descriptor - Specified length
407
408 Returns:
409
410 EFI_INVALID_PARAMETER - Descriptor is NULL.
411
412 EFI_SUCCESS - Successfully get the IO space descriptor.
413
414 --*/
415 ;
416
417 typedef
418 EFI_BOOTSERVICE
419 EFI_STATUS
420 (EFIAPI *EFI_GET_IO_SPACE_MAP) (
421 OUT UINTN *NumberOfDescriptors,
422 OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap
423 )
424 /*++
425
426 Routine Description:
427
428 Returns a map of the I/O resources in the global coherency domain of the processor.
429
430 Arguments:
431
432 NumberOfDescriptors - Number of descriptors.
433
434 MemorySpaceMap - Descriptor array
435
436 Returns:
437
438 EFI_INVALID_PARAMETER - Invalid parameter
439
440 EFI_OUT_OF_RESOURCES - No enough buffer to allocate
441
442 EFI_SUCCESS - Successfully get IO space map.
443
444 --*/
445 ;
446
447 typedef
448 EFI_BOOTSERVICE
449 EFI_STATUS
450 (EFIAPI *EFI_DISPATCH) (VOID)
451 /*++
452
453 Routine Description:
454
455 Loads and executed DXE drivers from firmware volumes.
456
457 Arguments:
458
459 None
460
461 Returns:
462
463 Status code
464
465 --*/
466 ;
467
468 typedef
469 EFI_BOOTSERVICE
470 EFI_STATUS
471 (EFIAPI *EFI_SCHEDULE) (
472 IN EFI_HANDLE FirmwareVolumeHandle,
473 IN EFI_GUID * DriverName
474 )
475 /*++
476
477 Routine Description:
478
479 Clears the Schedule on Request (SOR) flag for a component that is stored in a firmware volume.
480
481 Arguments:
482
483 FirmwareVolumeHandle - The handle of the firmware volume that contains the file specified by FileName.
484
485 DriverName - A pointer to the name of the file in a firmware volume.
486
487 Returns:
488
489 Status code
490
491 --*/
492 ;
493
494 typedef
495 EFI_BOOTSERVICE
496 EFI_STATUS
497 (EFIAPI *EFI_TRUST) (
498 IN EFI_HANDLE FirmwareVolumeHandle,
499 IN EFI_GUID * DriverName
500 )
501 /*++
502
503 Routine Description:
504
505 Promotes a file stored in a firmware volume from the untrusted to the trusted state.
506
507 Arguments:
508
509 FirmwareVolumeHandle - The handle of the firmware volume that contains the file specified by FileName.
510
511 DriverName - A pointer to the name of the file in a firmware volume.
512
513 Returns:
514
515 Status code
516
517 --*/
518 ;
519
520 typedef
521 EFI_BOOTSERVICE
522 EFI_STATUS
523 (EFIAPI *EFI_PROCESS_FIRMWARE_VOLUME) (
524 IN VOID *FvHeader,
525 IN UINTN Size,
526 OUT EFI_HANDLE * FirmwareVolumeHandle
527 )
528 /*++
529
530 Routine Description:
531
532 Creates a firmware volume handle for a firmware volume that is present in system memory.
533
534 Arguments:
535
536 FirmwareVolumeHeader - A pointer to the header of the firmware volume.
537 Size - The size, in bytes, of the firmware volume.
538 FirmwareVolumeHandle - On output, a pointer to the created handle.
539
540 Returns:
541
542 Status code
543
544 --*/
545 ;
546
547 //
548 // DXE Services Table
549 //
550 #define EFI_DXE_SERVICES_SIGNATURE 0x565245535f455844
551 #if (PI_SPECIFICATION_VERSION < 0x00010000)
552 #define EFI_DXE_SERVICES_REVISION ((0 << 16) | (90))
553 #else
554 #define EFI_DXE_SERVICES_REVISION ((1 << 16) | (00))
555 #endif
556
557 typedef struct {
558 EFI_TABLE_HEADER Hdr;
559
560 //
561 // Global Coherency Domain Services
562 //
563 EFI_ADD_MEMORY_SPACE AddMemorySpace;
564 EFI_ALLOCATE_MEMORY_SPACE AllocateMemorySpace;
565 EFI_FREE_MEMORY_SPACE FreeMemorySpace;
566 EFI_REMOVE_MEMORY_SPACE RemoveMemorySpace;
567 EFI_GET_MEMORY_SPACE_DESCRIPTOR GetMemorySpaceDescriptor;
568 EFI_SET_MEMORY_SPACE_ATTRIBUTES SetMemorySpaceAttributes;
569 EFI_GET_MEMORY_SPACE_MAP GetMemorySpaceMap;
570 EFI_ADD_IO_SPACE AddIoSpace;
571 EFI_ALLOCATE_IO_SPACE AllocateIoSpace;
572 EFI_FREE_IO_SPACE FreeIoSpace;
573 EFI_REMOVE_IO_SPACE RemoveIoSpace;
574 EFI_GET_IO_SPACE_DESCRIPTOR GetIoSpaceDescriptor;
575 EFI_GET_IO_SPACE_MAP GetIoSpaceMap;
576
577 //
578 // Dispatcher Services
579 //
580 EFI_DISPATCH Dispatch;
581 EFI_SCHEDULE Schedule;
582 EFI_TRUST Trust;
583 //
584 // Service to process a single firmware volume found in a capsule
585 //
586 EFI_PROCESS_FIRMWARE_VOLUME ProcessFirmwareVolume;
587 } EFI_DXE_SERVICES;
588
589 #endif