actypes.h

来自「一个类似windows」· C头文件 代码 · 共 1,078 行 · 第 1/3 页

H
1,078
字号
#define ACPI_TYPE_DDB_HANDLE            15 /* 0x0F  */
#define ACPI_TYPE_DEBUG_OBJECT          16 /* 0x10  */

#define ACPI_TYPE_MAX                   16

/*
 * This section contains object types that do not relate 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.
 * Also, values exceeding the largest official ACPI Object_type must not overlap with
 * defined AML opcodes.
 */
#define INTERNAL_TYPE_BEGIN             17

#define INTERNAL_TYPE_DEF_FIELD         17 /* 0x11  */
#define INTERNAL_TYPE_BANK_FIELD        18 /* 0x12  */
#define INTERNAL_TYPE_INDEX_FIELD       19 /* 0x13  */
#define INTERNAL_TYPE_REFERENCE         20 /* 0x14  Arg#, Local#, Name, Debug; used only in descriptors */
#define INTERNAL_TYPE_ALIAS             21 /* 0x15  */
#define INTERNAL_TYPE_NOTIFY            22 /* 0x16  */
#define INTERNAL_TYPE_ADDRESS_HANDLER   23 /* 0x17  */
#define INTERNAL_TYPE_RESOURCE          24 /* 0x18  */


#define INTERNAL_TYPE_NODE_MAX          24

/* These are pseudo-types because there are never any namespace nodes with these types */

#define INTERNAL_TYPE_DEF_FIELD_DEFN    25 /* 0x19  Name, Byte_const, multiple Field_element */
#define INTERNAL_TYPE_BANK_FIELD_DEFN   26 /* 0x1A  2 Name,DWord_const,Byte_const,multi Field_element */
#define INTERNAL_TYPE_INDEX_FIELD_DEFN  27 /* 0x1B  2 Name, Byte_const, multiple Field_element */
#define INTERNAL_TYPE_IF                28 /* 0x1C  */
#define INTERNAL_TYPE_ELSE              29 /* 0x1D  */
#define INTERNAL_TYPE_WHILE             30 /* 0x1E  */
#define INTERNAL_TYPE_SCOPE             31 /* 0x1F  Name, multiple Node */
#define INTERNAL_TYPE_DEF_ANY           32 /* 0x20  type is Any, suppress search of enclosing scopes */
#define INTERNAL_TYPE_EXTRA             33 /* 0x21  */

#define INTERNAL_TYPE_MAX               33

#define INTERNAL_TYPE_INVALID           34
#define ACPI_TYPE_NOT_FOUND             0xFF

/*
 * Acpi_event Types:
 * ------------
 * Fixed & general purpose...
 */

typedef u32                             ACPI_EVENT_TYPE;

#define ACPI_EVENT_FIXED                (ACPI_EVENT_TYPE) 0
#define ACPI_EVENT_GPE                  (ACPI_EVENT_TYPE) 1

/*
 * Fixed events
 */

#define ACPI_EVENT_PMTIMER              (ACPI_EVENT_TYPE) 0
	/*
	 * There's no bus master event so index 1 is used for IRQ's that are not
	 * handled by the SCI handler
	 */
#define ACPI_EVENT_NOT_USED             (ACPI_EVENT_TYPE) 1
#define ACPI_EVENT_GLOBAL               (ACPI_EVENT_TYPE) 2
#define ACPI_EVENT_POWER_BUTTON         (ACPI_EVENT_TYPE) 3
#define ACPI_EVENT_SLEEP_BUTTON         (ACPI_EVENT_TYPE) 4
#define ACPI_EVENT_RTC                  (ACPI_EVENT_TYPE) 5
#define ACPI_EVENT_GENERAL              (ACPI_EVENT_TYPE) 6
#define ACPI_EVENT_MAX                  6
#define NUM_FIXED_EVENTS                (ACPI_EVENT_TYPE) 7

