📄 actypes.h
字号:
#ifndef NULL#define NULL (void *) 0#endif/* * Mescellaneous types */typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */typedef UINT32 ACPI_NAME; /* 4-byte ACPI name */typedef char * ACPI_STRING; /* Null terminated ASCII string */typedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */typedef struct uint64_struct{ UINT32 Lo; UINT32 Hi;} UINT64_STRUCT;typedef union uint64_overlay{ UINT64 Full; UINT64_STRUCT Part;} UINT64_OVERLAY;typedef struct uint32_struct{ UINT32 Lo; UINT32 Hi;} UINT32_STRUCT;/* Synchronization objects */#define ACPI_MUTEX void *#define ACPI_SEMAPHORE void */* * 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. */typedef UINT64 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#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_ADD_PTR (ACPI_HANDLE, 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_SUBSYSTEM_INITIALIZE 0x01#define ACPI_INITIALIZED_OK 0x02/* * Power state values */#define ACPI_STATE_UNKNOWN (UINT8) 0xFF#define ACPI_STATE_S0 (UINT8) 0#define ACPI_STATE_S1 (UINT8) 1#define ACPI_STATE_S2 (UINT8) 2#define ACPI_STATE_S3 (UINT8) 3#define ACPI_STATE_S4 (UINT8) 4#define ACPI_STATE_S5 (UINT8) 5#define ACPI_S_STATES_MAX ACPI_STATE_S5#define ACPI_S_STATE_COUNT 6#define ACPI_STATE_D0 (UINT8) 0#define ACPI_STATE_D1 (UINT8) 1#define ACPI_STATE_D2 (UINT8) 2#define ACPI_STATE_D3 (UINT8) 3#define ACPI_D_STATES_MAX ACPI_STATE_D3#define ACPI_D_STATE_COUNT 4#define ACPI_STATE_C0 (UINT8) 0#define ACPI_STATE_C1 (UINT8) 1#define ACPI_STATE_C2 (UINT8) 2#define ACPI_STATE_C3 (UINT8) 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 (UINT8) 0#define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 1#define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 2#define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 3#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 4#define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 5#define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 6#define ACPI_NOTIFY_POWER_FAULT (UINT8) 7/* * 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 ObjectType() 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 AcpiNsProperties * and AcpiNsTypeNames arrays. */typedef UINT32 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 /* ByteConst, multiple DataTerm/Constant/SuperName */#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, ByteConst, multiple Code */#define ACPI_TYPE_MUTEX 0x09#define ACPI_TYPE_REGION 0x0A#define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */#define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */#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 * ObjectType() 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, RefOf, 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 ObjectList 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 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#define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1)/* * All I/O */#define ACPI_READ 0#define ACPI_WRITE 1#define ACPI_IO_MASK 1/* * Event Types: Fixed & General Purpose */typedef UINT32 ACPI_EVENT_TYPE;/* * Fixed events */#define ACPI_EVENT_PMTIMER 0#define ACPI_EVENT_GLOBAL 1#define ACPI_EVENT_POWER_BUTTON 2#define ACPI_EVENT_SLEEP_BUTTON 3#define ACPI_EVENT_RTC 4#define ACPI_EVENT_MAX 4#define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1/* * Event Status - Per event * ------------- * The encoding of ACPI_EVENT_STATUS is illustrated below. * Note that a set bit (1) indicates the property is TRUE * (e.g. if bit 0 is set then the event is enabled). * +-------------+-+-+-+ * | Bits 31:3 |2|1|0| * +-------------+-+-+-+ * | | | | * | | | +- Enabled? * | | +--- Enabled for wake? * | +----- Set? * +----------- <Reserved> */typedef UINT32 ACPI_EVENT_STATUS;#define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00#define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01#define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02#define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04/* * General Purpose Events (GPE) */#define ACPI_GPE_INVALID 0xFF#define ACPI_GPE_MAX 0xFF#define ACPI_NUM_GPE 256#define ACPI_GPE_ENABLE 0#define ACPI_GPE_DISABLE 1/* * GPE info flags - Per GPE * +-+-+-+---+---+-+ * |7|6|5|4:3|2:1|0| * +-+-+-+---+---+-+ * | | | | | | * | | | | | +--- Interrupt type: Edge or Level Triggered * | | | | +--- Type: Wake-only, Runtime-only, or wake/runtime * | | | +--- Type of dispatch -- to method, handler, or none * | | +--- Enabled for runtime? * | +--- Enabled for wake? * +--- Unused */#define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x01#define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x01#define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00#define ACPI_GPE_TYPE_MASK (UINT8) 0x06#define ACPI_GPE_TYPE_WAKE_RUN (UINT8) 0x06#define ACPI_GPE_TYPE_WAKE (UINT8) 0x02#define ACPI_GPE_TYPE_RUNTIME (UINT8) 0x04 /* Default */#define ACPI_GPE_DISPATCH_MASK (UINT8) 0x18#define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x08#define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x10#define ACPI_GPE_DISPATCH_NOT_USED (UINT8) 0x00 /* Default */#define ACPI_GPE_RUN_ENABLE_MASK (UINT8) 0x20#define ACPI_GPE_RUN_ENABLED (UINT8) 0x20#define ACPI_GPE_RUN_DISABLED (UINT8) 0x00 /* Default */#define ACPI_GPE_WAKE_ENABLE_MASK (UINT8) 0x40#define ACPI_GPE_WAKE_ENABLED (UINT8) 0x40#define ACPI_GPE_WAKE_DISABLED (UINT8) 0x00 /* Default */#define ACPI_GPE_ENABLE_MASK (UINT8) 0x60 /* Both run/wake *//* * Flags for GPE and Lock interfaces */#define ACPI_EVENT_WAKE_ENABLE 0x2 /* AcpiGpeEnable */#define ACPI_EVENT_WAKE_DISABLE 0x2 /* AcpiGpeDisable */#define ACPI_NOT_ISR 0x1#define ACPI_ISR 0x0/* Notify types */#define ACPI_SYSTEM_NOTIFY 0x1#define ACPI_DEVICE_NOTIFY 0x2#define ACPI_ALL_NOTIFY 0x3#define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3#define ACPI_MAX_SYS_NOTIFY 0x7f/* Address Space (Operation Region) Types */typedef UINT8 ACPI_ADR_SPACE_TYPE;#define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0#define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1#define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2#define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3#define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4#define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5#define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6#define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 7#define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 127/* * BitRegister IDs * These are bitfields defined within the full ACPI registers */#define ACPI_BITREG_TIMER_STATUS 0x00#define ACPI_BITREG_BUS_MASTER_STATUS 0x01#define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02#define ACPI_BITREG_POWER_BUTTON_STATUS 0x03#define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04#define ACPI_BITREG_RT_CLOCK_STATUS 0x05#define ACPI_BITREG_WAKE_STATUS 0x06#define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07#define ACPI_BITREG_TIMER_ENABLE 0x08#define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09#define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A#define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B#define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C#define ACPI_BITREG_WAKE_ENABLE 0x0D#define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0E#define ACPI_BITREG_SCI_ENABLE 0x0F#define ACPI_BITREG_BUS_MASTER_RLD 0x10#define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x11#define ACPI_BITREG_SLEEP_TYPE_A 0x12#define ACPI_BITREG_SLEEP_TYPE_B 0x13#define ACPI_BITREG_SLEEP_ENABLE 0x14#define ACPI_BITREG_ARB_DISABLE 0x15#define ACPI_BITREG_MAX 0x15#define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1/* * External ACPI object definition */typedef union acpi_object{ ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ struct { ACPI_OBJECT_TYPE Type;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -