📄 aclocal.h
字号:
****************************************************************************/#define ACPI_OP_CLASS_MASK 0x1F#define ACPI_OP_ARGS_MASK 0x20#define ACPI_OP_TYPE_MASK 0xC0#define ACPI_OP_TYPE_OPCODE 0x00#define ACPI_OP_TYPE_ASCII 0x40#define ACPI_OP_TYPE_PREFIX 0x80#define ACPI_OP_TYPE_UNKNOWN 0xC0#define ACPI_GET_OP_CLASS(a) ((a)->flags & ACPI_OP_CLASS_MASK)#define ACPI_GET_OP_ARGS(a) ((a)->flags & ACPI_OP_ARGS_MASK)#define ACPI_GET_OP_TYPE(a) ((a)->flags & ACPI_OP_TYPE_MASK)/* * AML opcode, name, and argument layout */typedef struct acpi_opcode_info{ u8 flags; /* Opcode type, Has_args flag */ u32 parse_args; /* Grammar/Parse time arguments */ u32 runtime_args; /* Interpret time arguments */ DEBUG_ONLY_MEMBERS (NATIVE_CHAR *name) /* op name (debug only) */} ACPI_OPCODE_INFO;typedef union acpi_parse_val{ u32 integer; /* integer constant */ u32 size; /* bytelist or field size */ NATIVE_CHAR *string; /* NULL terminated string */ u8 *buffer; /* buffer or string */ NATIVE_CHAR *name; /* NULL terminated string */ struct acpi_parse_obj *arg; /* arguments and contained ops */} ACPI_PARSE_VALUE;#define ACPI_PARSE_COMMON \ u8 data_type; /* To differentiate various internal objs */\ u8 flags; /* Type of Op */\ u16 opcode; /* AML opcode */\ u32 aml_offset; /* offset of declaration in AML */\ struct acpi_parse_obj *parent; /* parent op */\ struct acpi_parse_obj *next; /* next op */\ DEBUG_ONLY_MEMBERS (\ NATIVE_CHAR op_name[16]) /* op name (debug only) */\ /* NON-DEBUG members below: */\ ACPI_NAMESPACE_NODE *node; /* for use by interpreter */\ ACPI_PARSE_VALUE value; /* Value or args associated with the opcode */\/* * generic operation (eg. If, While, Store) */typedef struct acpi_parse_obj{ ACPI_PARSE_COMMON} ACPI_PARSE_OBJECT;/* * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and Op_regions), * and bytelists. */typedef struct acpi_parse2_obj{ ACPI_PARSE_COMMON u8 *data; /* AML body or bytelist data */ u32 length; /* AML length */ u32 name; /* 4-byte name or zero if no name */} ACPI_PARSE2_OBJECT;/* * Parse state - one state per parser invocation and each control * method. */typedef struct acpi_parse_state{ u8 *aml_start; /* first AML byte */ u8 *aml; /* next AML byte */ u8 *aml_end; /* (last + 1) AML byte */ u8 *pkg_start; /* current package begin */ u8 *pkg_end; /* current package end */ ACPI_PARSE_OBJECT *start_op; /* root of parse tree */ struct acpi_node *start_node; ACPI_GENERIC_STATE *scope; /* current scope */ struct acpi_parse_state *next;} ACPI_PARSE_STATE;/***************************************************************************** * * Tree walking typedefs and structs * ****************************************************************************//* * Walk state - current state of a parse tree walk. Used for both a leisurely stroll through * the tree (for whatever reason), and for control method execution. */#define NEXT_OP_DOWNWARD 1#define NEXT_OP_UPWARD 2#define WALK_NON_METHOD 0#define WALK_METHOD 1#define WALK_METHOD_RESTART 2typedef struct acpi_walk_state{ u8 data_type; /* To differentiate various internal objs */\ ACPI_OWNER_ID owner_id; /* Owner of objects created during the walk */ u8 last_predicate; /* Result of last predicate */ u8 next_op_info; /* Info about Next_op */ u8 num_operands; /* Stack pointer for Operands[] array */ u8 current_result; /* */ struct acpi_walk_state *next; /* Next Walk_state in list */ ACPI_PARSE_OBJECT *origin; /* Start of walk [Obsolete] *//* TBD: Obsolete with removal of WALK procedure ? */ ACPI_PARSE_OBJECT *prev_op; /* Last op that was processed */ ACPI_PARSE_OBJECT *next_op; /* next op to be processed */ ACPI_GENERIC_STATE *results; /* Stack of accumulated results */ ACPI_GENERIC_STATE *control_state; /* List of control states (nested IFs) */ ACPI_GENERIC_STATE *scope_info; /* Stack of nested scopes */ ACPI_PARSE_STATE *parser_state; /* Current state of parser */ u8 *aml_last_while; ACPI_PARSE_DOWNWARDS descending_callback; ACPI_PARSE_UPWARDS ascending_callback; union acpi_operand_obj *return_desc; /* Return object, if any */ union acpi_operand_obj *method_desc; /* Method descriptor if running a method */ struct acpi_node *method_node; /* Method Node if running a method */ ACPI_PARSE_OBJECT *method_call_op; /* Method_call Op if running a method */ struct acpi_node *method_call_node; /* Called method Node*/ union acpi_operand_obj *operands[OBJ_NUM_OPERANDS]; /* Operands passed to the interpreter */ struct acpi_node arguments[MTH_NUM_ARGS]; /* Control method arguments */ struct acpi_node local_variables[MTH_NUM_LOCALS]; /* Control method locals */ u32 parse_flags; u8 walk_type; u8 return_used; u32 prev_arg_types; /* Debug support */ u32 method_breakpoint;} ACPI_WALK_STATE;/* * Walk list - head of a tree of walk states. Multiple walk states are created when there * are nested control methods executing. */typedef struct acpi_walk_list{ ACPI_WALK_STATE *walk_state;} ACPI_WALK_LIST;/* Info used by Acpi_ps_init_objects */typedef struct acpi_init_walk_info{ u16 method_count; u16 op_region_count; u16 field_count; u16 op_region_init; u16 field_init; u16 object_count; ACPI_TABLE_DESC *table_desc;} ACPI_INIT_WALK_INFO;/* Info used by TBD */typedef struct acpi_device_walk_info{ u32 flags; u16 device_count; u16 num_STA; u16 num_INI; ACPI_TABLE_DESC *table_desc;} ACPI_DEVICE_WALK_INFO;/* TBD: [Restructure] Merge with struct above */typedef struct acpi_walk_info{ u32 debug_level; u32 owner_id;} ACPI_WALK_INFO;typedef struct acpi_get_devices_info{ WALK_CALLBACK user_function; void *context; NATIVE_CHAR *hid;} ACPI_GET_DEVICES_INFO;/***************************************************************************** * * Hardware and PNP * ****************************************************************************//* PCI */#define PCI_ROOT_HID_STRING "PNP0A03"#define PCI_ROOT_HID_VALUE 0x030AD041 /* EISAID("PNP0A03") *//* Sleep states */#define SLWA_DEBUG_LEVEL 4#define GTS_CALL 0#define GTS_WAKE 1/* Cx States */#define MAX_CX_STATE_LATENCY 0xFFFFFFFF#define MAX_CX_STATES 4/* * The #define's and enum below establish an abstract way of identifying what * register block and register is to be accessed. Do not change any of the * values as they are used in switch statements and offset calculations. */#define REGISTER_BLOCK_MASK 0xFF00 /* Register Block Id */#define BIT_IN_REGISTER_MASK 0x00FF /* Bit Id in the Register Block Id */#define BYTE_IN_REGISTER_MASK 0x00FF /* Register Offset in the Register Block */#define REGISTER_BLOCK_ID(reg_id) (reg_id & REGISTER_BLOCK_MASK)#define REGISTER_BIT_ID(reg_id) (reg_id & BIT_IN_REGISTER_MASK)#define REGISTER_OFFSET(reg_id) (reg_id & BYTE_IN_REGISTER_MASK)/* * Access Rule * To access a Register Bit: * -> Use Bit Name (= Register Block Id | Bit Id) defined in the enum. * * To access a Register: * -> Use Register Id (= Register Block Id | Register Offset) *//* * Register Block Id */#define PM1_STS 0x0100#define PM1_EN 0x0200#define PM1_CONTROL 0x0300#define PM2_CONTROL 0x0400#define PM_TIMER 0x0500#define PROCESSOR_BLOCK 0x0600#define GPE0_STS_BLOCK 0x0700#define GPE0_EN_BLOCK 0x0800#define GPE1_STS_BLOCK 0x0900#define GPE1_EN_BLOCK 0x0A00#define SMI_CMD_BLOCK 0x0B00/* * Address space bitmasks for mmio or io spaces */#define SMI_CMD_ADDRESS_SPACE 0x01#define PM1_BLK_ADDRESS_SPACE 0x02#define PM2_CNT_BLK_ADDRESS_SPACE 0x04#define PM_TMR_BLK_ADDRESS_SPACE 0x08#define GPE0_BLK_ADDRESS_SPACE 0x10#define GPE1_BLK_ADDRESS_SPACE 0x20/* * Control bit definitions */#define TMR_STS (PM1_STS | 0x01)#define BM_STS (PM1_STS | 0x02)#define GBL_STS (PM1_STS | 0x03)#define PWRBTN_STS (PM1_STS | 0x04)#define SLPBTN_STS (PM1_STS | 0x05)#define RTC_STS (PM1_STS | 0x06)#define WAK_STS (PM1_STS | 0x07)#define TMR_EN (PM1_EN | 0x01) /* no BM_EN */#define GBL_EN (PM1_EN | 0x03)#define PWRBTN_EN (PM1_EN | 0x04)#define SLPBTN_EN (PM1_EN | 0x05)#define RTC_EN (PM1_EN | 0x06)#define WAK_EN (PM1_EN | 0x07)#define SCI_EN (PM1_CONTROL | 0x01)#define BM_RLD (PM1_CONTROL | 0x02)#define GBL_RLS (PM1_CONTROL | 0x03)#define SLP_TYPE_A (PM1_CONTROL | 0x04)#define SLP_TYPE_B (PM1_CONTROL | 0x05)#define SLP_EN (PM1_CONTROL | 0x06)#define ARB_DIS (PM2_CONTROL | 0x01)#define TMR_VAL (PM_TIMER | 0x01)#define GPE0_STS (GPE0_STS_BLOCK | 0x01)#define GPE0_EN (GPE0_EN_BLOCK | 0x01)#define GPE1_STS (GPE1_STS_BLOCK | 0x01)#define GPE1_EN (GPE1_EN_BLOCK | 0x01)#define TMR_STS_MASK 0x0001#define BM_STS_MASK 0x0010#define GBL_STS_MASK 0x0020#define PWRBTN_STS_MASK 0x0100#define SLPBTN_STS_MASK 0x0200#define RTC_STS_MASK 0x0400#define WAK_STS_MASK 0x8000#define ALL_FIXED_STS_BITS (TMR_STS_MASK | BM_STS_MASK | GBL_STS_MASK \ | PWRBTN_STS_MASK | SLPBTN_STS_MASK \ | RTC_STS_MASK | WAK_STS_MASK)#define TMR_EN_MASK 0x0001#define GBL_EN_MASK 0x0020#define PWRBTN_EN_MASK 0x0100#define SLPBTN_EN_MASK 0x0200#define RTC_EN_MASK 0x0400#define SCI_EN_MASK 0x0001#define BM_RLD_MASK 0x0002#define GBL_RLS_MASK 0x0004#define SLP_TYPE_X_MASK 0x1C00#define SLP_EN_MASK 0x2000#define ARB_DIS_MASK 0x0001#define TMR_VAL_MASK 0xFFFFFFFF#define GPE0_STS_MASK#define GPE0_EN_MASK#define GPE1_STS_MASK#define GPE1_EN_MASK#define ACPI_READ 1#define ACPI_WRITE 2/* Plug and play *//* Pnp and ACPI data */#define VERSION_NO 0x01#define LOGICAL_DEVICE_ID 0x02#define COMPATIBLE_DEVICE_ID 0x03#define IRQ_FORMAT 0x04#define DMA_FORMAT 0x05#define START_DEPENDENT_TAG 0x06#define END_DEPENDENT_TAG 0x07#define IO_PORT_DESCRIPTOR 0x08#define FIXED_LOCATION_IO_DESCRIPTOR 0x09#define RESERVED_TYPE0 0x0A#define RESERVED_TYPE1 0x0B#define RESERVED_TYPE2 0x0C#define RESERVED_TYPE3 0x0D#define SMALL_VENDOR_DEFINED 0x0E#define END_TAG 0x0F/* Pnp and ACPI data */#define MEMORY_RANGE_24 0x81#define ISA_MEMORY_RANGE 0x81#define LARGE_VENDOR_DEFINED 0x84#define EISA_MEMORY_RANGE 0x85#define MEMORY_RANGE_32 0x85#define FIXED_EISA_MEMORY_RANGE 0x86#define FIXED_MEMORY_RANGE_32 0x86/* ACPI only data */#define DWORD_ADDRESS_SPACE 0x87#define WORD_ADDRESS_SPACE 0x88#define EXTENDED_IRQ 0x89/* MUST HAVES */#define DEVICE_ID_LENGTH 0x09typedef struct{ NATIVE_CHAR buffer[DEVICE_ID_LENGTH];} DEVICE_ID;/***************************************************************************** * * Debug * ****************************************************************************//* Entry for a memory allocation (debug only) */#ifdef ACPI_DEBUG#define MEM_MALLOC 0#define MEM_CALLOC 1#define MAX_MODULE_NAME 16typedef struct allocation_info{ struct allocation_info *previous; struct allocation_info *next; void *address; u32 size; u32 component; u32 line; NATIVE_CHAR module[MAX_MODULE_NAME]; u8 alloc_type;} ALLOCATION_INFO;#endif#endif /* __ACLOCAL_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -