| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | *  asm-ia64/acpi.h | 
|  | 3 | * | 
|  | 4 | *  Copyright (C) 1999 VA Linux Systems | 
|  | 5 | *  Copyright (C) 1999 Walt Drummond <drummond@valinux.com> | 
|  | 6 | *  Copyright (C) 2000,2001 J.I. Lee <jung-ik.lee@intel.com> | 
|  | 7 | *  Copyright (C) 2001,2002 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com> | 
|  | 8 | * | 
|  | 9 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|  | 10 | * | 
|  | 11 | *  This program is free software; you can redistribute it and/or modify | 
|  | 12 | *  it under the terms of the GNU General Public License as published by | 
|  | 13 | *  the Free Software Foundation; either version 2 of the License, or | 
|  | 14 | *  (at your option) any later version. | 
|  | 15 | * | 
|  | 16 | *  This program is distributed in the hope that it will be useful, | 
|  | 17 | *  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 18 | *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 19 | *  GNU General Public License for more details. | 
|  | 20 | * | 
|  | 21 | *  You should have received a copy of the GNU General Public License | 
|  | 22 | *  along with this program; if not, write to the Free Software | 
|  | 23 | *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
|  | 24 | * | 
|  | 25 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|  | 26 | */ | 
|  | 27 |  | 
|  | 28 | #ifndef _ASM_ACPI_H | 
|  | 29 | #define _ASM_ACPI_H | 
|  | 30 |  | 
|  | 31 | #ifdef __KERNEL__ | 
|  | 32 |  | 
|  | 33 | #include <linux/init.h> | 
|  | 34 | #include <linux/numa.h> | 
|  | 35 | #include <asm/system.h> | 
|  | 36 |  | 
|  | 37 | #define COMPILER_DEPENDENT_INT64	long | 
|  | 38 | #define COMPILER_DEPENDENT_UINT64	unsigned long | 
|  | 39 |  | 
|  | 40 | /* | 
|  | 41 | * Calling conventions: | 
|  | 42 | * | 
|  | 43 | * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads) | 
|  | 44 | * ACPI_EXTERNAL_XFACE      - External ACPI interfaces | 
|  | 45 | * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces | 
|  | 46 | * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces | 
|  | 47 | */ | 
|  | 48 | #define ACPI_SYSTEM_XFACE | 
|  | 49 | #define ACPI_EXTERNAL_XFACE | 
|  | 50 | #define ACPI_INTERNAL_XFACE | 
|  | 51 | #define ACPI_INTERNAL_VAR_XFACE | 
|  | 52 |  | 
|  | 53 | /* Asm macros */ | 
|  | 54 |  | 
|  | 55 | #define ACPI_ASM_MACROS | 
|  | 56 | #define BREAKPOINT3 | 
|  | 57 | #define ACPI_DISABLE_IRQS() local_irq_disable() | 
|  | 58 | #define ACPI_ENABLE_IRQS()  local_irq_enable() | 
|  | 59 | #define ACPI_FLUSH_CPU_CACHE() | 
|  | 60 |  | 
|  | 61 | static inline int | 
|  | 62 | ia64_acpi_acquire_global_lock (unsigned int *lock) | 
|  | 63 | { | 
|  | 64 | unsigned int old, new, val; | 
|  | 65 | do { | 
|  | 66 | old = *lock; | 
|  | 67 | new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1)); | 
|  | 68 | val = ia64_cmpxchg4_acq(lock, new, old); | 
|  | 69 | } while (unlikely (val != old)); | 
|  | 70 | return (new < 3) ? -1 : 0; | 
|  | 71 | } | 
|  | 72 |  | 
|  | 73 | static inline int | 
|  | 74 | ia64_acpi_release_global_lock (unsigned int *lock) | 
|  | 75 | { | 
|  | 76 | unsigned int old, new, val; | 
|  | 77 | do { | 
|  | 78 | old = *lock; | 
|  | 79 | new = old & ~0x3; | 
|  | 80 | val = ia64_cmpxchg4_acq(lock, new, old); | 
|  | 81 | } while (unlikely (val != old)); | 
|  | 82 | return old & 0x1; | 
|  | 83 | } | 
|  | 84 |  | 
|  | 85 | #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq)				\ | 
|  | 86 | ((Acq) = ia64_acpi_acquire_global_lock((unsigned int *) GLptr)) | 
|  | 87 |  | 
|  | 88 | #define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq)				\ | 
|  | 89 | ((Acq) = ia64_acpi_release_global_lock((unsigned int *) GLptr)) | 
|  | 90 |  | 
|  | 91 | #define acpi_disabled 0	/* ACPI always enabled on IA64 */ | 
|  | 92 | #define acpi_noirq 0	/* ACPI always enabled on IA64 */ | 
|  | 93 | #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ | 
|  | 94 | #define acpi_strict 1	/* no ACPI spec workarounds on IA64 */ | 
|  | 95 | static inline void disable_acpi(void) { } | 
|  | 96 |  | 
|  | 97 | const char *acpi_get_sysname (void); | 
|  | 98 | int acpi_request_vector (u32 int_type); | 
|  | 99 | int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); | 
|  | 100 |  | 
| Ashok Raj | 55e59c5 | 2005-03-31 22:51:10 -0500 | [diff] [blame] | 101 | /* | 
|  | 102 | * Record the cpei override flag and current logical cpu. This is | 
|  | 103 | * useful for CPU removal. | 
|  | 104 | */ | 
|  | 105 | extern unsigned int can_cpei_retarget(void); | 
|  | 106 | extern unsigned int is_cpu_cpei_target(unsigned int cpu); | 
|  | 107 | extern void set_cpei_target_cpu(unsigned int cpu); | 
|  | 108 | extern unsigned int get_cpei_target_cpu(void); | 
| Ashok Raj | a6b14fa | 2006-02-14 15:01:12 -0800 | [diff] [blame] | 109 | extern void prefill_possible_map(void); | 
|  | 110 | extern int additional_cpus; | 
| Ashok Raj | 55e59c5 | 2005-03-31 22:51:10 -0500 | [diff] [blame] | 111 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 112 | #ifdef CONFIG_ACPI_NUMA | 
| Jack Steiner | 0d9adec | 2006-04-18 15:00:45 -0500 | [diff] [blame] | 113 | #if MAX_NUMNODES > 256 | 
|  | 114 | #define MAX_PXM_DOMAINS MAX_NUMNODES | 
| Jack Steiner | 3ad5ef8 | 2006-03-02 16:02:25 -0600 | [diff] [blame] | 115 | #else | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 116 | #define MAX_PXM_DOMAINS (256) | 
| Jack Steiner | 3ad5ef8 | 2006-03-02 16:02:25 -0600 | [diff] [blame] | 117 | #endif | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 118 | extern int __devinitdata pxm_to_nid_map[MAX_PXM_DOMAINS]; | 
|  | 119 | extern int __initdata nid_to_pxm_map[MAX_NUMNODES]; | 
|  | 120 | #endif | 
|  | 121 |  | 
|  | 122 | extern u16 ia64_acpiid_to_sapicid[]; | 
|  | 123 |  | 
| Venkatesh Pallipadi | 4db8699 | 2005-07-29 16:15:00 -0700 | [diff] [blame] | 124 | /* | 
|  | 125 | * Refer Intel ACPI _PDC support document for bit definitions | 
|  | 126 | */ | 
|  | 127 | #define ACPI_PDC_EST_CAPABILITY_SMP     0x8 | 
|  | 128 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 129 | #endif /*__KERNEL__*/ | 
|  | 130 |  | 
|  | 131 | #endif /*_ASM_ACPI_H*/ |