#define ACPI_GPE_INVALID                0xFF
#define ACPI_GPE_MAX                    0xFF
#define NUM_GPE                         256

#define ACPI_EVENT_LEVEL_TRIGGERED      (ACPI_EVENT_TYPE) 1
#define ACPI_EVENT_EDGE_TRIGGERED       (ACPI_EVENT_TYPE) 2

/*
 * Acpi_event Status:
 * -------------
 * 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:2   |1|0|
 * +---------------+-+-+
 *          |       | |
 *          |       | +- Enabled?
 *          |       +--- Set?
 *          +----------- <Reserved>
 */
typedef u32                             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_SET             (ACPI_EVENT_STATUS) 0x02


/* Notify types */

#define ACPI_SYSTEM_NOTIFY              0
#define ACPI_DEVICE_NOTIFY              1
#define ACPI_MAX_NOTIFY_HANDLER_TYPE    1

#define MAX_SYS_NOTIFY                  0x7f


/* Address Space (Operation Region) Types */

typedef u8                              ACPI_ADDRESS_SPACE_TYPE;

#define ADDRESS_SPACE_SYSTEM_MEMORY     (ACPI_ADDRESS_SPACE_TYPE) 0
#define ADDRESS_SPACE_SYSTEM_IO         (ACPI_ADDRESS_SPACE_TYPE) 1
#define ADDRESS_SPACE_PCI_CONFIG        (ACPI_ADDRESS_SPACE_TYPE) 2
#define ADDRESS_SPACE_EC                (ACPI_ADDRESS_SPACE_TYPE) 3
#define ADDRESS_SPACE_SMBUS             (ACPI_ADDRESS_SPACE_TYPE) 4
#define ADDRESS_SPACE_CMOS              (ACPI_ADDRESS_SPACE_TYPE) 5
#define ADDRESS_SPACE_PCI_BAR_TARGET    (ACPI_ADDRESS_SPACE_TYPE) 6


/*
 * External ACPI object definition
 */

typedef union acpi_obj
{
	ACPI_OBJECT_TYPE            type;   /* See definition of Acpi_ns_type for values */
	struct
	{
		ACPI_OBJECT_TYPE            type;
		ACPI_INTEGER                value;      /* The actual number */
	} integer;

	struct
	{
		ACPI_OBJECT_TYPE            type;
		u32                         length;     /* # of bytes in string, excluding trailing null */
		NATIVE_CHAR                 *pointer;   /* points to the string value */
	} string;

	struct
	{
		ACPI_OBJECT_TYPE            type;
		u32                         length;     /* # of bytes in buffer */
		u8                          *pointer;   /* points to the buffer */
	} buffer;

	struct
	{
		ACPI_OBJECT_TYPE            type;
		u32                         fill1;
		ACPI_HANDLE                 handle;     /* object reference */
	} reference;

	struct
	{
		ACPI_OBJECT_TYPE            type;
		u32                         count;      /* # of elements in package */
		union acpi_obj              *elements;  /* Pointer to an array of ACPI_OBJECTs */
	} package;

	struct
	{
		ACPI_OBJECT_TYPE            type;
		u32                         proc_id;
		ACPI_IO_ADDRESS             pblk_address;
		u32                         pblk_length;
	} processor;

	struct
	{
		ACPI_OBJECT_TYPE            type;
		u32                         system_level;
		u32                         resource_order;
	} power_resource;

} ACPI_OBJECT, *PACPI_OBJECT;


/*
 * List of objects, used as a parameter list for control method evaluation
 */

typedef struct acpi_obj_list
{
	u32                         count;
	ACPI_OBJECT                 *pointer;

} ACPI_OBJECT_LIST, *PACPI_OBJECT_LIST;


/*
 * Miscellaneous common Data Structures used by the interfaces
 */

typedef struct
{
	u32                         length;         /* Length in bytes of the buffer */
	void                        *pointer;       /* pointer to buffer */

} ACPI_BUFFER;


/*
 * Name_type for Acpi_get_name
 */

#define ACPI_FULL_PATHNAME              0
#define ACPI_SINGLE_NAME                1
#define ACPI_NAME_TYPE_MAX              1


/*
 * Structure and flags for Acpi_get_system_info
 */

#define SYS_MODE_UNKNOWN                0x0000
#define SYS_MODE_ACPI                   0x0001
#define SYS_MODE_LEGACY                 0x0002
#define SYS_MODES_MASK                  0x0003

/*
 *  ACPI CPU Cx state handler
 */
typedef
ACPI_STATUS (*ACPI_SET_C_STATE_HANDLER) (
	NATIVE_UINT                 pblk_address);

/*
 *  ACPI Cx State info
 */
typedef struct
{
	u32                         state_number;
	u32                         latency;
} ACPI_CX_STATE;

/*
 *  ACPI CPU throttling info
 */
typedef struct
{
	u32                         state_number;
	u32                         percent_of_clock;
} ACPI_CPU_THROTTLING_STATE;

/*
 * ACPI Table Info.  One per ACPI table _type_
 */
typedef struct acpi_table_info
{
	u32                         count;

} ACPI_TABLE_INFO;


/*
 * System info returned by Acpi_get_system_info()
 */

typedef struct _acpi_sys_info
{
	u32                         acpi_ca_version;
	u32                         flags;
	u32                         timer_resolution;
	u32                         reserved1;
	u32                         reserved2;
	u32                         debug_level;
	u32                         debug_layer;
	u32                         num_table_types;
	ACPI_TABLE_INFO             table_info [NUM_ACPI_TABLES];

} ACPI_SYSTEM_INFO;


/*
 *  System Initiailization data.  This data is passed to ACPIInitialize
 *  copyied to global data and retained by ACPI CA
 */

typedef struct _acpi_init_data
{
	void                        *RSDP_physical_address; /*  Address of RSDP, needed it it is    */
			  /*  not found in the IA32 manner        */
} ACPI_INIT_DATA;

/*
 * Various handlers and callback procedures
 */

typedef
u32 (*FIXED_EVENT_HANDLER) (
	void                        *context);

typedef
void (*GPE_HANDLER) (
	void                        *context);

typedef
void (*NOTIFY_HANDLER) (
	ACPI_HANDLE                 device,
	u32                         value,
	void                        *context);

#define ADDRESS_SPACE_READ              1
#define ADDRESS_SPACE_WRITE             2

typedef
ACPI_STATUS (*ADDRESS_SPACE_HANDLER) (
	u32                         function,
	ACPI_PHYSICAL_ADDRESS       address,
	u32                         bit_width,
	u32                         *value,
	void                        *handler_context,
	void                        *region_context);

#define ACPI_DEFAULT_HANDLER            ((ADDRESS_SPACE_HANDLER) NULL)


typedef
ACPI_STATUS (*ADDRESS_SPACE_SETUP) (
	ACPI_HANDLE                 region_handle,
	u32                         function,
	void                        *handler_context,
	void                        **region_context);

#define ACPI_REGION_ACTIVATE    0
#define ACPI_REGION_DEACTIVATE  1

typedef
ACPI_STATUS (*WALK_CALLBACK) (
	ACPI_HANDLE                 obj_handle,
	u32                         nesting_level,
	void                        *context,
	void                        **return_value);


/* Interrupt handler return values */

#define INTERRUPT_NOT_HANDLED           0x00
#define INTERRUPT_HANDLED               0x01


/* Structure and flags for Acpi_get_device_info */

#define ACPI_VALID_HID                  0x1
#define ACPI_VALID_UID                  0x2
#define ACPI_VALID_ADR                  0x4
#define ACPI_VALID_STA                  0x8


#define ACPI_COMMON_OBJ_INFO \
	ACPI_OBJECT_TYPE            type;           /* ACPI object type */ \
	ACPI_NAME                   name            /* ACPI object Name */


typedef struct
{

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?