| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | *  asm-i386/acpi.h | 
|  | 3 | * | 
|  | 4 | *  Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com> | 
|  | 5 | *  Copyright (C) 2001 Patrick Mochel <mochel@osdl.org> | 
|  | 6 | * | 
|  | 7 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|  | 8 | * | 
|  | 9 | *  This program is free software; you can redistribute it and/or modify | 
|  | 10 | *  it under the terms of the GNU General Public License as published by | 
|  | 11 | *  the Free Software Foundation; either version 2 of the License, or | 
|  | 12 | *  (at your option) any later version. | 
|  | 13 | * | 
|  | 14 | *  This program is distributed in the hope that it will be useful, | 
|  | 15 | *  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 16 | *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 17 | *  GNU General Public License for more details. | 
|  | 18 | * | 
|  | 19 | *  You should have received a copy of the GNU General Public License | 
|  | 20 | *  along with this program; if not, write to the Free Software | 
|  | 21 | *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
|  | 22 | * | 
|  | 23 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|  | 24 | */ | 
|  | 25 |  | 
|  | 26 | #ifndef _ASM_ACPI_H | 
|  | 27 | #define _ASM_ACPI_H | 
|  | 28 |  | 
|  | 29 | #ifdef __KERNEL__ | 
|  | 30 |  | 
| Venkatesh Pallipadi | 02df8b9 | 2005-04-15 15:07:10 -0400 | [diff] [blame] | 31 | #include <acpi/pdc_intel.h> | 
|  | 32 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | #include <asm/system.h>		/* defines cmpxchg */ | 
|  | 34 |  | 
|  | 35 | #define COMPILER_DEPENDENT_INT64   long long | 
|  | 36 | #define COMPILER_DEPENDENT_UINT64  unsigned long long | 
|  | 37 |  | 
|  | 38 | /* | 
|  | 39 | * Calling conventions: | 
|  | 40 | * | 
|  | 41 | * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads) | 
| Alexey Starikovskiy | f18c5a0 | 2007-02-02 19:48:23 +0300 | [diff] [blame] | 42 | * ACPI_EXTERNAL_XFACE      - External ACPI interfaces | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 43 | * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces | 
|  | 44 | * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces | 
|  | 45 | */ | 
|  | 46 | #define ACPI_SYSTEM_XFACE | 
|  | 47 | #define ACPI_EXTERNAL_XFACE | 
|  | 48 | #define ACPI_INTERNAL_XFACE | 
|  | 49 | #define ACPI_INTERNAL_VAR_XFACE | 
|  | 50 |  | 
|  | 51 | /* Asm macros */ | 
|  | 52 |  | 
|  | 53 | #define ACPI_ASM_MACROS | 
|  | 54 | #define BREAKPOINT3 | 
|  | 55 | #define ACPI_DISABLE_IRQS() local_irq_disable() | 
|  | 56 | #define ACPI_ENABLE_IRQS()  local_irq_enable() | 
|  | 57 | #define ACPI_FLUSH_CPU_CACHE()	wbinvd() | 
|  | 58 |  | 
| Andrew Morton | d0a9081 | 2006-10-20 14:30:27 -0700 | [diff] [blame] | 59 | int __acpi_acquire_global_lock(unsigned int *lock); | 
|  | 60 | int __acpi_release_global_lock(unsigned int *lock); | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 61 |  | 
| Alexey Starikovskiy | ad71860 | 2007-02-02 19:48:19 +0300 | [diff] [blame] | 62 | #define ACPI_ACQUIRE_GLOBAL_LOCK(facs, Acq) \ | 
|  | 63 | ((Acq) = __acpi_acquire_global_lock(&facs->global_lock)) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 64 |  | 
| Alexey Starikovskiy | ad71860 | 2007-02-02 19:48:19 +0300 | [diff] [blame] | 65 | #define ACPI_RELEASE_GLOBAL_LOCK(facs, Acq) \ | 
|  | 66 | ((Acq) = __acpi_release_global_lock(&facs->global_lock)) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 67 |  | 
|  | 68 | /* | 
|  | 69 | * Math helper asm macros | 
|  | 70 | */ | 
|  | 71 | #define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \ | 
|  | 72 | asm("divl %2;"        \ | 
|  | 73 | :"=a"(q32), "=d"(r32) \ | 
|  | 74 | :"r"(d32),            \ | 
|  | 75 | "0"(n_lo), "1"(n_hi)) | 
|  | 76 |  | 
|  | 77 |  | 
|  | 78 | #define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \ | 
|  | 79 | asm("shrl   $1,%2;"             \ | 
|  | 80 | "rcrl   $1,%3;"             \ | 
|  | 81 | :"=r"(n_hi), "=r"(n_lo)     \ | 
|  | 82 | :"0"(n_hi), "1"(n_lo)) | 
|  | 83 |  | 
| Andi Kleen | 54ef340 | 2007-10-19 20:35:03 +0200 | [diff] [blame] | 84 | extern void early_quirks(void); | 
| Herbert Poetzl | 152475c | 2006-03-22 00:07:34 -0800 | [diff] [blame] | 85 |  | 
| Alexey Starikovskiy | f18c5a0 | 2007-02-02 19:48:23 +0300 | [diff] [blame] | 86 | #ifdef CONFIG_ACPI | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 87 | extern int acpi_lapic; | 
|  | 88 | extern int acpi_ioapic; | 
|  | 89 | extern int acpi_noirq; | 
|  | 90 | extern int acpi_strict; | 
|  | 91 | extern int acpi_disabled; | 
|  | 92 | extern int acpi_ht; | 
|  | 93 | extern int acpi_pci_disabled; | 
| Alexey Starikovskiy | f18c5a0 | 2007-02-02 19:48:23 +0300 | [diff] [blame] | 94 | static inline void disable_acpi(void) | 
|  | 95 | { | 
|  | 96 | acpi_disabled = 1; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 97 | acpi_ht = 0; | 
|  | 98 | acpi_pci_disabled = 1; | 
|  | 99 | acpi_noirq = 1; | 
|  | 100 | } | 
|  | 101 |  | 
|  | 102 | /* Fixmap pages to reserve for ACPI boot-time tables (see fixmap.h) */ | 
|  | 103 | #define FIX_ACPI_PAGES 4 | 
|  | 104 |  | 
|  | 105 | extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq); | 
|  | 106 |  | 
|  | 107 | #ifdef CONFIG_X86_IO_APIC | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 108 | extern int acpi_skip_timer_override; | 
| Andi Kleen | fa18f47 | 2006-11-14 16:57:46 +0100 | [diff] [blame] | 109 | extern int acpi_use_timer_override; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 110 | #endif | 
|  | 111 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 112 | static inline void acpi_noirq_set(void) { acpi_noirq = 1; } | 
| Alexey Starikovskiy | f18c5a0 | 2007-02-02 19:48:23 +0300 | [diff] [blame] | 113 | static inline void acpi_disable_pci(void) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 114 | { | 
| Alexey Starikovskiy | f18c5a0 | 2007-02-02 19:48:23 +0300 | [diff] [blame] | 115 | acpi_pci_disabled = 1; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 116 | acpi_noirq_set(); | 
|  | 117 | } | 
|  | 118 | extern int acpi_irq_balance_set(char *str); | 
| Len Brown | 6153df7 | 2005-08-25 12:27:09 -0400 | [diff] [blame] | 119 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 120 | /* routines for saving/restoring kernel state */ | 
|  | 121 | extern int acpi_save_state_mem(void); | 
|  | 122 | extern void acpi_restore_state_mem(void); | 
|  | 123 |  | 
|  | 124 | extern unsigned long acpi_wakeup_address; | 
|  | 125 |  | 
|  | 126 | /* early initialization routine */ | 
|  | 127 | extern void acpi_reserve_bootmem(void); | 
|  | 128 |  | 
| Len Brown | e8b2fd0 | 2007-07-24 22:26:33 -0400 | [diff] [blame] | 129 | #else	/* !CONFIG_ACPI */ | 
|  | 130 |  | 
|  | 131 | #define acpi_lapic 0 | 
|  | 132 | #define acpi_ioapic 0 | 
|  | 133 | static inline void acpi_noirq_set(void) { } | 
|  | 134 | static inline void acpi_disable_pci(void) { } | 
|  | 135 | static inline void disable_acpi(void) { } | 
|  | 136 |  | 
|  | 137 | #endif	/* !CONFIG_ACPI */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 138 |  | 
| Venkatesh Pallipadi | 05131ec | 2005-10-23 16:31:00 -0400 | [diff] [blame] | 139 | #define ARCH_HAS_POWER_INIT	1 | 
| Venkatesh Pallipadi | 02df8b9 | 2005-04-15 15:07:10 -0400 | [diff] [blame] | 140 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 141 | #endif /*__KERNEL__*/ | 
|  | 142 |  | 
|  | 143 | #endif /*_ASM_ACPI_H*/ |