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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  acpi.h - ACPI driver interface
  3.  *
  4.  *  Copyright (C) 1999 Andrew Henroid
  5.  *
  6.  *  This program is free software; you can redistribute it and/or modify
  7.  *  it under the terms of the GNU General Public License as published by
  8.  *  the Free Software Foundation; either version 2 of the License, or
  9.  *  (at your option) any later version.
  10.  *
  11.  *  This program is distributed in the hope that it will be useful,
  12.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  *  GNU General Public License for more details.
  15.  *
  16.  *  You should have received a copy of the GNU General Public License
  17.  *  along with this program; if not, write to the Free Software
  18.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  */
  20. #ifndef _LINUX_ACPI_H
  21. #define _LINUX_ACPI_H
  22. #include <linux/types.h>
  23. #include <linux/ioctl.h>
  24. #ifdef __KERNEL__
  25. #include <linux/sched.h>
  26. #include <linux/wait.h>
  27. #endif /* __KERNEL__ */
  28. /*
  29.  * Device states
  30.  */
  31. typedef enum {
  32. ACPI_D0, /* fully-on */
  33. ACPI_D1, /* partial-on */
  34. ACPI_D2, /* partial-on */
  35. ACPI_D3, /* fully-off */
  36. } acpi_dstate_t;
  37. typedef enum {
  38. ACPI_S0, /* working state */
  39. ACPI_S1, /* power-on suspend */
  40. ACPI_S2, /* suspend to ram, with devices */
  41. ACPI_S3, /* suspend to ram */
  42. ACPI_S4, /* suspend to disk */
  43. ACPI_S5, /* soft-off */
  44. } acpi_sstate_t;
  45. /* RSDP location */
  46. #define ACPI_BIOS_ROM_BASE (0x0e0000)
  47. #define ACPI_BIOS_ROM_END  (0x100000)
  48. /* Table signatures */
  49. #define ACPI_RSDP1_SIG 0x20445352 /* 'RSD ' */
  50. #define ACPI_RSDP2_SIG 0x20525450 /* 'PTR ' */
  51. #define ACPI_RSDT_SIG  0x54445352 /* 'RSDT' */
  52. #define ACPI_FADT_SIG  0x50434146 /* 'FACP' */
  53. #define ACPI_DSDT_SIG  0x54445344 /* 'DSDT' */
  54. #define ACPI_FACS_SIG  0x53434146 /* 'FACS' */
  55. #define ACPI_SIG_LEN 4
  56. #define ACPI_FADT_SIGNATURE "FACP"
  57. /* PM1_STS/EN flags */
  58. #define ACPI_TMR    0x0001
  59. #define ACPI_BM     0x0010
  60. #define ACPI_GBL    0x0020
  61. #define ACPI_PWRBTN 0x0100
  62. #define ACPI_SLPBTN 0x0200
  63. #define ACPI_RTC    0x0400
  64. #define ACPI_WAK    0x8000
  65. /* PM1_CNT flags */
  66. #define ACPI_SCI_EN   0x0001
  67. #define ACPI_BM_RLD   0x0002
  68. #define ACPI_GBL_RLS  0x0004
  69. #define ACPI_SLP_TYP0 0x0400
  70. #define ACPI_SLP_TYP1 0x0800
  71. #define ACPI_SLP_TYP2 0x1000
  72. #define ACPI_SLP_EN   0x2000
  73. #define ACPI_SLP_TYP_MASK  0x1c00
  74. #define ACPI_SLP_TYP_SHIFT 10
  75. /* PM_TMR masks */
  76. #define ACPI_TMR_VAL_EXT 0x00000100
  77. #define ACPI_TMR_MASK  0x00ffffff
  78. #define ACPI_TMR_HZ  3579545 /* 3.58 MHz */
  79. #define ACPI_TMR_KHZ  (ACPI_TMR_HZ / 1000)
  80. #define ACPI_MICROSEC_TO_TMR_TICKS(val) 
  81.   (((val) * (ACPI_TMR_KHZ)) / 1000)
  82. /* PM2_CNT flags */
  83. #define ACPI_ARB_DIS 0x01
  84. /* FADT flags */
  85. #define ACPI_WBINVD   0x00000001
  86. #define ACPI_WBINVD_FLUSH 0x00000002
  87. #define ACPI_PROC_C1   0x00000004
  88. #define ACPI_P_LVL2_UP   0x00000008
  89. #define ACPI_PWR_BUTTON   0x00000010
  90. #define ACPI_SLP_BUTTON   0x00000020
  91. #define ACPI_FIX_RTC   0x00000040
  92. #define ACPI_RTC_64   0x00000080
  93. #define ACPI_TMR_VAL_EXT  0x00000100
  94. #define ACPI_DCK_CAP   0x00000200
  95. /* FADT BOOT_ARCH flags */
  96. #define FADT_BOOT_ARCH_LEGACY_DEVICES 0x0001
  97. #define FADT_BOOT_ARCH_KBD_CONTROLLER 0x0002
  98. /* FACS flags */
  99. #define ACPI_S4BIOS   0x00000001
  100. /* processor block offsets */
  101. #define ACPI_P_CNT   0x00000000
  102. #define ACPI_P_LVL2   0x00000004
  103. #define ACPI_P_LVL3   0x00000005
  104. /* C-state latencies (microseconds) */
  105. #define ACPI_MAX_P_LVL2_LAT 100
  106. #define ACPI_MAX_P_LVL3_LAT 1000
  107. #define ACPI_INFINITE_LAT   (~0UL)
  108. /*
  109.  * Sysctl declarations
  110.  */
  111. enum
  112. {
  113. CTL_ACPI = 10
  114. };
  115. enum
  116. {
  117. ACPI_FADT = 1,
  118. ACPI_DSDT,
  119. ACPI_PM1_ENABLE,
  120. ACPI_GPE_ENABLE,
  121. ACPI_GPE_LEVEL,
  122. ACPI_EVENT,
  123. ACPI_P_BLK,
  124. ACPI_ENTER_LVL2_LAT,
  125. ACPI_ENTER_LVL3_LAT,
  126. ACPI_P_LVL2_LAT,
  127. ACPI_P_LVL3_LAT,
  128. ACPI_C1_TIME,
  129. ACPI_C2_TIME,
  130. ACPI_C3_TIME,
  131. ACPI_C1_COUNT,
  132. ACPI_C2_COUNT,
  133. ACPI_C3_COUNT,
  134. ACPI_S0_SLP_TYP,
  135. ACPI_S1_SLP_TYP,
  136. ACPI_S5_SLP_TYP,
  137. ACPI_SLEEP,
  138. ACPI_FACS,
  139. ACPI_XSDT,
  140. ACPI_PMTIMER,
  141. ACPI_BATT,
  142. };
  143. #define ACPI_SLP_TYP_DISABLED (~0UL)
  144. #ifdef __KERNEL__
  145. /* routines for saving/restoring kernel state */
  146. FASTCALL(extern unsigned long acpi_save_state_mem(unsigned long return_point));
  147. FASTCALL(extern int acpi_save_state_disk(unsigned long return_point));
  148. extern void acpi_restore_state(void);
  149. extern unsigned long acpi_wakeup_address;
  150. #endif /* __KERNEL__ */
  151. int acpi_init(void);
  152. #endif /* _LINUX_ACPI_H */