1 /******************************************************************************
3 * Name: acefiex.h - Extra OS specific defines, etc. for EFI
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2016, Intel Corp.
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
48 #ifndef ACPI_USE_SYSTEM_CLIBRARY
50 typedef signed char int8_t;
51 typedef short int int16_t;
53 typedef unsigned char uint8_t;
54 typedef unsigned short int uint16_t;
55 typedef unsigned int uint32_t;
56 typedef COMPILER_DEPENDENT_INT64
int64_t;
57 typedef COMPILER_DEPENDENT_UINT64
uint64_t;
59 #endif /* ACPI_USE_SYSTEM_CLIBRARY */
61 #define ACPI_EFI_ERROR(a) (((INTN) a) < 0)
62 #define ACPI_EFI_SUCCESS 0
63 #define ACPI_EFI_LOAD_ERROR ACPI_EFI_ERR(1)
64 #define ACPI_EFI_INVALID_PARAMETER ACPI_EFI_ERR(2)
65 #define ACPI_EFI_UNSUPPORTED ACPI_EFI_ERR(3)
66 #define ACPI_EFI_BAD_BUFFER_SIZE ACPI_EFI_ERR(4)
67 #define ACPI_EFI_BUFFER_TOO_SMALL ACPI_EFI_ERR(5)
68 #define ACPI_EFI_NOT_READY ACPI_EFI_ERR(6)
69 #define ACPI_EFI_DEVICE_ERROR ACPI_EFI_ERR(7)
70 #define ACPI_EFI_WRITE_PROTECTED ACPI_EFI_ERR(8)
71 #define ACPI_EFI_OUT_OF_RESOURCES ACPI_EFI_ERR(9)
72 #define ACPI_EFI_VOLUME_CORRUPTED ACPI_EFI_ERR(10)
73 #define ACPI_EFI_VOLUME_FULL ACPI_EFI_ERR(11)
74 #define ACPI_EFI_NO_MEDIA ACPI_EFI_ERR(12)
75 #define ACPI_EFI_MEDIA_CHANGED ACPI_EFI_ERR(13)
76 #define ACPI_EFI_NOT_FOUND ACPI_EFI_ERR(14)
77 #define ACPI_EFI_ACCESS_DENIED ACPI_EFI_ERR(15)
78 #define ACPI_EFI_NO_RESPONSE ACPI_EFI_ERR(16)
79 #define ACPI_EFI_NO_MAPPING ACPI_EFI_ERR(17)
80 #define ACPI_EFI_TIMEOUT ACPI_EFI_ERR(18)
81 #define ACPI_EFI_NOT_STARTED ACPI_EFI_ERR(19)
82 #define ACPI_EFI_ALREADY_STARTED ACPI_EFI_ERR(20)
83 #define ACPI_EFI_ABORTED ACPI_EFI_ERR(21)
84 #define ACPI_EFI_PROTOCOL_ERROR ACPI_EFI_ERR(24)
87 typedef UINTN ACPI_EFI_STATUS
;
88 typedef VOID
*ACPI_EFI_HANDLE
;
89 typedef VOID
*ACPI_EFI_EVENT
;
98 typedef struct _ACPI_EFI_DEVICE_PATH
{
102 } ACPI_EFI_DEVICE_PATH
;
104 typedef UINT64 ACPI_EFI_PHYSICAL_ADDRESS
;
105 typedef UINT64 ACPI_EFI_VIRTUAL_ADDRESS
;
108 AcpiEfiAllocateAnyPages
,
109 AcpiEfiAllocateMaxAddress
,
110 AcpiEfiAllocateAddress
,
111 AcpiEfiMaxAllocateType
112 } ACPI_EFI_ALLOCATE_TYPE
;
115 AcpiEfiReservedMemoryType
,
118 AcpiEfiBootServicesCode
,
119 AcpiEfiBootServicesData
,
120 AcpiEfiRuntimeServicesCode
,
121 AcpiEfiRuntimeServicesData
,
122 AcpiEfiConventionalMemory
,
123 AcpiEfiUnusableMemory
,
124 AcpiEfiACPIReclaimMemory
,
125 AcpiEfiACPIMemoryNVS
,
126 AcpiEfiMemoryMappedIO
,
127 AcpiEfiMemoryMappedIOPortSpace
,
130 } ACPI_EFI_MEMORY_TYPE
;
132 /* possible caching types for the memory range */
133 #define ACPI_EFI_MEMORY_UC 0x0000000000000001
134 #define ACPI_EFI_MEMORY_WC 0x0000000000000002
135 #define ACPI_EFI_MEMORY_WT 0x0000000000000004
136 #define ACPI_EFI_MEMORY_WB 0x0000000000000008
137 #define ACPI_EFI_MEMORY_UCE 0x0000000000000010
139 /* physical memory protection on range */
140 #define ACPI_EFI_MEMORY_WP 0x0000000000001000
141 #define ACPI_EFI_MEMORY_RP 0x0000000000002000
142 #define ACPI_EFI_MEMORY_XP 0x0000000000004000
144 /* range requires a runtime mapping */
145 #define ACPI_EFI_MEMORY_RUNTIME 0x8000000000000000
147 #define ACPI_EFI_MEMORY_DESCRIPTOR_VERSION 1
151 ACPI_EFI_PHYSICAL_ADDRESS PhysicalStart
;
152 ACPI_EFI_VIRTUAL_ADDRESS VirtualStart
;
153 UINT64 NumberOfPages
;
155 } ACPI_EFI_MEMORY_DESCRIPTOR
;
157 typedef struct _ACPI_EFI_TABLE_HEARDER
{
163 } ACPI_EFI_TABLE_HEADER
;
167 (ACPI_EFI_API
*ACPI_EFI_UNKNOWN_INTERFACE
) (
172 * Text output protocol
174 #define ACPI_SIMPLE_TEXT_OUTPUT_PROTOCOL \
175 { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
179 (ACPI_EFI_API
*ACPI_EFI_TEXT_RESET
) (
180 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
,
181 BOOLEAN ExtendedVerification
);
185 (ACPI_EFI_API
*ACPI_EFI_TEXT_OUTPUT_STRING
) (
186 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
,
191 (ACPI_EFI_API
*ACPI_EFI_TEXT_TEST_STRING
) (
192 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
,
197 (ACPI_EFI_API
*ACPI_EFI_TEXT_QUERY_MODE
) (
198 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
,
205 (ACPI_EFI_API
*ACPI_EFI_TEXT_SET_MODE
) (
206 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
,
211 (ACPI_EFI_API
*ACPI_EFI_TEXT_SET_ATTRIBUTE
) (
212 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
,
217 (ACPI_EFI_API
*ACPI_EFI_TEXT_CLEAR_SCREEN
) (
218 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
);
222 (ACPI_EFI_API
*ACPI_EFI_TEXT_SET_CURSOR_POSITION
) (
223 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
,
229 (ACPI_EFI_API
*ACPI_EFI_TEXT_ENABLE_CURSOR
) (
230 struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*This
,
239 BOOLEAN CursorVisible
;
240 } ACPI_SIMPLE_TEXT_OUTPUT_MODE
;
242 typedef struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
{
243 ACPI_EFI_TEXT_RESET Reset
;
245 ACPI_EFI_TEXT_OUTPUT_STRING OutputString
;
246 ACPI_EFI_TEXT_TEST_STRING TestString
;
248 ACPI_EFI_TEXT_QUERY_MODE QueryMode
;
249 ACPI_EFI_TEXT_SET_MODE SetMode
;
250 ACPI_EFI_TEXT_SET_ATTRIBUTE SetAttribute
;
252 ACPI_EFI_TEXT_CLEAR_SCREEN ClearScreen
;
253 ACPI_EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition
;
254 ACPI_EFI_TEXT_ENABLE_CURSOR EnableCursor
;
256 ACPI_SIMPLE_TEXT_OUTPUT_MODE
*Mode
;
257 } ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
;
260 * Text input protocol
262 #define ACPI_SIMPLE_TEXT_INPUT_PROTOCOL \
263 { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
268 } ACPI_EFI_INPUT_KEY
;
271 * Baseline unicode control chars
273 #define CHAR_NULL 0x0000
274 #define CHAR_BACKSPACE 0x0008
275 #define CHAR_TAB 0x0009
276 #define CHAR_LINEFEED 0x000A
277 #define CHAR_CARRIAGE_RETURN 0x000D
281 (ACPI_EFI_API
*ACPI_EFI_INPUT_RESET
) (
282 struct _ACPI_SIMPLE_INPUT_INTERFACE
*This
,
283 BOOLEAN ExtendedVerification
);
287 (ACPI_EFI_API
*ACPI_EFI_INPUT_READ_KEY
) (
288 struct _ACPI_SIMPLE_INPUT_INTERFACE
*This
,
289 ACPI_EFI_INPUT_KEY
*Key
);
291 typedef struct _ACPI_SIMPLE_INPUT_INTERFACE
{
292 ACPI_EFI_INPUT_RESET Reset
;
293 ACPI_EFI_INPUT_READ_KEY ReadKeyStroke
;
294 ACPI_EFI_EVENT WaitForKey
;
295 } ACPI_SIMPLE_INPUT_INTERFACE
;
299 * Simple file system protocol
301 #define ACPI_SIMPLE_FILE_SYSTEM_PROTOCOL \
302 { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
306 (ACPI_EFI_API
*ACPI_EFI_VOLUME_OPEN
) (
307 struct _ACPI_EFI_FILE_IO_INTERFACE
*This
,
308 struct _ACPI_EFI_FILE_HANDLE
**Root
);
310 #define ACPI_EFI_FILE_IO_INTERFACE_REVISION 0x00010000
312 typedef struct _ACPI_EFI_FILE_IO_INTERFACE
{
314 ACPI_EFI_VOLUME_OPEN OpenVolume
;
315 } ACPI_EFI_FILE_IO_INTERFACE
;
319 (ACPI_EFI_API
*ACPI_EFI_FILE_OPEN
) (
320 struct _ACPI_EFI_FILE_HANDLE
*File
,
321 struct _ACPI_EFI_FILE_HANDLE
**NewHandle
,
326 /* Values for OpenMode used above */
328 #define ACPI_EFI_FILE_MODE_READ 0x0000000000000001
329 #define ACPI_EFI_FILE_MODE_WRITE 0x0000000000000002
330 #define ACPI_EFI_FILE_MODE_CREATE 0x8000000000000000
332 /* Values for Attribute used above */
334 #define ACPI_EFI_FILE_READ_ONLY 0x0000000000000001
335 #define ACPI_EFI_FILE_HIDDEN 0x0000000000000002
336 #define ACPI_EFI_FILE_SYSTEM 0x0000000000000004
337 #define ACPI_EFI_FILE_RESERVIED 0x0000000000000008
338 #define ACPI_EFI_FILE_DIRECTORY 0x0000000000000010
339 #define ACPI_EFI_FILE_ARCHIVE 0x0000000000000020
340 #define ACPI_EFI_FILE_VALID_ATTR 0x0000000000000037
344 (ACPI_EFI_API
*ACPI_EFI_FILE_CLOSE
) (
345 struct _ACPI_EFI_FILE_HANDLE
*File
);
349 (ACPI_EFI_API
*ACPI_EFI_FILE_DELETE
) (
350 struct _ACPI_EFI_FILE_HANDLE
*File
);
354 (ACPI_EFI_API
*ACPI_EFI_FILE_READ
) (
355 struct _ACPI_EFI_FILE_HANDLE
*File
,
361 (ACPI_EFI_API
*ACPI_EFI_FILE_WRITE
) (
362 struct _ACPI_EFI_FILE_HANDLE
*File
,
368 (ACPI_EFI_API
*ACPI_EFI_FILE_SET_POSITION
) (
369 struct _ACPI_EFI_FILE_HANDLE
*File
,
374 (ACPI_EFI_API
*ACPI_EFI_FILE_GET_POSITION
) (
375 struct _ACPI_EFI_FILE_HANDLE
*File
,
380 (ACPI_EFI_API
*ACPI_EFI_FILE_GET_INFO
) (
381 struct _ACPI_EFI_FILE_HANDLE
*File
,
382 ACPI_EFI_GUID
*InformationType
,
388 (ACPI_EFI_API
*ACPI_EFI_FILE_SET_INFO
) (
389 struct _ACPI_EFI_FILE_HANDLE
*File
,
390 ACPI_EFI_GUID
*InformationType
,
396 (ACPI_EFI_API
*ACPI_EFI_FILE_FLUSH
) (
397 struct _ACPI_EFI_FILE_HANDLE
*File
);
400 #define ACPI_EFI_FILE_HANDLE_REVISION 0x00010000
402 typedef struct _ACPI_EFI_FILE_HANDLE
{
404 ACPI_EFI_FILE_OPEN Open
;
405 ACPI_EFI_FILE_CLOSE Close
;
406 ACPI_EFI_FILE_DELETE Delete
;
407 ACPI_EFI_FILE_READ Read
;
408 ACPI_EFI_FILE_WRITE Write
;
409 ACPI_EFI_FILE_GET_POSITION GetPosition
;
410 ACPI_EFI_FILE_SET_POSITION SetPosition
;
411 ACPI_EFI_FILE_GET_INFO GetInfo
;
412 ACPI_EFI_FILE_SET_INFO SetInfo
;
413 ACPI_EFI_FILE_FLUSH Flush
;
414 } ACPI_EFI_FILE_STRUCT
, *ACPI_EFI_FILE_HANDLE
;
418 * Loaded image protocol
420 #define ACPI_EFI_LOADED_IMAGE_PROTOCOL \
421 { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
425 (ACPI_EFI_API
*ACPI_EFI_IMAGE_ENTRY_POINT
) (
426 ACPI_EFI_HANDLE ImageHandle
,
427 struct _ACPI_EFI_SYSTEM_TABLE
*SystemTable
);
431 (ACPI_EFI_API
*ACPI_EFI_IMAGE_LOAD
) (
433 ACPI_EFI_HANDLE ParentImageHandle
,
434 ACPI_EFI_DEVICE_PATH
*FilePath
,
437 ACPI_EFI_HANDLE
*ImageHandle
);
441 (ACPI_EFI_API
*ACPI_EFI_IMAGE_START
) (
442 ACPI_EFI_HANDLE ImageHandle
,
448 (ACPI_EFI_API
*ACPI_EFI_EXIT
) (
449 ACPI_EFI_HANDLE ImageHandle
,
450 ACPI_EFI_STATUS ExitStatus
,
456 (ACPI_EFI_API
*ACPI_EFI_IMAGE_UNLOAD
) (
457 ACPI_EFI_HANDLE ImageHandle
);
460 #define EFI_IMAGE_INFORMATION_REVISION 0x1000
463 ACPI_EFI_HANDLE ParentHandle
;
464 struct _ACPI_EFI_SYSTEM_TABLE
*SystemTable
;
465 ACPI_EFI_HANDLE DeviceHandle
;
466 ACPI_EFI_DEVICE_PATH
*FilePath
;
468 UINT32 LoadOptionsSize
;
472 ACPI_EFI_MEMORY_TYPE ImageCodeType
;
473 ACPI_EFI_MEMORY_TYPE ImageDataType
;
474 ACPI_EFI_IMAGE_UNLOAD Unload
;
476 } ACPI_EFI_LOADED_IMAGE
;
484 (ACPI_EFI_API
*ACPI_EFI_ALLOCATE_PAGES
) (
485 ACPI_EFI_ALLOCATE_TYPE Type
,
486 ACPI_EFI_MEMORY_TYPE MemoryType
,
488 ACPI_EFI_PHYSICAL_ADDRESS
*Memory
);
492 (ACPI_EFI_API
*ACPI_EFI_FREE_PAGES
) (
493 ACPI_EFI_PHYSICAL_ADDRESS Memory
,
498 (ACPI_EFI_API
*ACPI_EFI_GET_MEMORY_MAP
) (
499 UINTN
*MemoryMapSize
,
500 ACPI_EFI_MEMORY_DESCRIPTOR
*MemoryMap
,
502 UINTN
*DescriptorSize
,
503 UINT32
*DescriptorVersion
);
505 #define NextMemoryDescriptor(Ptr,Size) ((ACPI_EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
509 (ACPI_EFI_API
*ACPI_EFI_ALLOCATE_POOL
) (
510 ACPI_EFI_MEMORY_TYPE PoolType
,
516 (ACPI_EFI_API
*ACPI_EFI_FREE_POOL
) (
521 * Protocol handler functions
524 ACPI_EFI_NATIVE_INTERFACE
,
525 ACPI_EFI_PCODE_INTERFACE
526 } ACPI_EFI_INTERFACE_TYPE
;
530 AcpiEfiByRegisterNotify
,
532 } ACPI_EFI_LOCATE_SEARCH_TYPE
;
536 (ACPI_EFI_API
*ACPI_EFI_INSTALL_PROTOCOL_INTERFACE
) (
537 ACPI_EFI_HANDLE
*Handle
,
538 ACPI_EFI_GUID
*Protocol
,
539 ACPI_EFI_INTERFACE_TYPE InterfaceType
,
544 (ACPI_EFI_API
*ACPI_EFI_REINSTALL_PROTOCOL_INTERFACE
) (
545 ACPI_EFI_HANDLE Handle
,
546 ACPI_EFI_GUID
*Protocol
,
552 (ACPI_EFI_API
*ACPI_EFI_UNINSTALL_PROTOCOL_INTERFACE
) (
553 ACPI_EFI_HANDLE Handle
,
554 ACPI_EFI_GUID
*Protocol
,
559 (ACPI_EFI_API
*ACPI_EFI_HANDLE_PROTOCOL
) (
560 ACPI_EFI_HANDLE Handle
,
561 ACPI_EFI_GUID
*Protocol
,
566 (ACPI_EFI_API
*ACPI_EFI_REGISTER_PROTOCOL_NOTIFY
) (
567 ACPI_EFI_GUID
*Protocol
,
568 ACPI_EFI_EVENT Event
,
569 VOID
**Registration
);
573 (ACPI_EFI_API
*ACPI_EFI_LOCATE_HANDLE
) (
574 ACPI_EFI_LOCATE_SEARCH_TYPE SearchType
,
575 ACPI_EFI_GUID
*Protocol
,
578 ACPI_EFI_HANDLE
*Buffer
);
582 (ACPI_EFI_API
*ACPI_EFI_LOCATE_DEVICE_PATH
) (
583 ACPI_EFI_GUID
*Protocol
,
584 ACPI_EFI_DEVICE_PATH
**DevicePath
,
585 ACPI_EFI_HANDLE
*Device
);
589 (ACPI_EFI_API
*ACPI_EFI_INSTALL_CONFIGURATION_TABLE
) (
593 #define ACPI_EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
594 #define ACPI_EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
595 #define ACPI_EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
596 #define ACPI_EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
597 #define ACPI_EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
598 #define ACPI_EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
602 (ACPI_EFI_API
*ACPI_EFI_OPEN_PROTOCOL
) (
603 ACPI_EFI_HANDLE Handle
,
604 ACPI_EFI_GUID
*Protocol
,
606 ACPI_EFI_HANDLE AgentHandle
,
607 ACPI_EFI_HANDLE ControllerHandle
,
612 (ACPI_EFI_API
*ACPI_EFI_CLOSE_PROTOCOL
) (
613 ACPI_EFI_HANDLE Handle
,
614 ACPI_EFI_GUID
*Protocol
,
615 ACPI_EFI_HANDLE AgentHandle
,
616 ACPI_EFI_HANDLE ControllerHandle
);
619 ACPI_EFI_HANDLE AgentHandle
;
620 ACPI_EFI_HANDLE ControllerHandle
;
623 } ACPI_EFI_OPEN_PROTOCOL_INFORMATION_ENTRY
;
627 (ACPI_EFI_API
*ACPI_EFI_OPEN_PROTOCOL_INFORMATION
) (
628 ACPI_EFI_HANDLE Handle
,
629 ACPI_EFI_GUID
*Protocol
,
630 ACPI_EFI_OPEN_PROTOCOL_INFORMATION_ENTRY
**EntryBuffer
,
635 (ACPI_EFI_API
*ACPI_EFI_PROTOCOLS_PER_HANDLE
) (
636 ACPI_EFI_HANDLE Handle
,
637 ACPI_EFI_GUID
***ProtocolBuffer
,
638 UINTN
*ProtocolBufferCount
);
642 (ACPI_EFI_API
*ACPI_EFI_LOCATE_HANDLE_BUFFER
) (
643 ACPI_EFI_LOCATE_SEARCH_TYPE SearchType
,
644 ACPI_EFI_GUID
*Protocol
,
647 ACPI_EFI_HANDLE
**Buffer
);
651 (ACPI_EFI_API
*ACPI_EFI_LOCATE_PROTOCOL
) (
652 ACPI_EFI_GUID
*Protocol
,
658 (ACPI_EFI_API
*ACPI_EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES
) (
659 ACPI_EFI_HANDLE
*Handle
,
664 (ACPI_EFI_API
*ACPI_EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES
) (
665 ACPI_EFI_HANDLE Handle
,
670 (ACPI_EFI_API
*ACPI_EFI_CALCULATE_CRC32
) (
677 (ACPI_EFI_API
*ACPI_EFI_COPY_MEM
) (
684 (ACPI_EFI_API
*ACPI_EFI_SET_MEM
) (
690 * EFI Boot Services Table
692 #define ACPI_EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
693 #define ACPI_EFI_BOOT_SERVICES_REVISION (ACPI_EFI_SPECIFICATION_MAJOR_REVISION<<16) | (ACPI_EFI_SPECIFICATION_MINOR_REVISION)
695 typedef struct _ACPI_EFI_BOOT_SERVICES
{
696 ACPI_EFI_TABLE_HEADER Hdr
;
699 ACPI_EFI_RAISE_TPL RaiseTPL
;
700 ACPI_EFI_RESTORE_TPL RestoreTPL
;
702 ACPI_EFI_UNKNOWN_INTERFACE RaiseTPL
;
703 ACPI_EFI_UNKNOWN_INTERFACE RestoreTPL
;
706 ACPI_EFI_ALLOCATE_PAGES AllocatePages
;
707 ACPI_EFI_FREE_PAGES FreePages
;
708 ACPI_EFI_GET_MEMORY_MAP GetMemoryMap
;
709 ACPI_EFI_ALLOCATE_POOL AllocatePool
;
710 ACPI_EFI_FREE_POOL FreePool
;
713 ACPI_EFI_CREATE_EVENT CreateEvent
;
714 ACPI_EFI_SET_TIMER SetTimer
;
715 ACPI_EFI_WAIT_FOR_EVENT WaitForEvent
;
716 ACPI_EFI_SIGNAL_EVENT SignalEvent
;
717 ACPI_EFI_CLOSE_EVENT CloseEvent
;
718 ACPI_EFI_CHECK_EVENT CheckEvent
;
720 ACPI_EFI_UNKNOWN_INTERFACE CreateEvent
;
721 ACPI_EFI_UNKNOWN_INTERFACE SetTimer
;
722 ACPI_EFI_UNKNOWN_INTERFACE WaitForEvent
;
723 ACPI_EFI_UNKNOWN_INTERFACE SignalEvent
;
724 ACPI_EFI_UNKNOWN_INTERFACE CloseEvent
;
725 ACPI_EFI_UNKNOWN_INTERFACE CheckEvent
;
728 ACPI_EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface
;
729 ACPI_EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface
;
730 ACPI_EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface
;
731 ACPI_EFI_HANDLE_PROTOCOL HandleProtocol
;
732 ACPI_EFI_HANDLE_PROTOCOL PCHandleProtocol
;
733 ACPI_EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify
;
734 ACPI_EFI_LOCATE_HANDLE LocateHandle
;
735 ACPI_EFI_LOCATE_DEVICE_PATH LocateDevicePath
;
736 ACPI_EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable
;
738 ACPI_EFI_IMAGE_LOAD LoadImage
;
739 ACPI_EFI_IMAGE_START StartImage
;
741 ACPI_EFI_IMAGE_UNLOAD UnloadImage
;
744 ACPI_EFI_EXIT_BOOT_SERVICES ExitBootServices
;
745 ACPI_EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount
;
746 ACPI_EFI_STALL Stall
;
747 ACPI_EFI_SET_WATCHDOG_TIMER SetWatchdogTimer
;
749 ACPI_EFI_UNKNOWN_INTERFACE ExitBootServices
;
750 ACPI_EFI_UNKNOWN_INTERFACE GetNextMonotonicCount
;
751 ACPI_EFI_UNKNOWN_INTERFACE Stall
;
752 ACPI_EFI_UNKNOWN_INTERFACE SetWatchdogTimer
;
756 ACPI_EFI_CONNECT_CONTROLLER ConnectController
;
757 ACPI_EFI_DISCONNECT_CONTROLLER DisconnectController
;
759 ACPI_EFI_UNKNOWN_INTERFACE ConnectController
;
760 ACPI_EFI_UNKNOWN_INTERFACE DisconnectController
;
763 ACPI_EFI_OPEN_PROTOCOL OpenProtocol
;
764 ACPI_EFI_CLOSE_PROTOCOL CloseProtocol
;
765 ACPI_EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation
;
766 ACPI_EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle
;
767 ACPI_EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer
;
768 ACPI_EFI_LOCATE_PROTOCOL LocateProtocol
;
769 ACPI_EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces
;
770 ACPI_EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces
;
772 ACPI_EFI_CALCULATE_CRC32 CalculateCrc32
;
774 ACPI_EFI_COPY_MEM CopyMem
;
775 ACPI_EFI_SET_MEM SetMem
;
778 ACPI_EFI_CREATE_EVENT_EX CreateEventEx
;
780 ACPI_EFI_UNKNOWN_INTERFACE CreateEventEx
;
782 } ACPI_EFI_BOOT_SERVICES
;
790 * EFI Configuration Table and GUID definitions
792 #define ACPI_TABLE_GUID \
793 { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
794 #define ACPI_20_TABLE_GUID \
795 { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
797 typedef struct _ACPI_EFI_CONFIGURATION_TABLE
{
798 ACPI_EFI_GUID VendorGuid
;
800 } ACPI_EFI_CONFIGURATION_TABLE
;
803 #define ACPI_EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
804 #define ACPI_EFI_SYSTEM_TABLE_REVISION (ACPI_EFI_SPECIFICATION_MAJOR_REVISION<<16) | (ACPI_EFI_SPECIFICATION_MINOR_REVISION)
806 typedef struct _ACPI_EFI_SYSTEM_TABLE
{
807 ACPI_EFI_TABLE_HEADER Hdr
;
809 CHAR16
*FirmwareVendor
;
810 UINT32 FirmwareRevision
;
812 ACPI_EFI_HANDLE ConsoleInHandle
;
813 ACPI_SIMPLE_INPUT_INTERFACE
*ConIn
;
815 ACPI_EFI_HANDLE ConsoleOutHandle
;
816 ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*ConOut
;
818 ACPI_EFI_HANDLE StandardErrorHandle
;
819 ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
*StdErr
;
822 ACPI_EFI_RUNTIME_SERVICES
*RuntimeServices
;
824 ACPI_EFI_HANDLE
*RuntimeServices
;
826 ACPI_EFI_BOOT_SERVICES
*BootServices
;
828 UINTN NumberOfTableEntries
;
829 ACPI_EFI_CONFIGURATION_TABLE
*ConfigurationTable
;
831 } ACPI_EFI_SYSTEM_TABLE
;
834 /* GNU EFI definitions */
836 #if defined(_GNU_EFI)
839 * This is needed to hide platform specific code from ACPICA
848 * EFI specific prototypes
852 ACPI_EFI_HANDLE Image
,
853 ACPI_EFI_SYSTEM_TABLE
*SystemTab
);
863 extern ACPI_EFI_GUID AcpiGbl_LoadedImageProtocol
;
864 extern ACPI_EFI_GUID AcpiGbl_TextInProtocol
;
865 extern ACPI_EFI_GUID AcpiGbl_TextOutProtocol
;
866 extern ACPI_EFI_GUID AcpiGbl_FileSystemProtocol
;
868 #endif /* __ACEFIEX_H__ */