17f30491cSTony Luck /* 27f30491cSTony Luck * Copyright (C) 1999 VA Linux Systems 37f30491cSTony Luck * Copyright (C) 1999 Walt Drummond <drummond@valinux.com> 47f30491cSTony Luck * Copyright (C) 2000,2001 J.I. Lee <jung-ik.lee@intel.com> 57f30491cSTony Luck * Copyright (C) 2001,2002 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com> 67f30491cSTony Luck * 77f30491cSTony Luck * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87f30491cSTony Luck * 97f30491cSTony Luck * This program is free software; you can redistribute it and/or modify 107f30491cSTony Luck * it under the terms of the GNU General Public License as published by 117f30491cSTony Luck * the Free Software Foundation; either version 2 of the License, or 127f30491cSTony Luck * (at your option) any later version. 137f30491cSTony Luck * 147f30491cSTony Luck * This program is distributed in the hope that it will be useful, 157f30491cSTony Luck * but WITHOUT ANY WARRANTY; without even the implied warranty of 167f30491cSTony Luck * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 177f30491cSTony Luck * GNU General Public License for more details. 187f30491cSTony Luck * 197f30491cSTony Luck * You should have received a copy of the GNU General Public License 207f30491cSTony Luck * along with this program; if not, write to the Free Software 217f30491cSTony Luck * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 227f30491cSTony Luck * 237f30491cSTony Luck * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 247f30491cSTony Luck */ 257f30491cSTony Luck 267f30491cSTony Luck #ifndef _ASM_ACPI_H 277f30491cSTony Luck #define _ASM_ACPI_H 287f30491cSTony Luck 297f30491cSTony Luck #ifdef __KERNEL__ 307f30491cSTony Luck 317f30491cSTony Luck #include <acpi/pdc_intel.h> 327f30491cSTony Luck 337f30491cSTony Luck #include <linux/init.h> 347f30491cSTony Luck #include <linux/numa.h> 357f30491cSTony Luck #include <asm/numa.h> 367f30491cSTony Luck 37e56d953dSLen Brown #ifdef CONFIG_ACPI 38247dba58SBaoquan He extern int acpi_lapic; 397f30491cSTony Luck #define acpi_disabled 0 /* ACPI always enabled on IA64 */ 407f30491cSTony Luck #define acpi_noirq 0 /* ACPI always enabled on IA64 */ 417f30491cSTony Luck #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ 427f30491cSTony Luck #define acpi_strict 1 /* no ACPI spec workarounds on IA64 */ 43b50154d5SGraeme Gregory 44b50154d5SGraeme Gregory static inline bool acpi_has_cpu_in_madt(void) 45b50154d5SGraeme Gregory { 46b50154d5SGraeme Gregory return !!acpi_lapic; 47b50154d5SGraeme Gregory } 48e56d953dSLen Brown #endif 497f30491cSTony Luck #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ 507f30491cSTony Luck static inline void disable_acpi(void) { } 517f30491cSTony Luck 52d868080dSAlex Chiang #ifdef CONFIG_IA64_GENERIC 537f30491cSTony Luck const char *acpi_get_sysname (void); 54d868080dSAlex Chiang #else 55d868080dSAlex Chiang static inline const char *acpi_get_sysname (void) 56d868080dSAlex Chiang { 57d868080dSAlex Chiang # if defined (CONFIG_IA64_HP_SIM) 58d868080dSAlex Chiang return "hpsim"; 59d868080dSAlex Chiang # elif defined (CONFIG_IA64_HP_ZX1) 60d868080dSAlex Chiang return "hpzx1"; 61d868080dSAlex Chiang # elif defined (CONFIG_IA64_HP_ZX1_SWIOTLB) 62d868080dSAlex Chiang return "hpzx1_swiotlb"; 63d868080dSAlex Chiang # elif defined (CONFIG_IA64_SGI_SN2) 64d868080dSAlex Chiang return "sn2"; 65d868080dSAlex Chiang # elif defined (CONFIG_IA64_SGI_UV) 66d868080dSAlex Chiang return "uv"; 67d868080dSAlex Chiang # elif defined (CONFIG_IA64_DIG) 68d868080dSAlex Chiang return "dig"; 69d868080dSAlex Chiang # elif defined(CONFIG_IA64_DIG_VTD) 70d868080dSAlex Chiang return "dig_vtd"; 71d868080dSAlex Chiang # else 72d868080dSAlex Chiang # error Unknown platform. Fix acpi.c. 73d868080dSAlex Chiang # endif 74d868080dSAlex Chiang } 75d868080dSAlex Chiang #endif 767f30491cSTony Luck int acpi_request_vector (u32 int_type); 777f30491cSTony Luck int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); 787f30491cSTony Luck 79f1a2003eSRafael J. Wysocki /* Low-level suspend routine. */ 80f1a2003eSRafael J. Wysocki extern int acpi_suspend_lowlevel(void); 81c41b93fbSRafael J. Wysocki 827f30491cSTony Luck extern unsigned long acpi_wakeup_address; 837f30491cSTony Luck 847f30491cSTony Luck /* 857f30491cSTony Luck * Record the cpei override flag and current logical cpu. This is 867f30491cSTony Luck * useful for CPU removal. 877f30491cSTony Luck */ 887f30491cSTony Luck extern unsigned int can_cpei_retarget(void); 897f30491cSTony Luck extern unsigned int is_cpu_cpei_target(unsigned int cpu); 907f30491cSTony Luck extern void set_cpei_target_cpu(unsigned int cpu); 917f30491cSTony Luck extern unsigned int get_cpei_target_cpu(void); 927f30491cSTony Luck extern void prefill_possible_map(void); 937f30491cSTony Luck #ifdef CONFIG_ACPI_HOTPLUG_CPU 947f30491cSTony Luck extern int additional_cpus; 957f30491cSTony Luck #else 967f30491cSTony Luck #define additional_cpus 0 977f30491cSTony Luck #endif 987f30491cSTony Luck 997f30491cSTony Luck #ifdef CONFIG_ACPI_NUMA 1007f30491cSTony Luck #if MAX_NUMNODES > 256 1017f30491cSTony Luck #define MAX_PXM_DOMAINS MAX_NUMNODES 1027f30491cSTony Luck #else 1037f30491cSTony Luck #define MAX_PXM_DOMAINS (256) 1047f30491cSTony Luck #endif 1055b5e76e9SGreg Kroah-Hartman extern int pxm_to_nid_map[MAX_PXM_DOMAINS]; 1067f30491cSTony Luck extern int __initdata nid_to_pxm_map[MAX_NUMNODES]; 1077f30491cSTony Luck #endif 1087f30491cSTony Luck 1091d9cb470SAlex Chiang static inline bool arch_has_acpi_pdc(void) { return true; } 1106c5807d7SAlex Chiang static inline void arch_acpi_set_pdc_bits(u32 *buf) 1116c5807d7SAlex Chiang { 1126c5807d7SAlex Chiang buf[2] |= ACPI_PDC_EST_CAPABILITY_SMP; 1136c5807d7SAlex Chiang } 1141d9cb470SAlex Chiang 1157f30491cSTony Luck #define acpi_unlazy_tlb(x) 1167f30491cSTony Luck 1177f30491cSTony Luck #ifdef CONFIG_ACPI_NUMA 1187f30491cSTony Luck extern cpumask_t early_cpu_possible_map; 1197f30491cSTony Luck #define for_each_possible_early_cpu(cpu) \ 1205d2068daSRusty Russell for_each_cpu((cpu), &early_cpu_possible_map) 1217f30491cSTony Luck 1227f30491cSTony Luck static inline void per_cpu_scan_finalize(int min_cpus, int reserve_cpus) 1237f30491cSTony Luck { 1247f30491cSTony Luck int low_cpu, high_cpu; 1257f30491cSTony Luck int cpu; 1267f30491cSTony Luck int next_nid = 0; 1277f30491cSTony Luck 1285d2068daSRusty Russell low_cpu = cpumask_weight(&early_cpu_possible_map); 1297f30491cSTony Luck 1307f30491cSTony Luck high_cpu = max(low_cpu, min_cpus); 1317f30491cSTony Luck high_cpu = min(high_cpu + reserve_cpus, NR_CPUS); 1327f30491cSTony Luck 1337f30491cSTony Luck for (cpu = low_cpu; cpu < high_cpu; cpu++) { 1345d2068daSRusty Russell cpumask_set_cpu(cpu, &early_cpu_possible_map); 1357f30491cSTony Luck if (node_cpuid[cpu].nid == NUMA_NO_NODE) { 1367f30491cSTony Luck node_cpuid[cpu].nid = next_nid; 1377f30491cSTony Luck next_nid++; 1387f30491cSTony Luck if (next_nid >= num_online_nodes()) 1397f30491cSTony Luck next_nid = 0; 1407f30491cSTony Luck } 1417f30491cSTony Luck } 1427f30491cSTony Luck } 143312521d0SRobert Richter 144312521d0SRobert Richter extern void acpi_numa_fixup(void); 145312521d0SRobert Richter 1467f30491cSTony Luck #endif /* CONFIG_ACPI_NUMA */ 1477f30491cSTony Luck 1487f30491cSTony Luck #endif /*__KERNEL__*/ 1497f30491cSTony Luck 1507f30491cSTony Luck #endif /*_ASM_ACPI_H*/ 151