aclocal.h
来自「一个类似windows」· C头文件 代码 · 共 833 行 · 第 1/2 页
H
833 行
*/
typedef struct acpi_scope_state
{
ACPI_STATE_COMMON
ACPI_NAMESPACE_NODE *node;
} ACPI_SCOPE_STATE;
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;
/*
* 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;
typedef
ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) (
u16 opcode,
struct acpi_parse_obj *op,
struct acpi_walk_state *walk_state,
struct acpi_parse_obj **out_op);
typedef
ACPI_STATUS (*ACPI_PARSE_UPWARDS) (
struct acpi_walk_state *walk_state,
struct acpi_parse_obj *op);
/*****************************************************************************
*
* Parser typedefs and structs
*
****************************************************************************/
#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 */
#ifdef _OPCODE_NAMES
NATIVE_CHAR *name; /* op name (debug only) */
#endif
} 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;
/*****************************************************************************
*
* 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 PM1_a_CONTROL 0x0400
#define PM1_b_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
/* 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 0x09
typedef 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 16
typedef 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 + =
减小字号Ctrl + -
显示快捷键?