/****************************************************************************** * * Name: actypes.h - Common data types for the entire ACPI subsystem * *****************************************************************************/ /* * Copyright (C) 2000 - 2005, R. Byron Moore * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions, and the following disclaimer, * without modification. * 2. Redistributions in binary form must reproduce at minimum a disclaimer * substantially similar to the "NO WARRANTY" disclaimer below * ("Disclaimer") and any redistribution must be conditioned upon * including a substantially similar Disclaimer requirement for further * binary redistribution. * 3. Neither the names of the above-listed copyright holders nor the names * of any contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * NO WARRANTY * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. */ #ifndef __ACTYPES_H__#define __ACTYPES_H__ /*! [Begin] no source code translation (keep the typedefs) */ /* * Data type ranges * Note: These macros are designed to be compiler independent as well as * working around problems that some 32-bit compilers have with 64-bit * constants. */#define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */#define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */#define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */#define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */#define ACPI_ASCII_MAX 0x7F #ifdef DEFINE_ALTERNATE_TYPES/* * Types used only in translated source, defined here to enable * cross-platform compilation only. */typedef int s32;typedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;typedef COMPILER_DEPENDENT_UINT64 u64; #endif /* * Data types - Fixed across all compilation models (16/32/64) * * BOOLEAN Logical Boolean. * INT8 8-bit (1 byte) signed value * UINT8 8-bit (1 byte) unsigned value * INT16 16-bit (2 byte) signed value * UINT16 16-bit (2 byte) unsigned value * INT32 32-bit (4 byte) signed value * UINT32 32-bit (4 byte) unsigned value * INT64 64-bit (8 byte) signed value * UINT64 64-bit (8 byte) unsigned value * ACPI_NATIVE_INT 32-bit on IA-32, 64-bit on IA-64 signed value * ACPI_NATIVE_UINT 32-bit on IA-32, 64-bit on IA-64 unsigned value */ #ifndef ACPI_MACHINE_WIDTH#error ACPI_MACHINE_WIDTH not defined#endif #if ACPI_MACHINE_WIDTH == 64 /*! [Begin] no source code translation (keep the typedefs) */ /* * 64-bit type definitions */typedef unsigned char UINT8;typedef unsigned char BOOLEAN;typedef unsigned short UINT16;typedef int INT32;typedef unsigned int UINT32;typedef COMPILER_DEPENDENT_INT64 INT64;typedef COMPILER_DEPENDENT_UINT64 UINT64; /*! [End] no source code translation !*/ typedef s64 acpi_native_int;typedef u64 acpi_native_uint; typedef u64 acpi_table_ptr;typedef u64 acpi_io_address;typedef u64 acpi_physical_address;typedef u64 acpi_size; #define ALIGNED_ADDRESS_BOUNDARY 0x00000008 /* No hardware alignment support in IA64 */#define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */#define ACPI_MAX_PTR ACPI_UINT64_MAX#define ACPI_SIZE_MAX ACPI_UINT64_MAX #elif ACPI_MACHINE_WIDTH == 16 /*! [Begin] no source code translation (keep the typedefs) */ /* * 16-bit type definitions */typedef unsigned char UINT8;typedef unsigned char BOOLEAN;typedef unsigned int UINT16;typedef long INT32;typedef int INT16;typedef unsigned long UINT32; struct{ UINT32 Lo; UINT32 Hi;}; /*! [End] no source code translation !*/ typedef u16 acpi_native_uint;typedef s16 acpi_native_int; typedef u32 acpi_table_ptr;typedef u32 acpi_io_address;typedef char *acpi_physical_address;typedef u16 acpi_size; #define ALIGNED_ADDRESS_BOUNDARY 0x00000002#define ACPI_MISALIGNED_TRANSFERS#define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */#define ACPI_MAX_PTR ACPI_UINT16_MAX#define ACPI_SIZE_MAX ACPI_UINT16_MAX /* * (16-bit only) internal integers must be 32-bits, so * 64-bit integers cannot be supported */#define ACPI_NO_INTEGER64_SUPPORT #elif ACPI_MACHINE_WIDTH == 32 /*! [Begin] no source code translation (keep the typedefs) */ /* * 32-bit type definitions (default) */typedef unsigned char UINT8;typedef unsigned char BOOLEAN;typedef unsigned short UINT16;typedef int INT32;typedef unsigned int UINT32;typedef COMPILER_DEPENDENT_INT64 INT64;typedef COMPILER_DEPENDENT_UINT64 UINT64; /*! [End] no source code translation !*/ typedef s32 acpi_native_int;typedef u32 acpi_native_uint; typedef u64 acpi_table_ptr;typedef u32 acpi_io_address;typedef u64 acpi_physical_address;typedef u32 acpi_size; #define ALIGNED_ADDRESS_BOUNDARY 0x00000004#define ACPI_MISALIGNED_TRANSFERS#define ACPI_MAX_PTR ACPI_UINT32_MAX#define ACPI_SIZE_MAX ACPI_UINT32_MAX #else#error unknown ACPI_MACHINE_WIDTH#endif /* * Miscellaneous common types */typedef u16 UINT16_BIT;typedef u32 UINT32_BIT;typedef acpi_native_uint ACPI_PTRDIFF; /* * Pointer overlays to avoid lots of typecasting for * code that accepts both physical and logical pointers. */union acpi_pointers{ acpi_physical_address physical; void *logical; acpi_table_ptr value;}; struct acpi_pointer{ u32 pointer_type; union acpi_pointers pointer;}; /* pointer_types for above */ #define ACPI_PHYSICAL_POINTER 0x01#define ACPI_LOGICAL_POINTER 0x02 /* Processor mode */ #define ACPI_PHYSICAL_ADDRESSING 0x04#define ACPI_LOGICAL_ADDRESSING 0x08#define ACPI_MEMORY_MODE 0x0C #define ACPI_PHYSMODE_PHYSPTR ACPI_PHYSICAL_ADDRESSING | ACPI_PHYSICAL_POINTER#define ACPI_LOGMODE_PHYSPTR ACPI_LOGICAL_ADDRESSING | ACPI_PHYSICAL_POINTER#define ACPI_LOGMODE_LOGPTR ACPI_LOGICAL_ADDRESSING | ACPI_LOGICAL_POINTER /* * Useful defines */#ifdef FALSE#undef FALSE#endif#define FALSE (1 == 0) #ifdef TRUE#undef TRUE#endif#define TRUE (1 == 1) #ifndef NULL#define NULL (void *) 0#endif /* * Local datatypes */typedef u32 acpi_status; /* All ACPI Exceptions */typedef u32 acpi_name; /* 4-byte ACPI name */typedef char * acpi_string; /* Null terminated ASCII string */typedef void * acpi_handle; /* Actually a ptr to an Node */ struct uint64_struct{ u32 lo; u32 hi;}; union uint64_overlay{ u64 full; struct uint64_struct part;}; struct uint32_struct{ u32 lo; u32 hi;}; /* * Acpi integer width. In ACPI version 1, integers are * 32 bits. In ACPI version 2, integers are 64 bits. * Note that this pertains to the ACPI integer type only, not * other integers used in the implementation of the ACPI CA * subsystem. */#ifdef ACPI_NO_INTEGER64_SUPPORT /* 32-bit integers only, no 64-bit support */ typedef u32 acpi_integer;#define ACPI_INTEGER_MAX ACPI_UINT32_MAX#define ACPI_INTEGER_BIT_SIZE 32#define ACPI_MAX_DECIMAL_DIGITS 10 /* 2^32 = 4,294,967,296 */ #define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */ #else /* 64-bit integers */ typedef u64 acpi_integer;#define ACPI_INTEGER_MAX ACPI_UINT64_MAX#define ACPI_INTEGER_BIT_SIZE 64#define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ #if ACPI_MACHINE_WIDTH == 64#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */#endif#endif #define ACPI_MAX64_DECIMAL_DIGITS 20#define ACPI_MAX32_DECIMAL_DIGITS 10#define ACPI_MAX16_DECIMAL_DIGITS 5#define ACPI_MAX8_DECIMAL_DIGITS 3 /* * Constants with special meanings */#define ACPI_ROOT_OBJECT (acpi_handle) ACPI_PTR_ADD (char, NULL, ACPI_MAX_PTR) /* * Initialization sequence */#define ACPI_FULL_INITIALIZATION 0x00#define ACPI_NO_ADDRESS_SPACE_INIT 0x01#define ACPI_NO_HARDWARE_INIT 0x02#define ACPI_NO_EVENT_INIT 0x04#define ACPI_NO_HANDLER_INIT 0x08#define ACPI_NO_ACPI_ENABLE 0x10#define ACPI_NO_DEVICE_INIT 0x20#define ACPI_NO_OBJECT_INIT 0x40 /* * Initialization state */#define ACPI_INITIALIZED_OK 0x01 /* * Power state values */#define ACPI_STATE_UNKNOWN (u8) 0xFF #define ACPI_STATE_S0 (u8) 0#define ACPI_STATE_S1 (u8) 1#define ACPI_STATE_S2 (u8) 2#define ACPI_STATE_S3 (u8) 3#define ACPI_STATE_S4 (u8) 4#define ACPI_STATE_S5 (u8) 5#define ACPI_S_STATES_MAX ACPI_STATE_S5#define ACPI_S_STATE_COUNT 6 #define ACPI_STATE_D0 (u8) 0#define ACPI_STATE_D1 (u8) 1#define ACPI_STATE_D2 (u8) 2#define ACPI_STATE_D3 (u8) 3#define ACPI_D_STATES_MAX ACPI_STATE_D3#define ACPI_D_STATE_COUNT 4 #define ACPI_STATE_C0 (u8) 0#define ACPI_STATE_C1 (u8) 1#define ACPI_STATE_C2 (u8) 2#define ACPI_STATE_C3 (u8) 3#define ACPI_C_STATES_MAX ACPI_STATE_C3#define ACPI_C_STATE_COUNT 4 /* * Sleep type invalid value */#define ACPI_SLEEP_TYPE_MAX 0x7#define ACPI_SLEEP_TYPE_INVALID 0xFF /* * Standard notify values */#define ACPI_NOTIFY_BUS_CHECK (u8) 0#define ACPI_NOTIFY_DEVICE_CHECK (u8) 1#define ACPI_NOTIFY_DEVICE_WAKE (u8) 2#define ACPI_NOTIFY_EJECT_REQUEST (u8) 3#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (u8) 4#define ACPI_NOTIFY_FREQUENCY_MISMATCH (u8) 5#define ACPI_NOTIFY_BUS_MODE_MISMATCH (u8) 6#define ACPI_NOTIFY_POWER_FAULT (u8) 7 /* * Table types. These values are passed to the table related APIs */typedef u32 acpi_table_type; #define ACPI_TABLE_RSDP (acpi_table_type) 0#define ACPI_TABLE_DSDT (acpi_table_type) 1#define ACPI_TABLE_FADT (acpi_table_type) 2#define ACPI_TABLE_FACS (acpi_table_type) 3#define ACPI_TABLE_PSDT (acpi_table_type) 4#define ACPI_TABLE_SSDT (acpi_table_type) 5#define ACPI_TABLE_XSDT (acpi_table_type) 6#define ACPI_TABLE_MAX 6#define NUM_ACPI_TABLE_TYPES (ACPI_TABLE_MAX+1) /* * Types associated with ACPI names and objects. The first group of * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition * of the ACPI object_type() operator (See the ACPI Spec). Therefore, * only add to the first group if the spec changes. * * NOTE: Types must be kept in sync with the global acpi_ns_properties * and acpi_ns_type_names arrays. */typedef u32 acpi_object_type; #define ACPI_TYPE_ANY 0x00#define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */#define ACPI_TYPE_STRING 0x02#define ACPI_TYPE_BUFFER 0x03#define ACPI_TYPE_PACKAGE 0x04 /* byte_const, multiple data_term/Constant/super_name */#define ACPI_TYPE_FIELD_UNIT 0x05#define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */#define ACPI_TYPE_EVENT 0x07#define ACPI_TYPE_METHOD 0x08 /* Name, byte_const, multiple Code */#define ACPI_TYPE_MUTEX 0x09#define ACPI_TYPE_REGION 0x0A#define ACPI_TYPE_POWER 0x0B /* Name,byte_const,word_const,multi Node */#define ACPI_TYPE_PROCESSOR 0x0C /* Name,byte_const,Dword_const,byte_const,multi nm_o */#define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */#define ACPI_TYPE_BUFFER_FIELD 0x0E#define ACPI_TYPE_DDB_HANDLE 0x0F#define ACPI_TYPE_DEBUG_OBJECT 0x10 #define ACPI_TYPE_EXTERNAL_MAX 0x10 /* * These are object types that do not map directly to the ACPI * object_type() operator. They are used for various internal purposes only. * If new predefined ACPI_TYPEs are added (via the ACPI specification), these * internal types must move upwards. (There is code that depends on these * values being contiguous with the external types above.) */#define ACPI_TYPE_LOCAL_REGION_FIELD 0x11#define ACPI_TYPE_LOCAL_BANK_FIELD 0x12#define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13#define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, ref_of, Index */#define ACPI_TYPE_LOCAL_ALIAS 0x15#define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16#define ACPI_TYPE_LOCAL_NOTIFY 0x17#define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18#define ACPI_TYPE_LOCAL_RESOURCE 0x19#define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A#define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple object_list Nodes */ #define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ /* * These are special object types that never appear in * a Namespace node, only in an union acpi_operand_object */#define ACPI_TYPE_LOCAL_EXTRA 0x1C#define ACPI_TYPE_LOCAL_DATA 0x1D #define ACPI_TYPE_LOCAL_MAX 0x1D /* All types above here are invalid */ #define ACPI_TYPE_INVALID 0x1E#define ACPI_TYPE_NOT_FOUND 0xFF /* * Bitmapped ACPI types. Used internally only */#define ACPI_BTYPE_ANY 0x00000000#define ACPI_BTYPE_INTEGER 0x00000001#define ACPI_BTYPE_STRING 0x00000002#define ACPI_BTYPE_BUFFER 0x00000004#define ACPI_BTYPE_PACKAGE 0x00000008#define ACPI_BTYPE_FIELD_UNIT 0x00000010#define ACPI_BTYPE_DEVICE 0x00000020#define ACPI_BTYPE_EVENT 0x00000040#define ACPI_BTYPE_METHOD 0x00000080#define ACPI_BTYPE_MUTEX 0x00000100#define ACPI_BTYPE_REGION 0x00000200#define ACPI_BTYPE_POWER 0x00000400#define ACPI_BTYPE_PROCESSOR 0x00000800#define ACPI_BTYPE_THERMAL 0x00001000#define ACPI_BTYPE_BUFFER_FIELD 0x00002000#define ACPI_BTYPE_DDB_HANDLE 0x00004000#define ACPI_BTYPE_DEBUG_OBJECT 0x00008000Lines 1–500 of 1302. Load more
/****************************************************************************** * * Name: actypes.h - Common data types for the entire ACPI subsystem * *****************************************************************************/ /* * Copyright (C) 2000 - 2005, R. Byron Moore * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions, and the following disclaimer, * without modification. * 2. Redistributions in binary form must reproduce at minimum a disclaimer * substantially similar to the "NO WARRANTY" disclaimer below * ("Disclaimer") and any redistribution must be conditioned upon * including a substantially similar Disclaimer requirement for further * binary redistribution. * 3. Neither the names of the above-listed copyright holders nor the names * of any contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * NO WARRANTY * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. */ #ifndef __ACTYPES_H__ #define __ACTYPES_H__ /*! [Begin] no source code translation (keep the typedefs) */ /* * Data type ranges * Note: These macros are designed to be compiler independent as well as * working around problems that some 32-bit compilers have with 64-bit * constants. */ #define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ #define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ #define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ #define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ #define ACPI_ASCII_MAX 0x7F #ifdef DEFINE_ALTERNATE_TYPES /* * Types used only in translated source, defined here to enable * cross-platform compilation only. */ typedef int s32; typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; typedef COMPILER_DEPENDENT_UINT64 u64; #endif /* * Data types - Fixed across all compilation models (16/32/64) * * BOOLEAN Logical Boolean. * INT8 8-bit (1 byte) signed value * UINT8 8-bit (1 byte) unsigned value * INT16 16-bit (2 byte) signed value * UINT16 16-bit (2 byte) unsigned value * INT32 32-bit (4 byte) signed value * UINT32 32-bit (4 byte) unsigned value * INT64 64-bit (8 byte) signed value * UINT64 64-bit (8 byte) unsigned value * ACPI_NATIVE_INT 32-bit on IA-32, 64-bit on IA-64 signed value * ACPI_NATIVE_UINT 32-bit on IA-32, 64-bit on IA-64 unsigned value */ #ifndef ACPI_MACHINE_WIDTH #error ACPI_MACHINE_WIDTH not defined #endif #if ACPI_MACHINE_WIDTH == 64 /*! [Begin] no source code translation (keep the typedefs) */ /* * 64-bit type definitions */ typedef unsigned char UINT8; typedef unsigned char BOOLEAN; typedef unsigned short UINT16; typedef int INT32; typedef unsigned int UINT32; typedef COMPILER_DEPENDENT_INT64 INT64; typedef COMPILER_DEPENDENT_UINT64 UINT64; /*! [End] no source code translation !*/ typedef s64 acpi_native_int; typedef u64 acpi_native_uint; typedef u64 acpi_table_ptr; typedef u64 acpi_io_address; typedef u64 acpi_physical_address; typedef u64 acpi_size; #define ALIGNED_ADDRESS_BOUNDARY 0x00000008 /* No hardware alignment support in IA64 */ #define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */ #define ACPI_MAX_PTR ACPI_UINT64_MAX #define ACPI_SIZE_MAX ACPI_UINT64_MAX #elif ACPI_MACHINE_WIDTH == 16 /*! [Begin] no source code translation (keep the typedefs) */ /* * 16-bit type definitions */ typedef unsigned char UINT8; typedef unsigned char BOOLEAN; typedef unsigned int UINT16; typedef long INT32; typedef int INT16; typedef unsigned long UINT32; struct { UINT32 Lo; UINT32 Hi; }; /*! [End] no source code translation !*/ typedef u16 acpi_native_uint; typedef s16 acpi_native_int; typedef u32 acpi_table_ptr; typedef u32 acpi_io_address; typedef char *acpi_physical_address; typedef u16 acpi_size; #define ALIGNED_ADDRESS_BOUNDARY 0x00000002 #define ACPI_MISALIGNED_TRANSFERS #define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */ #define ACPI_MAX_PTR ACPI_UINT16_MAX #define ACPI_SIZE_MAX ACPI_UINT16_MAX /* * (16-bit only) internal integers must be 32-bits, so * 64-bit integers cannot be supported */ #define ACPI_NO_INTEGER64_SUPPORT #elif ACPI_MACHINE_WIDTH == 32 /*! [Begin] no source code translation (keep the typedefs) */ /* * 32-bit type definitions (default) */ typedef unsigned char UINT8; typedef unsigned char BOOLEAN; typedef unsigned short UINT16; typedef int INT32; typedef unsigned int UINT32; typedef COMPILER_DEPENDENT_INT64 INT64; typedef COMPILER_DEPENDENT_UINT64 UINT64; /*! [End] no source code translation !*/ typedef s32 acpi_native_int; typedef u32 acpi_native_uint; typedef u64 acpi_table_ptr; typedef u32 acpi_io_address; typedef u64 acpi_physical_address; typedef u32 acpi_size; #define ALIGNED_ADDRESS_BOUNDARY 0x00000004 #define ACPI_MISALIGNED_TRANSFERS #define ACPI_MAX_PTR ACPI_UINT32_MAX #define ACPI_SIZE_MAX ACPI_UINT32_MAX #else #error unknown ACPI_MACHINE_WIDTH #endif /* * Miscellaneous common types */ typedef u16 UINT16_BIT; typedef u32 UINT32_BIT; typedef acpi_native_uint ACPI_PTRDIFF; /* * Pointer overlays to avoid lots of typecasting for * code that accepts both physical and logical pointers. */ union acpi_pointers { acpi_physical_address physical; void *logical; acpi_table_ptr value; }; struct acpi_pointer { u32 pointer_type; union acpi_pointers pointer; }; /* pointer_types for above */ #define ACPI_PHYSICAL_POINTER 0x01 #define ACPI_LOGICAL_POINTER 0x02 /* Processor mode */ #define ACPI_PHYSICAL_ADDRESSING 0x04 #define ACPI_LOGICAL_ADDRESSING 0x08 #define ACPI_MEMORY_MODE 0x0C #define ACPI_PHYSMODE_PHYSPTR ACPI_PHYSICAL_ADDRESSING | ACPI_PHYSICAL_POINTER #define ACPI_LOGMODE_PHYSPTR ACPI_LOGICAL_ADDRESSING | ACPI_PHYSICAL_POINTER #define ACPI_LOGMODE_LOGPTR ACPI_LOGICAL_ADDRESSING | ACPI_LOGICAL_POINTER /* * Useful defines */ #ifdef FALSE #undef FALSE #endif #define FALSE (1 == 0) #ifdef TRUE #undef TRUE #endif #define TRUE (1 == 1) #ifndef NULL #define NULL (void *) 0 #endif /* * Local datatypes */ typedef u32 acpi_status; /* All ACPI Exceptions */ typedef u32 acpi_name; /* 4-byte ACPI name */ typedef char * acpi_string; /* Null terminated ASCII string */ typedef void * acpi_handle; /* Actually a ptr to an Node */ struct uint64_struct { u32 lo; u32 hi; }; union uint64_overlay { u64 full; struct uint64_struct part; }; struct uint32_struct { u32 lo; u32 hi; }; /* * Acpi integer width. In ACPI version 1, integers are * 32 bits. In ACPI version 2, integers are 64 bits. * Note that this pertains to the ACPI integer type only, not * other integers used in the implementation of the ACPI CA * subsystem. */ #ifdef ACPI_NO_INTEGER64_SUPPORT /* 32-bit integers only, no 64-bit support */ typedef u32 acpi_integer; #define ACPI_INTEGER_MAX ACPI_UINT32_MAX #define ACPI_INTEGER_BIT_SIZE 32 #define ACPI_MAX_DECIMAL_DIGITS 10 /* 2^32 = 4,294,967,296 */ #define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */ #else /* 64-bit integers */ typedef u64 acpi_integer; #define ACPI_INTEGER_MAX ACPI_UINT64_MAX #define ACPI_INTEGER_BIT_SIZE 64 #define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ #if ACPI_MACHINE_WIDTH == 64 #define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */ #endif #endif #define ACPI_MAX64_DECIMAL_DIGITS 20 #define ACPI_MAX32_DECIMAL_DIGITS 10 #define ACPI_MAX16_DECIMAL_DIGITS 5 #define ACPI_MAX8_DECIMAL_DIGITS 3 /* * Constants with special meanings */ #define ACPI_ROOT_OBJECT (acpi_handle) ACPI_PTR_ADD (char, NULL, ACPI_MAX_PTR) /* * Initialization sequence */ #define ACPI_FULL_INITIALIZATION 0x00 #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 #define ACPI_NO_HARDWARE_INIT 0x02 #define ACPI_NO_EVENT_INIT 0x04 #define ACPI_NO_HANDLER_INIT 0x08 #define ACPI_NO_ACPI_ENABLE 0x10 #define ACPI_NO_DEVICE_INIT 0x20 #define ACPI_NO_OBJECT_INIT 0x40 /* * Initialization state */ #define ACPI_INITIALIZED_OK 0x01 /* * Power state values */ #define ACPI_STATE_UNKNOWN (u8) 0xFF #define ACPI_STATE_S0 (u8) 0 #define ACPI_STATE_S1 (u8) 1 #define ACPI_STATE_S2 (u8) 2 #define ACPI_STATE_S3 (u8) 3 #define ACPI_STATE_S4 (u8) 4 #define ACPI_STATE_S5 (u8) 5 #define ACPI_S_STATES_MAX ACPI_STATE_S5 #define ACPI_S_STATE_COUNT 6 #define ACPI_STATE_D0 (u8) 0 #define ACPI_STATE_D1 (u8) 1 #define ACPI_STATE_D2 (u8) 2 #define ACPI_STATE_D3 (u8) 3 #define ACPI_D_STATES_MAX ACPI_STATE_D3 #define ACPI_D_STATE_COUNT 4 #define ACPI_STATE_C0 (u8) 0 #define ACPI_STATE_C1 (u8) 1 #define ACPI_STATE_C2 (u8) 2 #define ACPI_STATE_C3 (u8) 3 #define ACPI_C_STATES_MAX ACPI_STATE_C3 #define ACPI_C_STATE_COUNT 4 /* * Sleep type invalid value */ #define ACPI_SLEEP_TYPE_MAX 0x7 #define ACPI_SLEEP_TYPE_INVALID 0xFF /* * Standard notify values */ #define ACPI_NOTIFY_BUS_CHECK (u8) 0 #define ACPI_NOTIFY_DEVICE_CHECK (u8) 1 #define ACPI_NOTIFY_DEVICE_WAKE (u8) 2 #define ACPI_NOTIFY_EJECT_REQUEST (u8) 3 #define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (u8) 4 #define ACPI_NOTIFY_FREQUENCY_MISMATCH (u8) 5 #define ACPI_NOTIFY_BUS_MODE_MISMATCH (u8) 6 #define ACPI_NOTIFY_POWER_FAULT (u8) 7 /* * Table types. These values are passed to the table related APIs */ typedef u32 acpi_table_type; #define ACPI_TABLE_RSDP (acpi_table_type) 0 #define ACPI_TABLE_DSDT (acpi_table_type) 1 #define ACPI_TABLE_FADT (acpi_table_type) 2 #define ACPI_TABLE_FACS (acpi_table_type) 3 #define ACPI_TABLE_PSDT (acpi_table_type) 4 #define ACPI_TABLE_SSDT (acpi_table_type) 5 #define ACPI_TABLE_XSDT (acpi_table_type) 6 #define ACPI_TABLE_MAX 6 #define NUM_ACPI_TABLE_TYPES (ACPI_TABLE_MAX+1) /* * Types associated with ACPI names and objects. The first group of * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition * of the ACPI object_type() operator (See the ACPI Spec). Therefore, * only add to the first group if the spec changes. * * NOTE: Types must be kept in sync with the global acpi_ns_properties * and acpi_ns_type_names arrays. */ typedef u32 acpi_object_type; #define ACPI_TYPE_ANY 0x00 #define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ #define ACPI_TYPE_STRING 0x02 #define ACPI_TYPE_BUFFER 0x03 #define ACPI_TYPE_PACKAGE 0x04 /* byte_const, multiple data_term/Constant/super_name */ #define ACPI_TYPE_FIELD_UNIT 0x05 #define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ #define ACPI_TYPE_EVENT 0x07 #define ACPI_TYPE_METHOD 0x08 /* Name, byte_const, multiple Code */ #define ACPI_TYPE_MUTEX 0x09 #define ACPI_TYPE_REGION 0x0A #define ACPI_TYPE_POWER 0x0B /* Name,byte_const,word_const,multi Node */ #define ACPI_TYPE_PROCESSOR 0x0C /* Name,byte_const,Dword_const,byte_const,multi nm_o */ #define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ #define ACPI_TYPE_BUFFER_FIELD 0x0E #define ACPI_TYPE_DDB_HANDLE 0x0F #define ACPI_TYPE_DEBUG_OBJECT 0x10 #define ACPI_TYPE_EXTERNAL_MAX 0x10 /* * These are object types that do not map directly to the ACPI * object_type() operator. They are used for various internal purposes only. * If new predefined ACPI_TYPEs are added (via the ACPI specification), these * internal types must move upwards. (There is code that depends on these * values being contiguous with the external types above.) */ #define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 #define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 #define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 #define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, ref_of, Index */ #define ACPI_TYPE_LOCAL_ALIAS 0x15 #define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 #define ACPI_TYPE_LOCAL_NOTIFY 0x17 #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 #define ACPI_TYPE_LOCAL_RESOURCE 0x19 #define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A #define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple object_list Nodes */ #define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ /* * These are special object types that never appear in * a Namespace node, only in an union acpi_operand_object */ #define ACPI_TYPE_LOCAL_EXTRA 0x1C #define ACPI_TYPE_LOCAL_DATA 0x1D #define ACPI_TYPE_LOCAL_MAX 0x1D /* All types above here are invalid */ #define ACPI_TYPE_INVALID 0x1E #define ACPI_TYPE_NOT_FOUND 0xFF /* * Bitmapped ACPI types. Used internally only */ #define ACPI_BTYPE_ANY 0x00000000 #define ACPI_BTYPE_INTEGER 0x00000001 #define ACPI_BTYPE_STRING 0x00000002 #define ACPI_BTYPE_BUFFER 0x00000004 #define ACPI_BTYPE_PACKAGE 0x00000008 #define ACPI_BTYPE_FIELD_UNIT 0x00000010 #define ACPI_BTYPE_DEVICE 0x00000020 #define ACPI_BTYPE_EVENT 0x00000040 #define ACPI_BTYPE_METHOD 0x00000080 #define ACPI_BTYPE_MUTEX 0x00000100 #define ACPI_BTYPE_REGION 0x00000200 #define ACPI_BTYPE_POWER 0x00000400 #define ACPI_BTYPE_PROCESSOR 0x00000800 #define ACPI_BTYPE_THERMAL 0x00001000 #define ACPI_BTYPE_BUFFER_FIELD 0x00002000 #define ACPI_BTYPE_DDB_HANDLE 0x00004000 #define ACPI_BTYPE_DEBUG_OBJECT 0x00008000