📄 aclocal.h
字号:
typedef struct acpi_pscope_state{ ACPI_STATE_COMMON struct acpi_parse_obj *op; /* current op being parsed */ u8 *arg_end; /* current argument end */ u8 *pkg_end; /* current package end */ u32 arg_list; /* next argument to parse */ u32 arg_count; /* Number of fixed arguments */} acpi_pscope_state;/* * Result values - used to accumulate the results of nested * AML arguments */typedef struct acpi_result_values{ ACPI_STATE_COMMON union acpi_operand_obj *obj_desc [OBJ_NUM_OPERANDS]; u8 num_results; u8 last_insert;} acpi_result_values;typedefacpi_status (*acpi_parse_downwards) ( struct acpi_walk_state *walk_state, struct acpi_parse_obj **out_op);typedefacpi_status (*acpi_parse_upwards) ( struct acpi_walk_state *walk_state);/* * Notify info - used to pass info to the deferred notify * handler/dispatcher. */typedef struct acpi_notify_info{ ACPI_STATE_COMMON acpi_namespace_node *node; union acpi_operand_obj *handler_obj;} acpi_notify_info;/* Generic state is union of structs above */typedef union acpi_gen_state{ acpi_common_state common; acpi_control_state control; acpi_update_state update; acpi_scope_state scope; acpi_pscope_state parse_scope; acpi_pkg_state pkg; acpi_result_values results; acpi_notify_info notify;} acpi_generic_state;/***************************************************************************** * * Interpreter typedefs and structs * ****************************************************************************/typedefacpi_status (*ACPI_EXECUTE_OP) ( struct acpi_walk_state *walk_state);/***************************************************************************** * * Parser typedefs and structs * ****************************************************************************//* * AML opcode, name, and argument layout */typedef struct acpi_opcode_info{ u32 parse_args; /* Grammar/Parse time arguments */ u32 runtime_args; /* Interpret time arguments */ u16 flags; /* Misc flags */ u8 class; /* Opcode class */ u8 type; /* Opcode type */#ifdef _OPCODE_NAMES NATIVE_CHAR *name; /* op name (debug only) */#endif} acpi_opcode_info;typedef union acpi_parse_val{ acpi_integer integer; /* integer constant (Up to 64 bits) */ uint64_struct integer64; /* Structure overlay for 2 32-bit Dwords */ u32 integer32; /* integer constant, 32 bits only */ u16 integer16; /* integer constant, 16 bits only */ u8 integer8; /* integer constant, 8 bits only */ 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{ u32 aml_size; 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 */ struct acpi_parse_obj *start_op; /* root of parse tree */ struct acpi_node *start_node; union acpi_gen_state *scope; /* current scope */ struct acpi_parse_obj *start_scope;} acpi_parse_state;/***************************************************************************** * * Hardware and PNP * ****************************************************************************//* PCI */#define PCI_ROOT_HID_STRING "PNP0A03"/* * 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 PM1A_CONTROL 0x0400#define PM1B_CONTROL 0x0500#define PM2_CONTROL 0x0600#define PM_TIMER 0x0700#define PROCESSOR_BLOCK 0x0800#define GPE0_STS_BLOCK 0x0900#define GPE0_EN_BLOCK 0x0A00#define GPE1_STS_BLOCK 0x0B00#define GPE1_EN_BLOCK 0x0C00#define SMI_CMD_BLOCK 0x0D00/* * 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/***************************************************************************** * * Resource descriptors * ****************************************************************************//* Resource_type values */#define RESOURCE_TYPE_MEMORY_RANGE 0#define RESOURCE_TYPE_IO_RANGE 1#define RESOURCE_TYPE_BUS_NUMBER_RANGE 2/* Resource descriptor types and masks */#define RESOURCE_DESC_TYPE_LARGE 0x80#define RESOURCE_DESC_TYPE_SMALL 0x00#define RESOURCE_DESC_TYPE_MASK 0x80#define RESOURCE_DESC_SMALL_MASK 0x78 /* Only bits 6:3 contain the type *//* * Small resource descriptor types * Note: The 3 length bits (2:0) must be zero */#define RESOURCE_DESC_IRQ_FORMAT 0x20#define RESOURCE_DESC_DMA_FORMAT 0x28#define RESOURCE_DESC_START_DEPENDENT 0x30#define RESOURCE_DESC_END_DEPENDENT 0x38#define RESOURCE_DESC_IO_PORT 0x40#define RESOURCE_DESC_FIXED_IO_PORT 0x48#define RESOURCE_DESC_SMALL_VENDOR 0x70#define RESOURCE_DESC_END_TAG 0x78/* * Large resource descriptor types */#define RESOURCE_DESC_MEMORY_24 0x81#define RESOURCE_DESC_GENERAL_REGISTER 0x82#define RESOURCE_DESC_LARGE_VENDOR 0x84#define RESOURCE_DESC_MEMORY_32 0x85#define RESOURCE_DESC_FIXED_MEMORY_32 0x86#define RESOURCE_DESC_DWORD_ADDRESS_SPACE 0x87#define RESOURCE_DESC_WORD_ADDRESS_SPACE 0x88#define RESOURCE_DESC_EXTENDED_XRUPT 0x89#define RESOURCE_DESC_QWORD_ADDRESS_SPACE 0x8A/* String version of device HIDs and UIDs */#define ACPI_DEVICE_ID_LENGTH 0x09typedef struct{ char buffer[ACPI_DEVICE_ID_LENGTH];} acpi_device_id;/***************************************************************************** * * Miscellaneous * ****************************************************************************/#define ASCII_ZERO 0x30/***************************************************************************** * * Debugger * ****************************************************************************/typedef struct dbmethodinfo{ acpi_handle thread_gate; NATIVE_CHAR *name; NATIVE_CHAR **args; u32 flags; u32 num_loops; NATIVE_CHAR pathname[128];} db_method_info;/***************************************************************************** * * Debug * ****************************************************************************/typedef struct{ u32 component_id; NATIVE_CHAR *proc_name; NATIVE_CHAR *module_name;} acpi_debug_print_info;/* Entry for a memory allocation (debug only) */#define MEM_MALLOC 0#define MEM_CALLOC 1#define MAX_MODULE_NAME 16#define ACPI_COMMON_DEBUG_MEM_HEADER \ struct acpi_debug_mem_block *previous; \ struct acpi_debug_mem_block *next; \ u32 size; \ u32 component; \ u32 line; \ NATIVE_CHAR module[MAX_MODULE_NAME]; \ u8 alloc_type;typedef struct{ ACPI_COMMON_DEBUG_MEM_HEADER} acpi_debug_mem_header;typedef struct acpi_debug_mem_block{ ACPI_COMMON_DEBUG_MEM_HEADER u64 user_space;} acpi_debug_mem_block;#define ACPI_MEM_LIST_GLOBAL 0#define ACPI_MEM_LIST_NSNODE 1#define ACPI_MEM_LIST_FIRST_CACHE_LIST 2#define ACPI_MEM_LIST_STATE 2#define ACPI_MEM_LIST_PSNODE 3#define ACPI_MEM_LIST_PSNODE_EXT 4#define ACPI_MEM_LIST_OPERAND 5#define ACPI_MEM_LIST_WALK 6#define ACPI_MEM_LIST_MAX 6#define ACPI_NUM_MEM_LISTS 7typedef struct{ void *list_head; u16 link_offset; u16 max_cache_depth; u16 cache_depth; u16 object_size;#ifdef ACPI_DBG_TRACK_ALLOCATIONS /* Statistics for debug memory tracking only */ u32 total_allocated; u32 total_freed; u32 current_total_size; u32 cache_requests; u32 cache_hits; char *list_name;#endif} ACPI_MEMORY_LIST;#endif /* __ACLOCAL_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -