actbl.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:7k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /******************************************************************************
  2.  *
  3.  * Name: actbl.h - Table data structures defined in ACPI specification
  4.  *       $Revision: 46 $
  5.  *
  6.  *****************************************************************************/
  7. /*
  8.  *  Copyright (C) 2000, 2001 R. Byron Moore
  9.  *
  10.  *  This program is free software; you can redistribute it and/or modify
  11.  *  it under the terms of the GNU General Public License as published by
  12.  *  the Free Software Foundation; either version 2 of the License, or
  13.  *  (at your option) any later version.
  14.  *
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *
  20.  *  You should have received a copy of the GNU General Public License
  21.  *  along with this program; if not, write to the Free Software
  22.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  23.  */
  24. #ifndef __ACTBL_H__
  25. #define __ACTBL_H__
  26. /*
  27.  *  Values for description table header signatures
  28.  */
  29. #define RSDP_NAME               "RSDP"
  30. #define RSDP_SIG                "RSD PTR "  /* RSDT Pointer signature */
  31. #define APIC_SIG                "APIC"      /* Multiple APIC Description Table */
  32. #define DSDT_SIG                "DSDT"      /* Differentiated System Description Table */
  33. #define FADT_SIG                "FACP"      /* Fixed ACPI Description Table */
  34. #define FACS_SIG                "FACS"      /* Firmware ACPI Control Structure */
  35. #define PSDT_SIG                "PSDT"      /* Persistent System Description Table */
  36. #define RSDT_SIG                "RSDT"      /* Root System Description Table */
  37. #define XSDT_SIG                "XSDT"      /* Extended  System Description Table */
  38. #define SSDT_SIG                "SSDT"      /* Secondary System Description Table */
  39. #define SBST_SIG                "SBST"      /* Smart Battery Specification Table */
  40. #define SPIC_SIG                "SPIC"      /* iosapic table */
  41. #define BOOT_SIG                "BOOT"      /* Boot table */
  42. #define GL_OWNED                0x02        /* Ownership of global lock is bit 1 */
  43. /* values of Mapic.Model */
  44. #define DUAL_PIC                0
  45. #define MULTIPLE_APIC           1
  46. /* values of Type in APIC_HEADER */
  47. #define APIC_PROC               0
  48. #define APIC_IO                 1
  49. /*
  50.  * Common table types.  The base code can remain
  51.  * constant if the underlying tables are changed
  52.  */
  53. #define RSDT_DESCRIPTOR         RSDT_DESCRIPTOR_REV2
  54. #define xsdt_descriptor         XSDT_DESCRIPTOR_REV2
  55. #define FACS_DESCRIPTOR         facs_descriptor_rev2
  56. #define FADT_DESCRIPTOR         fadt_descriptor_rev2
  57. #pragma pack(1)
  58. /*
  59.  * Architecture-independent tables
  60.  * The architecture dependent tables are in separate files
  61.  */
  62. typedef struct  /* Root System Descriptor Pointer */
  63. {
  64. NATIVE_CHAR             signature [8];          /* contains "RSD PTR " */
  65. u8                      checksum;               /* to make sum of struct == 0 */
  66. NATIVE_CHAR             oem_id [6];             /* OEM identification */
  67. u8                      revision;               /* Must be 0 for 1.0, 2 for 2.0 */
  68. u32                     rsdt_physical_address;  /* 32-bit physical address of RSDT */
  69. u32                     length;                 /* XSDT Length in bytes including hdr */
  70. u64                     xsdt_physical_address;  /* 64-bit physical address of XSDT */
  71. u8                      extended_checksum;      /* Checksum of entire table */
  72. NATIVE_CHAR             reserved [3];           /* reserved field must be 0 */
  73. } RSDP_DESCRIPTOR;
  74. typedef struct  /* ACPI common table header */
  75. {
  76. NATIVE_CHAR             signature [4];          /* identifies type of table */
  77. u32                     length;                 /* length of table, in bytes,
  78.   * including header */
  79. u8                      revision;               /* specification minor version # */
  80. u8                      checksum;               /* to make sum of entire table == 0 */
  81. NATIVE_CHAR             oem_id [6];             /* OEM identification */
  82. NATIVE_CHAR             oem_table_id [8];       /* OEM table identification */
  83. u32                     oem_revision;           /* OEM revision number */
  84. NATIVE_CHAR             asl_compiler_id [4];    /* ASL compiler vendor ID */
  85. u32                     asl_compiler_revision;  /* ASL compiler revision number */
  86. } acpi_table_header;
  87. typedef struct  /* Common FACS for internal use */
  88. {
  89. u32                     *global_lock;
  90. u64                     *firmware_waking_vector;
  91. u8                      vector_width;
  92. } acpi_common_facs;
  93. typedef struct  /* APIC Table */
  94. {
  95. acpi_table_header       header;                 /* table header */
  96. u32                     local_apic_address;     /* Physical address for accessing local APICs */
  97. u32                     PCATcompat      : 1;    /* a one indicates system also has dual 8259s */
  98. u32                     reserved1       : 31;
  99. } APIC_TABLE;
  100. typedef struct  /* APIC Header */
  101. {
  102. u8                      type;                   /* APIC type.  Either APIC_PROC or APIC_IO */
  103. u8                      length;                 /* Length of APIC structure */
  104. } APIC_HEADER;
  105. typedef struct  /* Processor APIC */
  106. {
  107. APIC_HEADER             header;
  108. u8                      processor_apic_id;      /* ACPI processor id */
  109. u8                      local_apic_id;          /* processor's local APIC id */
  110. u32                     processor_enabled: 1;   /* Processor is usable if set */
  111. u32                     reserved1       : 31;
  112. } PROCESSOR_APIC;
  113. typedef struct  /* IO APIC */
  114. {
  115. APIC_HEADER             header;
  116. u8                      io_apic_id;             /* I/O APIC ID */
  117. u8                      reserved;               /* reserved - must be zero */
  118. u32                     io_apic_address;        /* APIC's physical address */
  119. u32                     vector;                 /* interrupt vector index where INTI
  120.   * lines start */
  121. } IO_APIC;
  122. /*
  123. **  IA64 TODO:  Add SAPIC Tables
  124. */
  125. /*
  126. **  IA64 TODO:  Modify Smart Battery Description to comply with ACPI IA64
  127. **              extensions.
  128. */
  129. typedef struct  /* Smart Battery Description Table */
  130. {
  131. acpi_table_header       header;
  132. u32                     warning_level;
  133. u32                     low_level;
  134. u32                     critical_level;
  135. } SMART_BATTERY_DESCRIPTION_TABLE;
  136. #pragma pack()
  137. /*
  138.  * ACPI Table information.  We save the table address, length,
  139.  * and type of memory allocation (mapped or allocated) for each
  140.  * table for 1) when we exit, and 2) if a new table is installed
  141.  */
  142. #define ACPI_MEM_NOT_ALLOCATED  0
  143. #define ACPI_MEM_ALLOCATED      1
  144. #define ACPI_MEM_MAPPED         2
  145. /* Definitions for the Flags bitfield member of ACPI_TABLE_SUPPORT */
  146. #define ACPI_TABLE_SINGLE       0
  147. #define ACPI_TABLE_MULTIPLE     1
  148. /* Data about each known table type */
  149. typedef struct _acpi_table_support
  150. {
  151. NATIVE_CHAR             *name;
  152. NATIVE_CHAR             *signature;
  153. u8                      sig_length;
  154. u8                      flags;
  155. u16                     status;
  156. void                    **global_ptr;
  157. } ACPI_TABLE_SUPPORT;
  158. /*
  159.  * Get the architecture-specific tables
  160.  */
  161. #include "actbl1.h"   /* Acpi 1.0 table defintions */
  162. #include "actbl71.h"  /* Acpi 0.71 IA-64 Extension table defintions */
  163. #include "actbl2.h"   /* Acpi 2.0 table definitions */
  164. #endif /* __ACTBL_H__ */