17b1019a6SJerry Jelinek /****************************************************************************** 27b1019a6SJerry Jelinek * 37b1019a6SJerry Jelinek * Name: acefiex.h - Extra OS specific defines, etc. for EFI 47b1019a6SJerry Jelinek * 57b1019a6SJerry Jelinek *****************************************************************************/ 67b1019a6SJerry Jelinek 7*35786f68SRobert Mustacchi /****************************************************************************** 8*35786f68SRobert Mustacchi * 9*35786f68SRobert Mustacchi * 1. Copyright Notice 10*35786f68SRobert Mustacchi * 11*35786f68SRobert Mustacchi * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp. 127b1019a6SJerry Jelinek * All rights reserved. 137b1019a6SJerry Jelinek * 14*35786f68SRobert Mustacchi * 2. License 15*35786f68SRobert Mustacchi * 16*35786f68SRobert Mustacchi * 2.1. This is your license from Intel Corp. under its intellectual property 17*35786f68SRobert Mustacchi * rights. You may have additional license terms from the party that provided 18*35786f68SRobert Mustacchi * you this software, covering your right to use that party's intellectual 19*35786f68SRobert Mustacchi * property rights. 20*35786f68SRobert Mustacchi * 21*35786f68SRobert Mustacchi * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22*35786f68SRobert Mustacchi * copy of the source code appearing in this file ("Covered Code") an 23*35786f68SRobert Mustacchi * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24*35786f68SRobert Mustacchi * base code distributed originally by Intel ("Original Intel Code") to copy, 25*35786f68SRobert Mustacchi * make derivatives, distribute, use and display any portion of the Covered 26*35786f68SRobert Mustacchi * Code in any form, with the right to sublicense such rights; and 27*35786f68SRobert Mustacchi * 28*35786f68SRobert Mustacchi * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29*35786f68SRobert Mustacchi * license (with the right to sublicense), under only those claims of Intel 30*35786f68SRobert Mustacchi * patents that are infringed by the Original Intel Code, to make, use, sell, 31*35786f68SRobert Mustacchi * offer to sell, and import the Covered Code and derivative works thereof 32*35786f68SRobert Mustacchi * solely to the minimum extent necessary to exercise the above copyright 33*35786f68SRobert Mustacchi * license, and in no event shall the patent license extend to any additions 34*35786f68SRobert Mustacchi * to or modifications of the Original Intel Code. No other license or right 35*35786f68SRobert Mustacchi * is granted directly or by implication, estoppel or otherwise; 36*35786f68SRobert Mustacchi * 37*35786f68SRobert Mustacchi * The above copyright and patent license is granted only if the following 38*35786f68SRobert Mustacchi * conditions are met: 39*35786f68SRobert Mustacchi * 40*35786f68SRobert Mustacchi * 3. Conditions 41*35786f68SRobert Mustacchi * 42*35786f68SRobert Mustacchi * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43*35786f68SRobert Mustacchi * Redistribution of source code of any substantial portion of the Covered 44*35786f68SRobert Mustacchi * Code or modification with rights to further distribute source must include 45*35786f68SRobert Mustacchi * the above Copyright Notice, the above License, this list of Conditions, 46*35786f68SRobert Mustacchi * and the following Disclaimer and Export Compliance provision. In addition, 47*35786f68SRobert Mustacchi * Licensee must cause all Covered Code to which Licensee contributes to 48*35786f68SRobert Mustacchi * contain a file documenting the changes Licensee made to create that Covered 49*35786f68SRobert Mustacchi * Code and the date of any change. Licensee must include in that file the 50*35786f68SRobert Mustacchi * documentation of any changes made by any predecessor Licensee. Licensee 51*35786f68SRobert Mustacchi * must include a prominent statement that the modification is derived, 52*35786f68SRobert Mustacchi * directly or indirectly, from Original Intel Code. 53*35786f68SRobert Mustacchi * 54*35786f68SRobert Mustacchi * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55*35786f68SRobert Mustacchi * Redistribution of source code of any substantial portion of the Covered 56*35786f68SRobert Mustacchi * Code or modification without rights to further distribute source must 57*35786f68SRobert Mustacchi * include the following Disclaimer and Export Compliance provision in the 58*35786f68SRobert Mustacchi * documentation and/or other materials provided with distribution. In 59*35786f68SRobert Mustacchi * addition, Licensee may not authorize further sublicense of source of any 60*35786f68SRobert Mustacchi * portion of the Covered Code, and must include terms to the effect that the 61*35786f68SRobert Mustacchi * license from Licensee to its licensee is limited to the intellectual 62*35786f68SRobert Mustacchi * property embodied in the software Licensee provides to its licensee, and 63*35786f68SRobert Mustacchi * not to intellectual property embodied in modifications its licensee may 64*35786f68SRobert Mustacchi * make. 65*35786f68SRobert Mustacchi * 66*35786f68SRobert Mustacchi * 3.3. Redistribution of Executable. Redistribution in executable form of any 67*35786f68SRobert Mustacchi * substantial portion of the Covered Code or modification must reproduce the 68*35786f68SRobert Mustacchi * above Copyright Notice, and the following Disclaimer and Export Compliance 69*35786f68SRobert Mustacchi * provision in the documentation and/or other materials provided with the 70*35786f68SRobert Mustacchi * distribution. 71*35786f68SRobert Mustacchi * 72*35786f68SRobert Mustacchi * 3.4. Intel retains all right, title, and interest in and to the Original 73*35786f68SRobert Mustacchi * Intel Code. 74*35786f68SRobert Mustacchi * 75*35786f68SRobert Mustacchi * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76*35786f68SRobert Mustacchi * Intel shall be used in advertising or otherwise to promote the sale, use or 77*35786f68SRobert Mustacchi * other dealings in products derived from or relating to the Covered Code 78*35786f68SRobert Mustacchi * without prior written authorization from Intel. 79*35786f68SRobert Mustacchi * 80*35786f68SRobert Mustacchi * 4. Disclaimer and Export Compliance 81*35786f68SRobert Mustacchi * 82*35786f68SRobert Mustacchi * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83*35786f68SRobert Mustacchi * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84*35786f68SRobert Mustacchi * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85*35786f68SRobert Mustacchi * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86*35786f68SRobert Mustacchi * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87*35786f68SRobert Mustacchi * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88*35786f68SRobert Mustacchi * PARTICULAR PURPOSE. 89*35786f68SRobert Mustacchi * 90*35786f68SRobert Mustacchi * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91*35786f68SRobert Mustacchi * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92*35786f68SRobert Mustacchi * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93*35786f68SRobert Mustacchi * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94*35786f68SRobert Mustacchi * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95*35786f68SRobert Mustacchi * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96*35786f68SRobert Mustacchi * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97*35786f68SRobert Mustacchi * LIMITED REMEDY. 98*35786f68SRobert Mustacchi * 99*35786f68SRobert Mustacchi * 4.3. Licensee shall not export, either directly or indirectly, any of this 100*35786f68SRobert Mustacchi * software or system incorporating such software without first obtaining any 101*35786f68SRobert Mustacchi * required license or other approval from the U. S. Department of Commerce or 102*35786f68SRobert Mustacchi * any other agency or department of the United States Government. In the 103*35786f68SRobert Mustacchi * event Licensee exports any such software from the United States or 104*35786f68SRobert Mustacchi * re-exports any such software from a foreign destination, Licensee shall 105*35786f68SRobert Mustacchi * ensure that the distribution and export/re-export of the software is in 106*35786f68SRobert Mustacchi * compliance with all laws, regulations, orders, or other restrictions of the 107*35786f68SRobert Mustacchi * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108*35786f68SRobert Mustacchi * any of its subsidiaries will export/re-export any technical data, process, 109*35786f68SRobert Mustacchi * software, or service, directly or indirectly, to any country for which the 110*35786f68SRobert Mustacchi * United States government or any agency thereof requires an export license, 111*35786f68SRobert Mustacchi * other governmental approval, or letter of assurance, without first obtaining 112*35786f68SRobert Mustacchi * such license, approval or letter. 113*35786f68SRobert Mustacchi * 114*35786f68SRobert Mustacchi ***************************************************************************** 115*35786f68SRobert Mustacchi * 116*35786f68SRobert Mustacchi * Alternatively, you may choose to be licensed under the terms of the 117*35786f68SRobert Mustacchi * following license: 118*35786f68SRobert Mustacchi * 1197b1019a6SJerry Jelinek * Redistribution and use in source and binary forms, with or without 1207b1019a6SJerry Jelinek * modification, are permitted provided that the following conditions 1217b1019a6SJerry Jelinek * are met: 1227b1019a6SJerry Jelinek * 1. Redistributions of source code must retain the above copyright 1237b1019a6SJerry Jelinek * notice, this list of conditions, and the following disclaimer, 1247b1019a6SJerry Jelinek * without modification. 1257b1019a6SJerry Jelinek * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1267b1019a6SJerry Jelinek * substantially similar to the "NO WARRANTY" disclaimer below 1277b1019a6SJerry Jelinek * ("Disclaimer") and any redistribution must be conditioned upon 1287b1019a6SJerry Jelinek * including a substantially similar Disclaimer requirement for further 1297b1019a6SJerry Jelinek * binary redistribution. 1307b1019a6SJerry Jelinek * 3. Neither the names of the above-listed copyright holders nor the names 1317b1019a6SJerry Jelinek * of any contributors may be used to endorse or promote products derived 1327b1019a6SJerry Jelinek * from this software without specific prior written permission. 1337b1019a6SJerry Jelinek * 1347b1019a6SJerry Jelinek * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1357b1019a6SJerry Jelinek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136*35786f68SRobert Mustacchi * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1377b1019a6SJerry Jelinek * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138*35786f68SRobert Mustacchi * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139*35786f68SRobert Mustacchi * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140*35786f68SRobert Mustacchi * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141*35786f68SRobert Mustacchi * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142*35786f68SRobert Mustacchi * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143*35786f68SRobert Mustacchi * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144*35786f68SRobert Mustacchi * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145*35786f68SRobert Mustacchi * 146*35786f68SRobert Mustacchi * Alternatively, you may choose to be licensed under the terms of the 147*35786f68SRobert Mustacchi * GNU General Public License ("GPL") version 2 as published by the Free 148*35786f68SRobert Mustacchi * Software Foundation. 149*35786f68SRobert Mustacchi * 150*35786f68SRobert Mustacchi *****************************************************************************/ 1517b1019a6SJerry Jelinek 1527b1019a6SJerry Jelinek #ifndef __ACEFIEX_H__ 1537b1019a6SJerry Jelinek #define __ACEFIEX_H__ 1547b1019a6SJerry Jelinek 1557b1019a6SJerry Jelinek 156*35786f68SRobert Mustacchi #ifndef ACPI_USE_SYSTEM_CLIBRARY 157*35786f68SRobert Mustacchi 158*35786f68SRobert Mustacchi typedef signed char int8_t; 159*35786f68SRobert Mustacchi typedef short int int16_t; 160*35786f68SRobert Mustacchi typedef int int32_t; 161*35786f68SRobert Mustacchi typedef unsigned char uint8_t; 162*35786f68SRobert Mustacchi typedef unsigned short int uint16_t; 163*35786f68SRobert Mustacchi typedef unsigned int uint32_t; 164*35786f68SRobert Mustacchi typedef COMPILER_DEPENDENT_INT64 int64_t; 165*35786f68SRobert Mustacchi typedef COMPILER_DEPENDENT_UINT64 uint64_t; 166*35786f68SRobert Mustacchi 167*35786f68SRobert Mustacchi #endif /* ACPI_USE_SYSTEM_CLIBRARY */ 168*35786f68SRobert Mustacchi 169*35786f68SRobert Mustacchi #define ACPI_EFI_ERROR(a) (((INTN) a) < 0) 170*35786f68SRobert Mustacchi #define ACPI_EFI_SUCCESS 0 171*35786f68SRobert Mustacchi #define ACPI_EFI_LOAD_ERROR ACPI_EFI_ERR(1) 172*35786f68SRobert Mustacchi #define ACPI_EFI_INVALID_PARAMETER ACPI_EFI_ERR(2) 173*35786f68SRobert Mustacchi #define ACPI_EFI_UNSUPPORTED ACPI_EFI_ERR(3) 174*35786f68SRobert Mustacchi #define ACPI_EFI_BAD_BUFFER_SIZE ACPI_EFI_ERR(4) 175*35786f68SRobert Mustacchi #define ACPI_EFI_BUFFER_TOO_SMALL ACPI_EFI_ERR(5) 176*35786f68SRobert Mustacchi #define ACPI_EFI_NOT_READY ACPI_EFI_ERR(6) 177*35786f68SRobert Mustacchi #define ACPI_EFI_DEVICE_ERROR ACPI_EFI_ERR(7) 178*35786f68SRobert Mustacchi #define ACPI_EFI_WRITE_PROTECTED ACPI_EFI_ERR(8) 179*35786f68SRobert Mustacchi #define ACPI_EFI_OUT_OF_RESOURCES ACPI_EFI_ERR(9) 180*35786f68SRobert Mustacchi #define ACPI_EFI_VOLUME_CORRUPTED ACPI_EFI_ERR(10) 181*35786f68SRobert Mustacchi #define ACPI_EFI_VOLUME_FULL ACPI_EFI_ERR(11) 182*35786f68SRobert Mustacchi #define ACPI_EFI_NO_MEDIA ACPI_EFI_ERR(12) 183*35786f68SRobert Mustacchi #define ACPI_EFI_MEDIA_CHANGED ACPI_EFI_ERR(13) 184*35786f68SRobert Mustacchi #define ACPI_EFI_NOT_FOUND ACPI_EFI_ERR(14) 185*35786f68SRobert Mustacchi #define ACPI_EFI_ACCESS_DENIED ACPI_EFI_ERR(15) 186*35786f68SRobert Mustacchi #define ACPI_EFI_NO_RESPONSE ACPI_EFI_ERR(16) 187*35786f68SRobert Mustacchi #define ACPI_EFI_NO_MAPPING ACPI_EFI_ERR(17) 188*35786f68SRobert Mustacchi #define ACPI_EFI_TIMEOUT ACPI_EFI_ERR(18) 189*35786f68SRobert Mustacchi #define ACPI_EFI_NOT_STARTED ACPI_EFI_ERR(19) 190*35786f68SRobert Mustacchi #define ACPI_EFI_ALREADY_STARTED ACPI_EFI_ERR(20) 191*35786f68SRobert Mustacchi #define ACPI_EFI_ABORTED ACPI_EFI_ERR(21) 192*35786f68SRobert Mustacchi #define ACPI_EFI_PROTOCOL_ERROR ACPI_EFI_ERR(24) 193*35786f68SRobert Mustacchi 194*35786f68SRobert Mustacchi 195*35786f68SRobert Mustacchi typedef UINTN ACPI_EFI_STATUS; 196*35786f68SRobert Mustacchi typedef VOID *ACPI_EFI_HANDLE; 197*35786f68SRobert Mustacchi typedef VOID *ACPI_EFI_EVENT; 1987b1019a6SJerry Jelinek 1997b1019a6SJerry Jelinek typedef struct { 2007b1019a6SJerry Jelinek UINT32 Data1; 2017b1019a6SJerry Jelinek UINT16 Data2; 2027b1019a6SJerry Jelinek UINT16 Data3; 2037b1019a6SJerry Jelinek UINT8 Data4[8]; 204*35786f68SRobert Mustacchi } ACPI_EFI_GUID; 2057b1019a6SJerry Jelinek 206*35786f68SRobert Mustacchi typedef struct { 207*35786f68SRobert Mustacchi UINT16 Year; /* 1998 - 20XX */ 208*35786f68SRobert Mustacchi UINT8 Month; /* 1 - 12 */ 209*35786f68SRobert Mustacchi UINT8 Day; /* 1 - 31 */ 210*35786f68SRobert Mustacchi UINT8 Hour; /* 0 - 23 */ 211*35786f68SRobert Mustacchi UINT8 Minute; /* 0 - 59 */ 212*35786f68SRobert Mustacchi UINT8 Second; /* 0 - 59 */ 213*35786f68SRobert Mustacchi UINT8 Pad1; 214*35786f68SRobert Mustacchi UINT32 Nanosecond; /* 0 - 999,999,999 */ 215*35786f68SRobert Mustacchi INT16 TimeZone; /* -1440 to 1440 or 2047 */ 216*35786f68SRobert Mustacchi UINT8 Daylight; 217*35786f68SRobert Mustacchi UINT8 Pad2; 218*35786f68SRobert Mustacchi } ACPI_EFI_TIME; 219*35786f68SRobert Mustacchi 220*35786f68SRobert Mustacchi typedef struct _ACPI_EFI_DEVICE_PATH { 2217b1019a6SJerry Jelinek UINT8 Type; 2227b1019a6SJerry Jelinek UINT8 SubType; 2237b1019a6SJerry Jelinek UINT8 Length[2]; 224*35786f68SRobert Mustacchi } ACPI_EFI_DEVICE_PATH; 2257b1019a6SJerry Jelinek 226*35786f68SRobert Mustacchi typedef UINT64 ACPI_EFI_PHYSICAL_ADDRESS; 227*35786f68SRobert Mustacchi typedef UINT64 ACPI_EFI_VIRTUAL_ADDRESS; 2287b1019a6SJerry Jelinek 2297b1019a6SJerry Jelinek typedef enum { 230*35786f68SRobert Mustacchi AcpiEfiAllocateAnyPages, 231*35786f68SRobert Mustacchi AcpiEfiAllocateMaxAddress, 232*35786f68SRobert Mustacchi AcpiEfiAllocateAddress, 233*35786f68SRobert Mustacchi AcpiEfiMaxAllocateType 234*35786f68SRobert Mustacchi } ACPI_EFI_ALLOCATE_TYPE; 2357b1019a6SJerry Jelinek 2367b1019a6SJerry Jelinek typedef enum { 237*35786f68SRobert Mustacchi AcpiEfiReservedMemoryType, 238*35786f68SRobert Mustacchi AcpiEfiLoaderCode, 239*35786f68SRobert Mustacchi AcpiEfiLoaderData, 240*35786f68SRobert Mustacchi AcpiEfiBootServicesCode, 241*35786f68SRobert Mustacchi AcpiEfiBootServicesData, 242*35786f68SRobert Mustacchi AcpiEfiRuntimeServicesCode, 243*35786f68SRobert Mustacchi AcpiEfiRuntimeServicesData, 244*35786f68SRobert Mustacchi AcpiEfiConventionalMemory, 245*35786f68SRobert Mustacchi AcpiEfiUnusableMemory, 246*35786f68SRobert Mustacchi AcpiEfiACPIReclaimMemory, 247*35786f68SRobert Mustacchi AcpiEfiACPIMemoryNVS, 248*35786f68SRobert Mustacchi AcpiEfiMemoryMappedIO, 249*35786f68SRobert Mustacchi AcpiEfiMemoryMappedIOPortSpace, 250*35786f68SRobert Mustacchi AcpiEfiPalCode, 251*35786f68SRobert Mustacchi AcpiEfiMaxMemoryType 252*35786f68SRobert Mustacchi } ACPI_EFI_MEMORY_TYPE; 2537b1019a6SJerry Jelinek 2547b1019a6SJerry Jelinek /* possible caching types for the memory range */ 255*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_UC 0x0000000000000001 256*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_WC 0x0000000000000002 257*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_WT 0x0000000000000004 258*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_WB 0x0000000000000008 259*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_UCE 0x0000000000000010 2607b1019a6SJerry Jelinek 2617b1019a6SJerry Jelinek /* physical memory protection on range */ 262*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_WP 0x0000000000001000 263*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_RP 0x0000000000002000 264*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_XP 0x0000000000004000 2657b1019a6SJerry Jelinek 2667b1019a6SJerry Jelinek /* range requires a runtime mapping */ 267*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_RUNTIME 0x8000000000000000 2687b1019a6SJerry Jelinek 269*35786f68SRobert Mustacchi #define ACPI_EFI_MEMORY_DESCRIPTOR_VERSION 1 2707b1019a6SJerry Jelinek typedef struct { 2717b1019a6SJerry Jelinek UINT32 Type; 2727b1019a6SJerry Jelinek UINT32 Pad; 273*35786f68SRobert Mustacchi ACPI_EFI_PHYSICAL_ADDRESS PhysicalStart; 274*35786f68SRobert Mustacchi ACPI_EFI_VIRTUAL_ADDRESS VirtualStart; 2757b1019a6SJerry Jelinek UINT64 NumberOfPages; 2767b1019a6SJerry Jelinek UINT64 Attribute; 277*35786f68SRobert Mustacchi } ACPI_EFI_MEMORY_DESCRIPTOR; 2787b1019a6SJerry Jelinek 279*35786f68SRobert Mustacchi typedef struct _ACPI_EFI_TABLE_HEARDER { 2807b1019a6SJerry Jelinek UINT64 Signature; 2817b1019a6SJerry Jelinek UINT32 Revision; 2827b1019a6SJerry Jelinek UINT32 HeaderSize; 2837b1019a6SJerry Jelinek UINT32 CRC32; 2847b1019a6SJerry Jelinek UINT32 Reserved; 285*35786f68SRobert Mustacchi } ACPI_EFI_TABLE_HEADER; 2867b1019a6SJerry Jelinek 2877b1019a6SJerry Jelinek typedef 288*35786f68SRobert Mustacchi ACPI_EFI_STATUS 289*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_UNKNOWN_INTERFACE) ( 2907b1019a6SJerry Jelinek void); 2917b1019a6SJerry Jelinek 2927b1019a6SJerry Jelinek 2937b1019a6SJerry Jelinek /* 2947b1019a6SJerry Jelinek * Text output protocol 2957b1019a6SJerry Jelinek */ 296*35786f68SRobert Mustacchi #define ACPI_SIMPLE_TEXT_OUTPUT_PROTOCOL \ 2977b1019a6SJerry Jelinek { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 2987b1019a6SJerry Jelinek 2997b1019a6SJerry Jelinek typedef 300*35786f68SRobert Mustacchi ACPI_EFI_STATUS 301*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_TEXT_RESET) ( 302*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 303*35786f68SRobert Mustacchi BOOLEAN ExtendedVerification); 3047b1019a6SJerry Jelinek 3057b1019a6SJerry Jelinek typedef 306*35786f68SRobert Mustacchi ACPI_EFI_STATUS 307*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_TEXT_OUTPUT_STRING) ( 308*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 309*35786f68SRobert Mustacchi CHAR16 *String); 3107b1019a6SJerry Jelinek 3117b1019a6SJerry Jelinek typedef 312*35786f68SRobert Mustacchi ACPI_EFI_STATUS 313*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_TEXT_TEST_STRING) ( 314*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 315*35786f68SRobert Mustacchi CHAR16 *String); 3167b1019a6SJerry Jelinek 3177b1019a6SJerry Jelinek typedef 318*35786f68SRobert Mustacchi ACPI_EFI_STATUS 319*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_TEXT_QUERY_MODE) ( 320*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 321*35786f68SRobert Mustacchi UINTN ModeNumber, 322*35786f68SRobert Mustacchi UINTN *Columns, 323*35786f68SRobert Mustacchi UINTN *Rows); 3247b1019a6SJerry Jelinek 3257b1019a6SJerry Jelinek typedef 326*35786f68SRobert Mustacchi ACPI_EFI_STATUS 327*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_TEXT_SET_MODE) ( 328*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 329*35786f68SRobert Mustacchi UINTN ModeNumber); 3307b1019a6SJerry Jelinek 3317b1019a6SJerry Jelinek typedef 332*35786f68SRobert Mustacchi ACPI_EFI_STATUS 333*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_TEXT_SET_ATTRIBUTE) ( 334*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 335*35786f68SRobert Mustacchi UINTN Attribute); 3367b1019a6SJerry Jelinek 3377b1019a6SJerry Jelinek typedef 338*35786f68SRobert Mustacchi ACPI_EFI_STATUS 339*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_TEXT_CLEAR_SCREEN) ( 340*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This); 3417b1019a6SJerry Jelinek 3427b1019a6SJerry Jelinek typedef 343*35786f68SRobert Mustacchi ACPI_EFI_STATUS 344*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_TEXT_SET_CURSOR_POSITION) ( 345*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 346*35786f68SRobert Mustacchi UINTN Column, 347*35786f68SRobert Mustacchi UINTN Row); 3487b1019a6SJerry Jelinek 3497b1019a6SJerry Jelinek typedef 350*35786f68SRobert Mustacchi ACPI_EFI_STATUS 351*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_TEXT_ENABLE_CURSOR) ( 352*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *This, 353*35786f68SRobert Mustacchi BOOLEAN Enable); 3547b1019a6SJerry Jelinek 3557b1019a6SJerry Jelinek typedef struct { 3567b1019a6SJerry Jelinek INT32 MaxMode; 3577b1019a6SJerry Jelinek INT32 Mode; 3587b1019a6SJerry Jelinek INT32 Attribute; 3597b1019a6SJerry Jelinek INT32 CursorColumn; 3607b1019a6SJerry Jelinek INT32 CursorRow; 3617b1019a6SJerry Jelinek BOOLEAN CursorVisible; 362*35786f68SRobert Mustacchi } ACPI_SIMPLE_TEXT_OUTPUT_MODE; 3637b1019a6SJerry Jelinek 364*35786f68SRobert Mustacchi typedef struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE { 365*35786f68SRobert Mustacchi ACPI_EFI_TEXT_RESET Reset; 3667b1019a6SJerry Jelinek 367*35786f68SRobert Mustacchi ACPI_EFI_TEXT_OUTPUT_STRING OutputString; 368*35786f68SRobert Mustacchi ACPI_EFI_TEXT_TEST_STRING TestString; 3697b1019a6SJerry Jelinek 370*35786f68SRobert Mustacchi ACPI_EFI_TEXT_QUERY_MODE QueryMode; 371*35786f68SRobert Mustacchi ACPI_EFI_TEXT_SET_MODE SetMode; 372*35786f68SRobert Mustacchi ACPI_EFI_TEXT_SET_ATTRIBUTE SetAttribute; 3737b1019a6SJerry Jelinek 374*35786f68SRobert Mustacchi ACPI_EFI_TEXT_CLEAR_SCREEN ClearScreen; 375*35786f68SRobert Mustacchi ACPI_EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; 376*35786f68SRobert Mustacchi ACPI_EFI_TEXT_ENABLE_CURSOR EnableCursor; 3777b1019a6SJerry Jelinek 378*35786f68SRobert Mustacchi ACPI_SIMPLE_TEXT_OUTPUT_MODE *Mode; 379*35786f68SRobert Mustacchi } ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE; 3807b1019a6SJerry Jelinek 3817b1019a6SJerry Jelinek /* 3827b1019a6SJerry Jelinek * Text input protocol 3837b1019a6SJerry Jelinek */ 384*35786f68SRobert Mustacchi #define ACPI_SIMPLE_TEXT_INPUT_PROTOCOL \ 3857b1019a6SJerry Jelinek { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 3867b1019a6SJerry Jelinek 3877b1019a6SJerry Jelinek typedef struct { 3887b1019a6SJerry Jelinek UINT16 ScanCode; 3897b1019a6SJerry Jelinek CHAR16 UnicodeChar; 390*35786f68SRobert Mustacchi } ACPI_EFI_INPUT_KEY; 3917b1019a6SJerry Jelinek 3927b1019a6SJerry Jelinek /* 3937b1019a6SJerry Jelinek * Baseline unicode control chars 3947b1019a6SJerry Jelinek */ 3957b1019a6SJerry Jelinek #define CHAR_NULL 0x0000 3967b1019a6SJerry Jelinek #define CHAR_BACKSPACE 0x0008 3977b1019a6SJerry Jelinek #define CHAR_TAB 0x0009 3987b1019a6SJerry Jelinek #define CHAR_LINEFEED 0x000A 3997b1019a6SJerry Jelinek #define CHAR_CARRIAGE_RETURN 0x000D 4007b1019a6SJerry Jelinek 4017b1019a6SJerry Jelinek typedef 402*35786f68SRobert Mustacchi ACPI_EFI_STATUS 403*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_INPUT_RESET) ( 404*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_INPUT_INTERFACE *This, 4057b1019a6SJerry Jelinek BOOLEAN ExtendedVerification); 4067b1019a6SJerry Jelinek 4077b1019a6SJerry Jelinek typedef 408*35786f68SRobert Mustacchi ACPI_EFI_STATUS 409*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_INPUT_READ_KEY) ( 410*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_INPUT_INTERFACE *This, 411*35786f68SRobert Mustacchi ACPI_EFI_INPUT_KEY *Key); 4127b1019a6SJerry Jelinek 413*35786f68SRobert Mustacchi typedef struct _ACPI_SIMPLE_INPUT_INTERFACE { 414*35786f68SRobert Mustacchi ACPI_EFI_INPUT_RESET Reset; 415*35786f68SRobert Mustacchi ACPI_EFI_INPUT_READ_KEY ReadKeyStroke; 416*35786f68SRobert Mustacchi ACPI_EFI_EVENT WaitForKey; 417*35786f68SRobert Mustacchi } ACPI_SIMPLE_INPUT_INTERFACE; 4187b1019a6SJerry Jelinek 4197b1019a6SJerry Jelinek 4207b1019a6SJerry Jelinek /* 4217b1019a6SJerry Jelinek * Simple file system protocol 4227b1019a6SJerry Jelinek */ 423*35786f68SRobert Mustacchi #define ACPI_SIMPLE_FILE_SYSTEM_PROTOCOL \ 4247b1019a6SJerry Jelinek { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 4257b1019a6SJerry Jelinek 4267b1019a6SJerry Jelinek typedef 427*35786f68SRobert Mustacchi ACPI_EFI_STATUS 428*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_VOLUME_OPEN) ( 429*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_IO_INTERFACE *This, 430*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE **Root); 4317b1019a6SJerry Jelinek 432*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_IO_INTERFACE_REVISION 0x00010000 4337b1019a6SJerry Jelinek 434*35786f68SRobert Mustacchi typedef struct _ACPI_EFI_FILE_IO_INTERFACE { 4357b1019a6SJerry Jelinek UINT64 Revision; 436*35786f68SRobert Mustacchi ACPI_EFI_VOLUME_OPEN OpenVolume; 437*35786f68SRobert Mustacchi } ACPI_EFI_FILE_IO_INTERFACE; 4387b1019a6SJerry Jelinek 4397b1019a6SJerry Jelinek typedef 440*35786f68SRobert Mustacchi ACPI_EFI_STATUS 441*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_OPEN) ( 442*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File, 443*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE **NewHandle, 4447b1019a6SJerry Jelinek CHAR16 *FileName, 4457b1019a6SJerry Jelinek UINT64 OpenMode, 4467b1019a6SJerry Jelinek UINT64 Attributes); 4477b1019a6SJerry Jelinek 4487b1019a6SJerry Jelinek /* Values for OpenMode used above */ 4497b1019a6SJerry Jelinek 450*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_MODE_READ 0x0000000000000001 451*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_MODE_WRITE 0x0000000000000002 452*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_MODE_CREATE 0x8000000000000000 4537b1019a6SJerry Jelinek 4547b1019a6SJerry Jelinek /* Values for Attribute used above */ 4557b1019a6SJerry Jelinek 456*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_READ_ONLY 0x0000000000000001 457*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_HIDDEN 0x0000000000000002 458*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_SYSTEM 0x0000000000000004 459*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_RESERVIED 0x0000000000000008 460*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_DIRECTORY 0x0000000000000010 461*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_ARCHIVE 0x0000000000000020 462*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_VALID_ATTR 0x0000000000000037 4637b1019a6SJerry Jelinek 4647b1019a6SJerry Jelinek typedef 465*35786f68SRobert Mustacchi ACPI_EFI_STATUS 466*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_CLOSE) ( 467*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File); 4687b1019a6SJerry Jelinek 4697b1019a6SJerry Jelinek typedef 470*35786f68SRobert Mustacchi ACPI_EFI_STATUS 471*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_DELETE) ( 472*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File); 4737b1019a6SJerry Jelinek 4747b1019a6SJerry Jelinek typedef 475*35786f68SRobert Mustacchi ACPI_EFI_STATUS 476*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_READ) ( 477*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File, 4787b1019a6SJerry Jelinek UINTN *BufferSize, 4797b1019a6SJerry Jelinek VOID *Buffer); 4807b1019a6SJerry Jelinek 4817b1019a6SJerry Jelinek typedef 482*35786f68SRobert Mustacchi ACPI_EFI_STATUS 483*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_WRITE) ( 484*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File, 4857b1019a6SJerry Jelinek UINTN *BufferSize, 4867b1019a6SJerry Jelinek VOID *Buffer); 4877b1019a6SJerry Jelinek 4887b1019a6SJerry Jelinek typedef 489*35786f68SRobert Mustacchi ACPI_EFI_STATUS 490*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_SET_POSITION) ( 491*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File, 4927b1019a6SJerry Jelinek UINT64 Position); 4937b1019a6SJerry Jelinek 4947b1019a6SJerry Jelinek typedef 495*35786f68SRobert Mustacchi ACPI_EFI_STATUS 496*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_GET_POSITION) ( 497*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File, 4987b1019a6SJerry Jelinek UINT64 *Position); 4997b1019a6SJerry Jelinek 500*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_INFO_ID \ 501*35786f68SRobert Mustacchi { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 502*35786f68SRobert Mustacchi 503*35786f68SRobert Mustacchi typedef struct { 504*35786f68SRobert Mustacchi UINT64 Size; 505*35786f68SRobert Mustacchi UINT64 FileSize; 506*35786f68SRobert Mustacchi UINT64 PhysicalSize; 507*35786f68SRobert Mustacchi ACPI_EFI_TIME CreateTime; 508*35786f68SRobert Mustacchi ACPI_EFI_TIME LastAccessTime; 509*35786f68SRobert Mustacchi ACPI_EFI_TIME ModificationTime; 510*35786f68SRobert Mustacchi UINT64 Attribute; 511*35786f68SRobert Mustacchi CHAR16 FileName[1]; 512*35786f68SRobert Mustacchi } ACPI_EFI_FILE_INFO; 513*35786f68SRobert Mustacchi 514*35786f68SRobert Mustacchi #define SIZE_OF_ACPI_EFI_FILE_INFO ACPI_OFFSET(ACPI_EFI_FILE_INFO, FileName) 515*35786f68SRobert Mustacchi 5167b1019a6SJerry Jelinek typedef 517*35786f68SRobert Mustacchi ACPI_EFI_STATUS 518*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_GET_INFO) ( 519*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File, 520*35786f68SRobert Mustacchi ACPI_EFI_GUID *InformationType, 5217b1019a6SJerry Jelinek UINTN *BufferSize, 5227b1019a6SJerry Jelinek VOID *Buffer); 5237b1019a6SJerry Jelinek 5247b1019a6SJerry Jelinek typedef 525*35786f68SRobert Mustacchi ACPI_EFI_STATUS 526*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_SET_INFO) ( 527*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File, 528*35786f68SRobert Mustacchi ACPI_EFI_GUID *InformationType, 5297b1019a6SJerry Jelinek UINTN BufferSize, 5307b1019a6SJerry Jelinek VOID *Buffer); 5317b1019a6SJerry Jelinek 5327b1019a6SJerry Jelinek typedef 533*35786f68SRobert Mustacchi ACPI_EFI_STATUS 534*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FILE_FLUSH) ( 535*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE *File); 5367b1019a6SJerry Jelinek 5377b1019a6SJerry Jelinek 538*35786f68SRobert Mustacchi #define ACPI_EFI_FILE_HANDLE_REVISION 0x00010000 5397b1019a6SJerry Jelinek 540*35786f68SRobert Mustacchi typedef struct _ACPI_EFI_FILE_HANDLE { 541*35786f68SRobert Mustacchi UINT64 Revision; 542*35786f68SRobert Mustacchi ACPI_EFI_FILE_OPEN Open; 543*35786f68SRobert Mustacchi ACPI_EFI_FILE_CLOSE Close; 544*35786f68SRobert Mustacchi ACPI_EFI_FILE_DELETE Delete; 545*35786f68SRobert Mustacchi ACPI_EFI_FILE_READ Read; 546*35786f68SRobert Mustacchi ACPI_EFI_FILE_WRITE Write; 547*35786f68SRobert Mustacchi ACPI_EFI_FILE_GET_POSITION GetPosition; 548*35786f68SRobert Mustacchi ACPI_EFI_FILE_SET_POSITION SetPosition; 549*35786f68SRobert Mustacchi ACPI_EFI_FILE_GET_INFO GetInfo; 550*35786f68SRobert Mustacchi ACPI_EFI_FILE_SET_INFO SetInfo; 551*35786f68SRobert Mustacchi ACPI_EFI_FILE_FLUSH Flush; 552*35786f68SRobert Mustacchi } ACPI_EFI_FILE_STRUCT, *ACPI_EFI_FILE_HANDLE; 5537b1019a6SJerry Jelinek 5547b1019a6SJerry Jelinek 5557b1019a6SJerry Jelinek /* 5567b1019a6SJerry Jelinek * Loaded image protocol 5577b1019a6SJerry Jelinek */ 558*35786f68SRobert Mustacchi #define ACPI_EFI_LOADED_IMAGE_PROTOCOL \ 5597b1019a6SJerry Jelinek { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} } 5607b1019a6SJerry Jelinek 5617b1019a6SJerry Jelinek typedef 562*35786f68SRobert Mustacchi ACPI_EFI_STATUS 563*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_IMAGE_ENTRY_POINT) ( 564*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ImageHandle, 565*35786f68SRobert Mustacchi struct _ACPI_EFI_SYSTEM_TABLE *SystemTable); 5667b1019a6SJerry Jelinek 5677b1019a6SJerry Jelinek typedef 568*35786f68SRobert Mustacchi ACPI_EFI_STATUS 569*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_IMAGE_LOAD) ( 5707b1019a6SJerry Jelinek BOOLEAN BootPolicy, 571*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ParentImageHandle, 572*35786f68SRobert Mustacchi ACPI_EFI_DEVICE_PATH *FilePath, 5737b1019a6SJerry Jelinek VOID *SourceBuffer, 5747b1019a6SJerry Jelinek UINTN SourceSize, 575*35786f68SRobert Mustacchi ACPI_EFI_HANDLE *ImageHandle); 5767b1019a6SJerry Jelinek 5777b1019a6SJerry Jelinek typedef 578*35786f68SRobert Mustacchi ACPI_EFI_STATUS 579*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_IMAGE_START) ( 580*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ImageHandle, 5817b1019a6SJerry Jelinek UINTN *ExitDataSize, 5827b1019a6SJerry Jelinek CHAR16 **ExitData); 5837b1019a6SJerry Jelinek 5847b1019a6SJerry Jelinek typedef 585*35786f68SRobert Mustacchi ACPI_EFI_STATUS 586*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_EXIT) ( 587*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ImageHandle, 588*35786f68SRobert Mustacchi ACPI_EFI_STATUS ExitStatus, 5897b1019a6SJerry Jelinek UINTN ExitDataSize, 5907b1019a6SJerry Jelinek CHAR16 *ExitData); 5917b1019a6SJerry Jelinek 5927b1019a6SJerry Jelinek typedef 593*35786f68SRobert Mustacchi ACPI_EFI_STATUS 594*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_IMAGE_UNLOAD) ( 595*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ImageHandle); 596*35786f68SRobert Mustacchi 597*35786f68SRobert Mustacchi 598*35786f68SRobert Mustacchi typedef 599*35786f68SRobert Mustacchi ACPI_EFI_STATUS 600*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_STALL) ( 601*35786f68SRobert Mustacchi UINTN Microseconds); 602*35786f68SRobert Mustacchi 603*35786f68SRobert Mustacchi typedef 604*35786f68SRobert Mustacchi ACPI_EFI_STATUS 605*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_SET_WATCHDOG_TIMER) ( 606*35786f68SRobert Mustacchi UINTN Timeout, 607*35786f68SRobert Mustacchi UINT64 WatchdogCode, 608*35786f68SRobert Mustacchi UINTN DataSize, 609*35786f68SRobert Mustacchi CHAR16 *WatchdogData); 6107b1019a6SJerry Jelinek 6117b1019a6SJerry Jelinek 6127b1019a6SJerry Jelinek #define EFI_IMAGE_INFORMATION_REVISION 0x1000 6137b1019a6SJerry Jelinek typedef struct { 6147b1019a6SJerry Jelinek UINT32 Revision; 615*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ParentHandle; 616*35786f68SRobert Mustacchi struct _ACPI_EFI_SYSTEM_TABLE *SystemTable; 617*35786f68SRobert Mustacchi ACPI_EFI_HANDLE DeviceHandle; 618*35786f68SRobert Mustacchi ACPI_EFI_DEVICE_PATH *FilePath; 6197b1019a6SJerry Jelinek VOID *Reserved; 6207b1019a6SJerry Jelinek UINT32 LoadOptionsSize; 6217b1019a6SJerry Jelinek VOID *LoadOptions; 6227b1019a6SJerry Jelinek VOID *ImageBase; 6237b1019a6SJerry Jelinek UINT64 ImageSize; 624*35786f68SRobert Mustacchi ACPI_EFI_MEMORY_TYPE ImageCodeType; 625*35786f68SRobert Mustacchi ACPI_EFI_MEMORY_TYPE ImageDataType; 626*35786f68SRobert Mustacchi ACPI_EFI_IMAGE_UNLOAD Unload; 6277b1019a6SJerry Jelinek 628*35786f68SRobert Mustacchi } ACPI_EFI_LOADED_IMAGE; 6297b1019a6SJerry Jelinek 6307b1019a6SJerry Jelinek 6317b1019a6SJerry Jelinek /* 6327b1019a6SJerry Jelinek * EFI Memory 6337b1019a6SJerry Jelinek */ 6347b1019a6SJerry Jelinek typedef 635*35786f68SRobert Mustacchi ACPI_EFI_STATUS 636*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_ALLOCATE_PAGES) ( 637*35786f68SRobert Mustacchi ACPI_EFI_ALLOCATE_TYPE Type, 638*35786f68SRobert Mustacchi ACPI_EFI_MEMORY_TYPE MemoryType, 6397b1019a6SJerry Jelinek UINTN NoPages, 640*35786f68SRobert Mustacchi ACPI_EFI_PHYSICAL_ADDRESS *Memory); 6417b1019a6SJerry Jelinek 6427b1019a6SJerry Jelinek typedef 643*35786f68SRobert Mustacchi ACPI_EFI_STATUS 644*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FREE_PAGES) ( 645*35786f68SRobert Mustacchi ACPI_EFI_PHYSICAL_ADDRESS Memory, 6467b1019a6SJerry Jelinek UINTN NoPages); 6477b1019a6SJerry Jelinek 6487b1019a6SJerry Jelinek typedef 649*35786f68SRobert Mustacchi ACPI_EFI_STATUS 650*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_GET_MEMORY_MAP) ( 6517b1019a6SJerry Jelinek UINTN *MemoryMapSize, 652*35786f68SRobert Mustacchi ACPI_EFI_MEMORY_DESCRIPTOR *MemoryMap, 6537b1019a6SJerry Jelinek UINTN *MapKey, 6547b1019a6SJerry Jelinek UINTN *DescriptorSize, 6557b1019a6SJerry Jelinek UINT32 *DescriptorVersion); 6567b1019a6SJerry Jelinek 657*35786f68SRobert Mustacchi #define NextMemoryDescriptor(Ptr,Size) ((ACPI_EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size)) 6587b1019a6SJerry Jelinek 6597b1019a6SJerry Jelinek typedef 660*35786f68SRobert Mustacchi ACPI_EFI_STATUS 661*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_ALLOCATE_POOL) ( 662*35786f68SRobert Mustacchi ACPI_EFI_MEMORY_TYPE PoolType, 6637b1019a6SJerry Jelinek UINTN Size, 6647b1019a6SJerry Jelinek VOID **Buffer); 6657b1019a6SJerry Jelinek 6667b1019a6SJerry Jelinek typedef 667*35786f68SRobert Mustacchi ACPI_EFI_STATUS 668*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_FREE_POOL) ( 6697b1019a6SJerry Jelinek VOID *Buffer); 6707b1019a6SJerry Jelinek 6717b1019a6SJerry Jelinek 672*35786f68SRobert Mustacchi /* 673*35786f68SRobert Mustacchi * EFI Time 674*35786f68SRobert Mustacchi */ 675*35786f68SRobert Mustacchi typedef struct { 676*35786f68SRobert Mustacchi UINT32 Resolution; 677*35786f68SRobert Mustacchi UINT32 Accuracy; 678*35786f68SRobert Mustacchi BOOLEAN SetsToZero; 679*35786f68SRobert Mustacchi } ACPI_EFI_TIME_CAPABILITIES; 680*35786f68SRobert Mustacchi 681*35786f68SRobert Mustacchi typedef 682*35786f68SRobert Mustacchi ACPI_EFI_STATUS 683*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_GET_TIME) ( 684*35786f68SRobert Mustacchi ACPI_EFI_TIME *Time, 685*35786f68SRobert Mustacchi ACPI_EFI_TIME_CAPABILITIES *Capabilities); 686*35786f68SRobert Mustacchi 687*35786f68SRobert Mustacchi typedef 688*35786f68SRobert Mustacchi ACPI_EFI_STATUS 689*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_SET_TIME) ( 690*35786f68SRobert Mustacchi ACPI_EFI_TIME *Time); 691*35786f68SRobert Mustacchi 692*35786f68SRobert Mustacchi 6937b1019a6SJerry Jelinek /* 6947b1019a6SJerry Jelinek * Protocol handler functions 6957b1019a6SJerry Jelinek */ 6967b1019a6SJerry Jelinek typedef enum { 697*35786f68SRobert Mustacchi ACPI_EFI_NATIVE_INTERFACE, 698*35786f68SRobert Mustacchi ACPI_EFI_PCODE_INTERFACE 699*35786f68SRobert Mustacchi } ACPI_EFI_INTERFACE_TYPE; 7007b1019a6SJerry Jelinek 7017b1019a6SJerry Jelinek typedef enum { 702*35786f68SRobert Mustacchi AcpiEfiAllHandles, 703*35786f68SRobert Mustacchi AcpiEfiByRegisterNotify, 704*35786f68SRobert Mustacchi AcpiEfiByProtocol 705*35786f68SRobert Mustacchi } ACPI_EFI_LOCATE_SEARCH_TYPE; 7067b1019a6SJerry Jelinek 7077b1019a6SJerry Jelinek typedef 708*35786f68SRobert Mustacchi ACPI_EFI_STATUS 709*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_INSTALL_PROTOCOL_INTERFACE) ( 710*35786f68SRobert Mustacchi ACPI_EFI_HANDLE *Handle, 711*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 712*35786f68SRobert Mustacchi ACPI_EFI_INTERFACE_TYPE InterfaceType, 7137b1019a6SJerry Jelinek VOID *Interface); 7147b1019a6SJerry Jelinek 7157b1019a6SJerry Jelinek typedef 716*35786f68SRobert Mustacchi ACPI_EFI_STATUS 717*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_REINSTALL_PROTOCOL_INTERFACE) ( 718*35786f68SRobert Mustacchi ACPI_EFI_HANDLE Handle, 719*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 7207b1019a6SJerry Jelinek VOID *OldInterface, 7217b1019a6SJerry Jelinek VOID *NewInterface); 7227b1019a6SJerry Jelinek 7237b1019a6SJerry Jelinek typedef 724*35786f68SRobert Mustacchi ACPI_EFI_STATUS 725*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_UNINSTALL_PROTOCOL_INTERFACE) ( 726*35786f68SRobert Mustacchi ACPI_EFI_HANDLE Handle, 727*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 7287b1019a6SJerry Jelinek VOID *Interface); 7297b1019a6SJerry Jelinek 7307b1019a6SJerry Jelinek typedef 731*35786f68SRobert Mustacchi ACPI_EFI_STATUS 732*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_HANDLE_PROTOCOL) ( 733*35786f68SRobert Mustacchi ACPI_EFI_HANDLE Handle, 734*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 7357b1019a6SJerry Jelinek VOID **Interface); 7367b1019a6SJerry Jelinek 7377b1019a6SJerry Jelinek typedef 738*35786f68SRobert Mustacchi ACPI_EFI_STATUS 739*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_REGISTER_PROTOCOL_NOTIFY) ( 740*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 741*35786f68SRobert Mustacchi ACPI_EFI_EVENT Event, 7427b1019a6SJerry Jelinek VOID **Registration); 7437b1019a6SJerry Jelinek 7447b1019a6SJerry Jelinek typedef 745*35786f68SRobert Mustacchi ACPI_EFI_STATUS 746*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_LOCATE_HANDLE) ( 747*35786f68SRobert Mustacchi ACPI_EFI_LOCATE_SEARCH_TYPE SearchType, 748*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 7497b1019a6SJerry Jelinek VOID *SearchKey, 7507b1019a6SJerry Jelinek UINTN *BufferSize, 751*35786f68SRobert Mustacchi ACPI_EFI_HANDLE *Buffer); 7527b1019a6SJerry Jelinek 7537b1019a6SJerry Jelinek typedef 754*35786f68SRobert Mustacchi ACPI_EFI_STATUS 755*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_LOCATE_DEVICE_PATH) ( 756*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 757*35786f68SRobert Mustacchi ACPI_EFI_DEVICE_PATH **DevicePath, 758*35786f68SRobert Mustacchi ACPI_EFI_HANDLE *Device); 7597b1019a6SJerry Jelinek 7607b1019a6SJerry Jelinek typedef 761*35786f68SRobert Mustacchi ACPI_EFI_STATUS 762*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_INSTALL_CONFIGURATION_TABLE) ( 763*35786f68SRobert Mustacchi ACPI_EFI_GUID *Guid, 7647b1019a6SJerry Jelinek VOID *Table); 7657b1019a6SJerry Jelinek 766*35786f68SRobert Mustacchi #define ACPI_EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001 767*35786f68SRobert Mustacchi #define ACPI_EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002 768*35786f68SRobert Mustacchi #define ACPI_EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004 769*35786f68SRobert Mustacchi #define ACPI_EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008 770*35786f68SRobert Mustacchi #define ACPI_EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010 771*35786f68SRobert Mustacchi #define ACPI_EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020 7727b1019a6SJerry Jelinek 7737b1019a6SJerry Jelinek typedef 774*35786f68SRobert Mustacchi ACPI_EFI_STATUS 775*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_OPEN_PROTOCOL) ( 776*35786f68SRobert Mustacchi ACPI_EFI_HANDLE Handle, 777*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 7787b1019a6SJerry Jelinek VOID **Interface, 779*35786f68SRobert Mustacchi ACPI_EFI_HANDLE AgentHandle, 780*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ControllerHandle, 7817b1019a6SJerry Jelinek UINT32 Attributes); 7827b1019a6SJerry Jelinek 7837b1019a6SJerry Jelinek typedef 784*35786f68SRobert Mustacchi ACPI_EFI_STATUS 785*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_CLOSE_PROTOCOL) ( 786*35786f68SRobert Mustacchi ACPI_EFI_HANDLE Handle, 787*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 788*35786f68SRobert Mustacchi ACPI_EFI_HANDLE AgentHandle, 789*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ControllerHandle); 7907b1019a6SJerry Jelinek 7917b1019a6SJerry Jelinek typedef struct { 792*35786f68SRobert Mustacchi ACPI_EFI_HANDLE AgentHandle; 793*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ControllerHandle; 794*35786f68SRobert Mustacchi UINT32 Attributes; 795*35786f68SRobert Mustacchi UINT32 OpenCount; 796*35786f68SRobert Mustacchi } ACPI_EFI_OPEN_PROTOCOL_INFORMATION_ENTRY; 797*35786f68SRobert Mustacchi 798*35786f68SRobert Mustacchi typedef 799*35786f68SRobert Mustacchi ACPI_EFI_STATUS 800*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_OPEN_PROTOCOL_INFORMATION) ( 801*35786f68SRobert Mustacchi ACPI_EFI_HANDLE Handle, 802*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 803*35786f68SRobert Mustacchi ACPI_EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, 8047b1019a6SJerry Jelinek UINTN *EntryCount); 8057b1019a6SJerry Jelinek 8067b1019a6SJerry Jelinek typedef 807*35786f68SRobert Mustacchi ACPI_EFI_STATUS 808*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_PROTOCOLS_PER_HANDLE) ( 809*35786f68SRobert Mustacchi ACPI_EFI_HANDLE Handle, 810*35786f68SRobert Mustacchi ACPI_EFI_GUID ***ProtocolBuffer, 8117b1019a6SJerry Jelinek UINTN *ProtocolBufferCount); 8127b1019a6SJerry Jelinek 8137b1019a6SJerry Jelinek typedef 814*35786f68SRobert Mustacchi ACPI_EFI_STATUS 815*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_LOCATE_HANDLE_BUFFER) ( 816*35786f68SRobert Mustacchi ACPI_EFI_LOCATE_SEARCH_TYPE SearchType, 817*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 8187b1019a6SJerry Jelinek VOID *SearchKey, 8197b1019a6SJerry Jelinek UINTN *NoHandles, 820*35786f68SRobert Mustacchi ACPI_EFI_HANDLE **Buffer); 8217b1019a6SJerry Jelinek 8227b1019a6SJerry Jelinek typedef 823*35786f68SRobert Mustacchi ACPI_EFI_STATUS 824*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_LOCATE_PROTOCOL) ( 825*35786f68SRobert Mustacchi ACPI_EFI_GUID *Protocol, 8267b1019a6SJerry Jelinek VOID *Registration, 8277b1019a6SJerry Jelinek VOID **Interface); 8287b1019a6SJerry Jelinek 8297b1019a6SJerry Jelinek typedef 830*35786f68SRobert Mustacchi ACPI_EFI_STATUS 831*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( 832*35786f68SRobert Mustacchi ACPI_EFI_HANDLE *Handle, 8337b1019a6SJerry Jelinek ...); 8347b1019a6SJerry Jelinek 8357b1019a6SJerry Jelinek typedef 836*35786f68SRobert Mustacchi ACPI_EFI_STATUS 837*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) ( 838*35786f68SRobert Mustacchi ACPI_EFI_HANDLE Handle, 8397b1019a6SJerry Jelinek ...); 8407b1019a6SJerry Jelinek 8417b1019a6SJerry Jelinek typedef 842*35786f68SRobert Mustacchi ACPI_EFI_STATUS 843*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_CALCULATE_CRC32) ( 8447b1019a6SJerry Jelinek VOID *Data, 8457b1019a6SJerry Jelinek UINTN DataSize, 8467b1019a6SJerry Jelinek UINT32 *Crc32); 8477b1019a6SJerry Jelinek 8487b1019a6SJerry Jelinek typedef 8497b1019a6SJerry Jelinek VOID 850*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_COPY_MEM) ( 8517b1019a6SJerry Jelinek VOID *Destination, 8527b1019a6SJerry Jelinek VOID *Source, 8537b1019a6SJerry Jelinek UINTN Length); 8547b1019a6SJerry Jelinek 8557b1019a6SJerry Jelinek typedef 8567b1019a6SJerry Jelinek VOID 857*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_SET_MEM) ( 8587b1019a6SJerry Jelinek VOID *Buffer, 8597b1019a6SJerry Jelinek UINTN Size, 8607b1019a6SJerry Jelinek UINT8 Value); 8617b1019a6SJerry Jelinek 8627b1019a6SJerry Jelinek /* 8637b1019a6SJerry Jelinek * EFI Boot Services Table 8647b1019a6SJerry Jelinek */ 865*35786f68SRobert Mustacchi #define ACPI_EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42 866*35786f68SRobert Mustacchi #define ACPI_EFI_BOOT_SERVICES_REVISION (ACPI_EFI_SPECIFICATION_MAJOR_REVISION<<16) | (ACPI_EFI_SPECIFICATION_MINOR_REVISION) 8677b1019a6SJerry Jelinek 868*35786f68SRobert Mustacchi typedef struct _ACPI_EFI_BOOT_SERVICES { 869*35786f68SRobert Mustacchi ACPI_EFI_TABLE_HEADER Hdr; 8707b1019a6SJerry Jelinek 8717b1019a6SJerry Jelinek #if 0 872*35786f68SRobert Mustacchi ACPI_EFI_RAISE_TPL RaiseTPL; 873*35786f68SRobert Mustacchi ACPI_EFI_RESTORE_TPL RestoreTPL; 8747b1019a6SJerry Jelinek #else 875*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE RaiseTPL; 876*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE RestoreTPL; 8777b1019a6SJerry Jelinek #endif 8787b1019a6SJerry Jelinek 879*35786f68SRobert Mustacchi ACPI_EFI_ALLOCATE_PAGES AllocatePages; 880*35786f68SRobert Mustacchi ACPI_EFI_FREE_PAGES FreePages; 881*35786f68SRobert Mustacchi ACPI_EFI_GET_MEMORY_MAP GetMemoryMap; 882*35786f68SRobert Mustacchi ACPI_EFI_ALLOCATE_POOL AllocatePool; 883*35786f68SRobert Mustacchi ACPI_EFI_FREE_POOL FreePool; 8847b1019a6SJerry Jelinek 8857b1019a6SJerry Jelinek #if 0 886*35786f68SRobert Mustacchi ACPI_EFI_CREATE_EVENT CreateEvent; 887*35786f68SRobert Mustacchi ACPI_EFI_SET_TIMER SetTimer; 888*35786f68SRobert Mustacchi ACPI_EFI_WAIT_FOR_EVENT WaitForEvent; 889*35786f68SRobert Mustacchi ACPI_EFI_SIGNAL_EVENT SignalEvent; 890*35786f68SRobert Mustacchi ACPI_EFI_CLOSE_EVENT CloseEvent; 891*35786f68SRobert Mustacchi ACPI_EFI_CHECK_EVENT CheckEvent; 8927b1019a6SJerry Jelinek #else 893*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE CreateEvent; 894*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE SetTimer; 895*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE WaitForEvent; 896*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE SignalEvent; 897*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE CloseEvent; 898*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE CheckEvent; 8997b1019a6SJerry Jelinek #endif 9007b1019a6SJerry Jelinek 901*35786f68SRobert Mustacchi ACPI_EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface; 902*35786f68SRobert Mustacchi ACPI_EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface; 903*35786f68SRobert Mustacchi ACPI_EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface; 904*35786f68SRobert Mustacchi ACPI_EFI_HANDLE_PROTOCOL HandleProtocol; 905*35786f68SRobert Mustacchi ACPI_EFI_HANDLE_PROTOCOL PCHandleProtocol; 906*35786f68SRobert Mustacchi ACPI_EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify; 907*35786f68SRobert Mustacchi ACPI_EFI_LOCATE_HANDLE LocateHandle; 908*35786f68SRobert Mustacchi ACPI_EFI_LOCATE_DEVICE_PATH LocateDevicePath; 909*35786f68SRobert Mustacchi ACPI_EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable; 910*35786f68SRobert Mustacchi 911*35786f68SRobert Mustacchi ACPI_EFI_IMAGE_LOAD LoadImage; 912*35786f68SRobert Mustacchi ACPI_EFI_IMAGE_START StartImage; 913*35786f68SRobert Mustacchi ACPI_EFI_EXIT Exit; 914*35786f68SRobert Mustacchi ACPI_EFI_IMAGE_UNLOAD UnloadImage; 9157b1019a6SJerry Jelinek 9167b1019a6SJerry Jelinek #if 0 917*35786f68SRobert Mustacchi ACPI_EFI_EXIT_BOOT_SERVICES ExitBootServices; 918*35786f68SRobert Mustacchi ACPI_EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; 9197b1019a6SJerry Jelinek #else 920*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE ExitBootServices; 921*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE GetNextMonotonicCount; 9227b1019a6SJerry Jelinek #endif 923*35786f68SRobert Mustacchi ACPI_EFI_STALL Stall; 924*35786f68SRobert Mustacchi ACPI_EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; 9257b1019a6SJerry Jelinek 9267b1019a6SJerry Jelinek #if 0 927*35786f68SRobert Mustacchi ACPI_EFI_CONNECT_CONTROLLER ConnectController; 928*35786f68SRobert Mustacchi ACPI_EFI_DISCONNECT_CONTROLLER DisconnectController; 9297b1019a6SJerry Jelinek #else 930*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE ConnectController; 931*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE DisconnectController; 9327b1019a6SJerry Jelinek #endif 9337b1019a6SJerry Jelinek 934*35786f68SRobert Mustacchi ACPI_EFI_OPEN_PROTOCOL OpenProtocol; 935*35786f68SRobert Mustacchi ACPI_EFI_CLOSE_PROTOCOL CloseProtocol; 936*35786f68SRobert Mustacchi ACPI_EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation; 937*35786f68SRobert Mustacchi ACPI_EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle; 938*35786f68SRobert Mustacchi ACPI_EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer; 939*35786f68SRobert Mustacchi ACPI_EFI_LOCATE_PROTOCOL LocateProtocol; 940*35786f68SRobert Mustacchi ACPI_EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces; 941*35786f68SRobert Mustacchi ACPI_EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces; 9427b1019a6SJerry Jelinek 943*35786f68SRobert Mustacchi ACPI_EFI_CALCULATE_CRC32 CalculateCrc32; 9447b1019a6SJerry Jelinek 945*35786f68SRobert Mustacchi ACPI_EFI_COPY_MEM CopyMem; 946*35786f68SRobert Mustacchi ACPI_EFI_SET_MEM SetMem; 9477b1019a6SJerry Jelinek 9487b1019a6SJerry Jelinek #if 0 949*35786f68SRobert Mustacchi ACPI_EFI_CREATE_EVENT_EX CreateEventEx; 9507b1019a6SJerry Jelinek #else 951*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE CreateEventEx; 9527b1019a6SJerry Jelinek #endif 953*35786f68SRobert Mustacchi } ACPI_EFI_BOOT_SERVICES; 954*35786f68SRobert Mustacchi 955*35786f68SRobert Mustacchi 956*35786f68SRobert Mustacchi /* 957*35786f68SRobert Mustacchi * EFI Runtime Services Table 958*35786f68SRobert Mustacchi */ 959*35786f68SRobert Mustacchi #define ACPI_EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552 960*35786f68SRobert Mustacchi #define ACPI_EFI_RUNTIME_SERVICES_REVISION (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION) 961*35786f68SRobert Mustacchi 962*35786f68SRobert Mustacchi typedef struct _ACPI_EFI_RUNTIME_SERVICES { 963*35786f68SRobert Mustacchi ACPI_EFI_TABLE_HEADER Hdr; 964*35786f68SRobert Mustacchi 965*35786f68SRobert Mustacchi ACPI_EFI_GET_TIME GetTime; 966*35786f68SRobert Mustacchi ACPI_EFI_SET_TIME SetTime; 967*35786f68SRobert Mustacchi #if 0 968*35786f68SRobert Mustacchi ACPI_EFI_GET_WAKEUP_TIME GetWakeupTime; 969*35786f68SRobert Mustacchi ACPI_EFI_SET_WAKEUP_TIME SetWakeupTime; 970*35786f68SRobert Mustacchi #else 971*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE GetWakeupTime; 972*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE SetWakeupTime; 973*35786f68SRobert Mustacchi #endif 974*35786f68SRobert Mustacchi 975*35786f68SRobert Mustacchi #if 0 976*35786f68SRobert Mustacchi ACPI_EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap; 977*35786f68SRobert Mustacchi ACPI_EFI_CONVERT_POINTER ConvertPointer; 978*35786f68SRobert Mustacchi #else 979*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE SetVirtualAddressMap; 980*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE ConvertPointer; 981*35786f68SRobert Mustacchi #endif 982*35786f68SRobert Mustacchi 983*35786f68SRobert Mustacchi #if 0 984*35786f68SRobert Mustacchi ACPI_EFI_GET_VARIABLE GetVariable; 985*35786f68SRobert Mustacchi ACPI_EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName; 986*35786f68SRobert Mustacchi ACPI_EFI_SET_VARIABLE SetVariable; 987*35786f68SRobert Mustacchi #else 988*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE GetVariable; 989*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE GetNextVariableName; 990*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE SetVariable; 991*35786f68SRobert Mustacchi #endif 992*35786f68SRobert Mustacchi 993*35786f68SRobert Mustacchi #if 0 994*35786f68SRobert Mustacchi ACPI_EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount; 995*35786f68SRobert Mustacchi ACPI_EFI_RESET_SYSTEM ResetSystem; 996*35786f68SRobert Mustacchi #else 997*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE GetNextHighMonotonicCount; 998*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE ResetSystem; 999*35786f68SRobert Mustacchi #endif 1000*35786f68SRobert Mustacchi 1001*35786f68SRobert Mustacchi } ACPI_EFI_RUNTIME_SERVICES; 10027b1019a6SJerry Jelinek 10037b1019a6SJerry Jelinek 10047b1019a6SJerry Jelinek /* 10057b1019a6SJerry Jelinek * EFI System Table 10067b1019a6SJerry Jelinek */ 10077b1019a6SJerry Jelinek 10087b1019a6SJerry Jelinek /* 10097b1019a6SJerry Jelinek * EFI Configuration Table and GUID definitions 10107b1019a6SJerry Jelinek */ 1011*35786f68SRobert Mustacchi #define ACPI_TABLE_GUID \ 10127b1019a6SJerry Jelinek { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } 1013*35786f68SRobert Mustacchi #define ACPI_20_TABLE_GUID \ 10147b1019a6SJerry Jelinek { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} } 10157b1019a6SJerry Jelinek 1016*35786f68SRobert Mustacchi typedef struct _ACPI_EFI_CONFIGURATION_TABLE { 1017*35786f68SRobert Mustacchi ACPI_EFI_GUID VendorGuid; 10187b1019a6SJerry Jelinek VOID *VendorTable; 1019*35786f68SRobert Mustacchi } ACPI_EFI_CONFIGURATION_TABLE; 10207b1019a6SJerry Jelinek 10217b1019a6SJerry Jelinek 1022*35786f68SRobert Mustacchi #define ACPI_EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249 1023*35786f68SRobert Mustacchi #define ACPI_EFI_SYSTEM_TABLE_REVISION (ACPI_EFI_SPECIFICATION_MAJOR_REVISION<<16) | (ACPI_EFI_SPECIFICATION_MINOR_REVISION) 10247b1019a6SJerry Jelinek 1025*35786f68SRobert Mustacchi typedef struct _ACPI_EFI_SYSTEM_TABLE { 1026*35786f68SRobert Mustacchi ACPI_EFI_TABLE_HEADER Hdr; 10277b1019a6SJerry Jelinek 1028*35786f68SRobert Mustacchi CHAR16 *FirmwareVendor; 1029*35786f68SRobert Mustacchi UINT32 FirmwareRevision; 10307b1019a6SJerry Jelinek 1031*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ConsoleInHandle; 1032*35786f68SRobert Mustacchi ACPI_SIMPLE_INPUT_INTERFACE *ConIn; 10337b1019a6SJerry Jelinek 1034*35786f68SRobert Mustacchi ACPI_EFI_HANDLE ConsoleOutHandle; 1035*35786f68SRobert Mustacchi ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut; 10367b1019a6SJerry Jelinek 1037*35786f68SRobert Mustacchi ACPI_EFI_HANDLE StandardErrorHandle; 1038*35786f68SRobert Mustacchi ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr; 10397b1019a6SJerry Jelinek 1040*35786f68SRobert Mustacchi ACPI_EFI_RUNTIME_SERVICES *RuntimeServices; 1041*35786f68SRobert Mustacchi ACPI_EFI_BOOT_SERVICES *BootServices; 1042*35786f68SRobert Mustacchi 1043*35786f68SRobert Mustacchi UINTN NumberOfTableEntries; 1044*35786f68SRobert Mustacchi ACPI_EFI_CONFIGURATION_TABLE *ConfigurationTable; 1045*35786f68SRobert Mustacchi 1046*35786f68SRobert Mustacchi } ACPI_EFI_SYSTEM_TABLE; 10477b1019a6SJerry Jelinek 10487b1019a6SJerry Jelinek 1049*35786f68SRobert Mustacchi /* 1050*35786f68SRobert Mustacchi * EFI PCI I/O Protocol 1051*35786f68SRobert Mustacchi */ 1052*35786f68SRobert Mustacchi #define ACPI_EFI_PCI_IO_PROTOCOL \ 1053*35786f68SRobert Mustacchi { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x2, 0x9a} } 10547b1019a6SJerry Jelinek 1055*35786f68SRobert Mustacchi typedef enum { 1056*35786f68SRobert Mustacchi AcpiEfiPciIoWidthUint8 = 0, 1057*35786f68SRobert Mustacchi AcpiEfiPciIoWidthUint16, 1058*35786f68SRobert Mustacchi AcpiEfiPciIoWidthUint32, 1059*35786f68SRobert Mustacchi AcpiEfiPciIoWidthUint64, 1060*35786f68SRobert Mustacchi AcpiEfiPciIoWidthFifoUint8, 1061*35786f68SRobert Mustacchi AcpiEfiPciIoWidthFifoUint16, 1062*35786f68SRobert Mustacchi AcpiEfiPciIoWidthFifoUint32, 1063*35786f68SRobert Mustacchi AcpiEfiPciIoWidthFifoUint64, 1064*35786f68SRobert Mustacchi AcpiEfiPciIoWidthFillUint8, 1065*35786f68SRobert Mustacchi AcpiEfiPciIoWidthFillUint16, 1066*35786f68SRobert Mustacchi AcpiEfiPciIoWidthFillUint32, 1067*35786f68SRobert Mustacchi AcpiEfiPciIoWidthFillUint64, 1068*35786f68SRobert Mustacchi AcpiEfiPciIoWidthMaximum 1069*35786f68SRobert Mustacchi } ACPI_EFI_PCI_IO_PROTOCOL_WIDTH; 10707b1019a6SJerry Jelinek 1071*35786f68SRobert Mustacchi typedef 1072*35786f68SRobert Mustacchi ACPI_EFI_STATUS 1073*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_PCI_IO_PROTOCOL_CONFIG)( 1074*35786f68SRobert Mustacchi struct _ACPI_EFI_PCI_IO *This, 1075*35786f68SRobert Mustacchi ACPI_EFI_PCI_IO_PROTOCOL_WIDTH Width, 1076*35786f68SRobert Mustacchi UINT32 Offset, 1077*35786f68SRobert Mustacchi UINTN Count, 1078*35786f68SRobert Mustacchi VOID *Buffer); 10797b1019a6SJerry Jelinek 1080*35786f68SRobert Mustacchi typedef struct { 1081*35786f68SRobert Mustacchi ACPI_EFI_PCI_IO_PROTOCOL_CONFIG Read; 1082*35786f68SRobert Mustacchi ACPI_EFI_PCI_IO_PROTOCOL_CONFIG Write; 1083*35786f68SRobert Mustacchi } ACPI_EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS; 1084*35786f68SRobert Mustacchi 1085*35786f68SRobert Mustacchi typedef 1086*35786f68SRobert Mustacchi ACPI_EFI_STATUS 1087*35786f68SRobert Mustacchi (ACPI_EFI_API *ACPI_EFI_PCI_IO_PROTOCOL_GET_LOCATION)( 1088*35786f68SRobert Mustacchi struct _ACPI_EFI_PCI_IO *This, 1089*35786f68SRobert Mustacchi UINTN *SegmentNumber, 1090*35786f68SRobert Mustacchi UINTN *BusNumber, 1091*35786f68SRobert Mustacchi UINTN *DeviceNumber, 1092*35786f68SRobert Mustacchi UINTN *FunctionNumber); 1093*35786f68SRobert Mustacchi 1094*35786f68SRobert Mustacchi typedef struct _ACPI_EFI_PCI_IO { 1095*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE PollMem; 1096*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE PollIo; 1097*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE Mem; 1098*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE Io; 1099*35786f68SRobert Mustacchi ACPI_EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci; 1100*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE CopyMem; 1101*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE Map; 1102*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE Unmap; 1103*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE AllocateBuffer; 1104*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE FreeBuffer; 1105*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE Flush; 1106*35786f68SRobert Mustacchi ACPI_EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation; 1107*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE Attributes; 1108*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE GetBarAttributes; 1109*35786f68SRobert Mustacchi ACPI_EFI_UNKNOWN_INTERFACE SetBarAttributes; 1110*35786f68SRobert Mustacchi UINT64 RomSize; 1111*35786f68SRobert Mustacchi VOID *RomImage; 1112*35786f68SRobert Mustacchi } ACPI_EFI_PCI_IO; 1113*35786f68SRobert Mustacchi 1114*35786f68SRobert Mustacchi /* FILE abstraction */ 1115*35786f68SRobert Mustacchi 1116*35786f68SRobert Mustacchi union acpi_efi_file { 1117*35786f68SRobert Mustacchi struct _ACPI_EFI_FILE_HANDLE File; 1118*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE ConOut; 1119*35786f68SRobert Mustacchi struct _ACPI_SIMPLE_INPUT_INTERFACE ConIn; 1120*35786f68SRobert Mustacchi }; 1121*35786f68SRobert Mustacchi 1122*35786f68SRobert Mustacchi 1123*35786f68SRobert Mustacchi /* EFI definitions */ 1124*35786f68SRobert Mustacchi 1125*35786f68SRobert Mustacchi #if defined(_GNU_EFI) || defined(_EDK2_EFI) 11267b1019a6SJerry Jelinek 11277b1019a6SJerry Jelinek /* 11287b1019a6SJerry Jelinek * This is needed to hide platform specific code from ACPICA 11297b1019a6SJerry Jelinek */ 1130*35786f68SRobert Mustacchi UINT64 ACPI_EFI_API 11317b1019a6SJerry Jelinek DivU64x32 ( 11327b1019a6SJerry Jelinek UINT64 Dividend, 11337b1019a6SJerry Jelinek UINTN Divisor, 11347b1019a6SJerry Jelinek UINTN *Remainder); 11357b1019a6SJerry Jelinek 1136*35786f68SRobert Mustacchi UINT64 ACPI_EFI_API 1137*35786f68SRobert Mustacchi MultU64x32 ( 1138*35786f68SRobert Mustacchi UINT64 Multiplicand, 1139*35786f68SRobert Mustacchi UINTN Multiplier); 1140*35786f68SRobert Mustacchi 1141*35786f68SRobert Mustacchi UINT64 ACPI_EFI_API 1142*35786f68SRobert Mustacchi LShiftU64 ( 1143*35786f68SRobert Mustacchi UINT64 Operand, 1144*35786f68SRobert Mustacchi UINTN Count); 1145*35786f68SRobert Mustacchi 1146*35786f68SRobert Mustacchi UINT64 ACPI_EFI_API 1147*35786f68SRobert Mustacchi RShiftU64 ( 1148*35786f68SRobert Mustacchi UINT64 Operand, 1149*35786f68SRobert Mustacchi UINTN Count); 1150*35786f68SRobert Mustacchi 11517b1019a6SJerry Jelinek /* 11527b1019a6SJerry Jelinek * EFI specific prototypes 11537b1019a6SJerry Jelinek */ 1154*35786f68SRobert Mustacchi ACPI_EFI_STATUS 11557b1019a6SJerry Jelinek efi_main ( 1156*35786f68SRobert Mustacchi ACPI_EFI_HANDLE Image, 1157*35786f68SRobert Mustacchi ACPI_EFI_SYSTEM_TABLE *SystemTab); 11587b1019a6SJerry Jelinek 11597b1019a6SJerry Jelinek int 11607b1019a6SJerry Jelinek acpi_main ( 11617b1019a6SJerry Jelinek int argc, 11627b1019a6SJerry Jelinek char *argv[]); 11637b1019a6SJerry Jelinek 11647b1019a6SJerry Jelinek #endif 11657b1019a6SJerry Jelinek 1166*35786f68SRobert Mustacchi extern ACPI_EFI_GUID AcpiGbl_LoadedImageProtocol; 1167*35786f68SRobert Mustacchi extern ACPI_EFI_GUID AcpiGbl_TextInProtocol; 1168*35786f68SRobert Mustacchi extern ACPI_EFI_GUID AcpiGbl_TextOutProtocol; 1169*35786f68SRobert Mustacchi extern ACPI_EFI_GUID AcpiGbl_FileSystemProtocol; 1170*35786f68SRobert Mustacchi extern ACPI_EFI_GUID AcpiGbl_GenericFileInfo; 11717b1019a6SJerry Jelinek 11727b1019a6SJerry Jelinek #endif /* __ACEFIEX_H__ */ 1173