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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  acpitable.h - x86-64-specific ACPI boot-time initialization
  3.  *
  4.  *  Copyright (C) 1999 Andrew Henroid
  5.  *  Copyright (C) 2001 Richard Schaal
  6.  *  Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
  7.  *  Copyright (C) 2001 Jun Nakajima <jun.nakajima@intel.com>
  8.  *  Copyright (C) 2001 Arjan van de Ven <arjanv@redhat.com>
  9.  *  Copyright (C) 2002 Vojtech Pavlik <vojtech@suse.cz>
  10.  */
  11. /*
  12.  * The following codes are cut&pasted from drivers/acpi. Part of the code
  13.  * there can be not updated or delivered yet.
  14.  * To avoid conflicts when CONFIG_ACPI is defined, the following codes are
  15.  * modified so that they are self-contained in this file.
  16.  * -- jun
  17.  */
  18. #ifndef _HEADER_ACPITABLE_H_
  19. #define _HEADER_ACPITABLE_H_
  20. struct acpi_table_header { /* ACPI common table header */
  21. char signature[4]; /* identifies type of table */
  22. u32 length; /* length of table,
  23.    in bytes, * including header */
  24. u8 revision; /* specification minor version # */
  25. u8 checksum; /* to make sum of entire table == 0 */
  26. char oem_id[6]; /* OEM identification */
  27. char oem_table_id[8]; /* OEM table identification */
  28. u32 oem_revision; /* OEM revision number */
  29. char asl_compiler_id[4]; /* ASL compiler vendor ID */
  30. u32 asl_compiler_revision; /* ASL compiler revision number */
  31. } __attribute__ ((packed));;
  32. enum {
  33. ACPI_APIC = 0,
  34. ACPI_FACP,
  35. ACPI_HPET,
  36. ACPI_TABLE_COUNT
  37. };
  38. static char *acpi_table_signatures[ACPI_TABLE_COUNT] = {
  39. "APIC",
  40. "FACP",
  41. "HPET"
  42. };
  43. struct acpi_table_madt {
  44. struct acpi_table_header header;
  45. u32 lapic_address;
  46. struct {
  47. u32 pcat_compat:1;
  48. u32 reserved:31;
  49. } flags __attribute__ ((packed));
  50. } __attribute__ ((packed));;
  51. enum {
  52. ACPI_MADT_LAPIC = 0,
  53. ACPI_MADT_IOAPIC,
  54. ACPI_MADT_INT_SRC_OVR,
  55. ACPI_MADT_NMI_SRC,
  56. ACPI_MADT_LAPIC_NMI,
  57. ACPI_MADT_LAPIC_ADDR_OVR,
  58. ACPI_MADT_IOSAPIC,
  59. ACPI_MADT_LSAPIC,
  60. ACPI_MADT_PLAT_INT_SRC,
  61. };
  62. #define LO_RSDP_WINDOW_BASE 0 /* Physical Address */
  63. #define HI_RSDP_WINDOW_BASE 0xE0000 /* Physical Address */
  64. #define LO_RSDP_WINDOW_SIZE 0x400
  65. #define HI_RSDP_WINDOW_SIZE 0x20000
  66. #define RSDP_SCAN_STEP 16
  67. #define RSDP_CHECKSUM_LENGTH 20
  68. #define RSDP2_CHECKSUM_LENGTH 36
  69. typedef int (*acpi_table_handler) (struct acpi_table_header *header, unsigned long);
  70. struct acpi_table_rsdp {
  71. char signature[8];
  72. u8 checksum;
  73. char oem_id[6];
  74. u8 revision;
  75. u32 rsdt_address;
  76. u32 length;
  77. u64 xsdt_address;
  78. u8 checksum2;
  79. u8 reserved[3];
  80. } __attribute__ ((packed));
  81. struct acpi_table_rsdt {
  82. struct acpi_table_header header;
  83. u32 entry[0];
  84. } __attribute__ ((packed));
  85. struct acpi_table_xsdt {
  86. struct acpi_table_header header;
  87. u64 entry[0];
  88. } __attribute__ ((packed));
  89. struct acpi_madt_entry_header {
  90. u8 type;
  91. u8 length;
  92. }  __attribute__ ((packed));
  93. struct acpi_madt_int_flags {
  94. u16 polarity:2;
  95. u16 trigger:2;
  96. u16 reserved:12;
  97. } __attribute__ ((packed));
  98. struct acpi_table_lapic {
  99. struct acpi_madt_entry_header header;
  100. u8 acpi_id;
  101. u8 id;
  102. struct {
  103. u32 enabled:1;
  104. u32 reserved:31;
  105. } flags __attribute__ ((packed));
  106. } __attribute__ ((packed));
  107. struct acpi_table_ioapic {
  108. struct acpi_madt_entry_header header;
  109. u8 id;
  110. u8 reserved;
  111. u32 address;
  112. u32 global_irq_base;
  113. } __attribute__ ((packed));
  114. struct acpi_table_int_src_ovr {
  115. struct acpi_madt_entry_header header;
  116. u8 bus;
  117. u8 bus_irq;
  118. u32 global_irq;
  119. struct acpi_madt_int_flags flags;
  120. } __attribute__ ((packed));
  121. struct acpi_table_nmi_src {
  122. struct acpi_madt_entry_header header;
  123. struct acpi_madt_int_flags flags;
  124. u32 global_irq;
  125. } __attribute__ ((packed));
  126. struct acpi_table_lapic_nmi {
  127. struct acpi_madt_entry_header header;
  128. u8 acpi_id;
  129. struct acpi_madt_int_flags flags;
  130. u8 lint;
  131. } __attribute__ ((packed));
  132. struct acpi_table_lapic_addr_ovr {
  133. struct acpi_madt_entry_header header;
  134. u8 reserved[2];
  135. u64 address;
  136. } __attribute__ ((packed));
  137. struct acpi_table_iosapic {
  138. struct acpi_madt_entry_header header;
  139. u8 id;
  140. u8 reserved;
  141. u32 global_irq_base;
  142. u64 address;
  143. } __attribute__ ((packed));
  144. struct acpi_table_lsapic {
  145. struct acpi_madt_entry_header header;
  146. u8 acpi_id;
  147. u8 id;
  148. u8 eid;
  149. u8 reserved[3];
  150. struct {
  151. u32 enabled:1;
  152. u32 reserved:31;
  153. } flags;
  154. } __attribute__ ((packed));
  155. struct acpi_table_plat_int_src {
  156. struct acpi_madt_entry_header header;
  157. struct acpi_madt_int_flags flags;
  158. u8 type;
  159. u8 id;
  160. u8 eid;
  161. u8 iosapic_vector;
  162. u32 global_irq;
  163. u32 reserved;
  164. } __attribute__ ((packed));
  165. #define ACPI_SPACE_MEM 0
  166. #define ACPI_SPACE_IO 1
  167. #define ACPI_SPACE_PCICONF 2
  168. struct acpi_gen_regaddr {
  169. u8  space_id;
  170. u8  bit_width;
  171. u8  bit_offset;
  172. u8  resv;
  173. u32 addrl;
  174. u32 addrh;
  175. } __attribute__ ((packed));
  176. struct acpi_table_hpet {
  177. struct acpi_table_header header;
  178. u32 id;
  179. struct acpi_gen_regaddr addr;
  180. u8 number;
  181. u16 min_tick;
  182. u8 page_protect;
  183. } __attribute__ ((packed));
  184. #endif