diff options
| -rw-r--r-- | arch/ia64/sn/kernel/io_common.c | 18 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/iomv.c | 5 | ||||
| -rw-r--r-- | include/asm-ia64/sn/acpi.h | 18 |
3 files changed, 32 insertions, 9 deletions
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c index 65979f1fb353..75f0379958f9 100644 --- a/arch/ia64/sn/kernel/io_common.c +++ b/arch/ia64/sn/kernel/io_common.c | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #include "xtalk/xwidgetdev.h" | 25 | #include "xtalk/xwidgetdev.h" |
| 26 | #include <linux/acpi.h> | 26 | #include <linux/acpi.h> |
| 27 | #include <asm/sn/sn2/sn_hwperf.h> | 27 | #include <asm/sn/sn2/sn_hwperf.h> |
| 28 | #include <asm/sn/acpi.h> | ||
| 28 | 29 | ||
| 29 | extern void sn_init_cpei_timer(void); | 30 | extern void sn_init_cpei_timer(void); |
| 30 | extern void register_sn_procfs(void); | 31 | extern void register_sn_procfs(void); |
| @@ -36,6 +37,7 @@ extern void sn_legacy_pci_window_fixup(struct pci_controller *, u64, u64); | |||
| 36 | extern void sn_io_acpi_init(void); | 37 | extern void sn_io_acpi_init(void); |
| 37 | extern void sn_io_init(void); | 38 | extern void sn_io_init(void); |
| 38 | 39 | ||
| 40 | |||
| 39 | static struct list_head sn_sysdata_list; | 41 | static struct list_head sn_sysdata_list; |
| 40 | 42 | ||
| 41 | /* sysdata list struct */ | 43 | /* sysdata list struct */ |
| @@ -48,7 +50,7 @@ int sn_ioif_inited; /* SN I/O infrastructure initialized? */ | |||
| 48 | 50 | ||
| 49 | struct sn_pcibus_provider *sn_pci_provider[PCIIO_ASIC_MAX_TYPES]; /* indexed by asic type */ | 51 | struct sn_pcibus_provider *sn_pci_provider[PCIIO_ASIC_MAX_TYPES]; /* indexed by asic type */ |
| 50 | 52 | ||
| 51 | int sn_acpi_base_support() | 53 | int sn_acpi_base_support(void) |
| 52 | { | 54 | { |
| 53 | struct acpi_table_header *header; | 55 | struct acpi_table_header *header; |
| 54 | (void)acpi_get_table_by_index(ACPI_TABLE_INDEX_DSDT, &header); | 56 | (void)acpi_get_table_by_index(ACPI_TABLE_INDEX_DSDT, &header); |
| @@ -293,7 +295,7 @@ void sn_pci_fixup_slot(struct pci_dev *dev) | |||
| 293 | list_add_tail(&pcidev_info->pdi_list, | 295 | list_add_tail(&pcidev_info->pdi_list, |
| 294 | &(SN_PLATFORM_DATA(dev->bus)->pcidev_info)); | 296 | &(SN_PLATFORM_DATA(dev->bus)->pcidev_info)); |
| 295 | 297 | ||
| 296 | if (sn_acpi_base_support()) | 298 | if (SN_ACPI_BASE_SUPPORT()) |
| 297 | sn_acpi_slot_fixup(dev, pcidev_info); | 299 | sn_acpi_slot_fixup(dev, pcidev_info); |
| 298 | else | 300 | else |
| 299 | sn_more_slot_fixup(dev, pcidev_info); | 301 | sn_more_slot_fixup(dev, pcidev_info); |
| @@ -505,7 +507,7 @@ void __devinit | |||
| 505 | sn_pci_fixup_bus(struct pci_bus *bus) | 507 | sn_pci_fixup_bus(struct pci_bus *bus) |
| 506 | { | 508 | { |
| 507 | 509 | ||
| 508 | if (sn_acpi_base_support()) | 510 | if (SN_ACPI_BASE_SUPPORT()) |
| 509 | sn_acpi_bus_fixup(bus); | 511 | sn_acpi_bus_fixup(bus); |
| 510 | else | 512 | else |
| 511 | sn_bus_fixup(bus); | 513 | sn_bus_fixup(bus); |
| @@ -551,9 +553,13 @@ sn_io_early_init(void) | |||
| 551 | register_sn_procfs(); | 553 | register_sn_procfs(); |
| 552 | #endif | 554 | #endif |
| 553 | 555 | ||
| 554 | printk(KERN_INFO "ACPI DSDT OEM Rev 0x%x\n", | 556 | { |
| 555 | acpi_gbl_DSDT->oem_revision); | 557 | struct acpi_table_header *header; |
| 556 | if (sn_acpi_base_support()) | 558 | (void)acpi_get_table_by_index(ACPI_TABLE_INDEX_DSDT, &header); |
| 559 | printk(KERN_INFO "ACPI DSDT OEM Rev 0x%x\n", | ||
| 560 | header->oem_revision); | ||
| 561 | } | ||
| 562 | if (SN_ACPI_BASE_SUPPORT()) | ||
| 557 | sn_io_acpi_init(); | 563 | sn_io_acpi_init(); |
| 558 | else | 564 | else |
| 559 | sn_io_init(); | 565 | sn_io_init(); |
diff --git a/arch/ia64/sn/kernel/iomv.c b/arch/ia64/sn/kernel/iomv.c index b1a47da118b1..ab7e2fd40798 100644 --- a/arch/ia64/sn/kernel/iomv.c +++ b/arch/ia64/sn/kernel/iomv.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <asm/sn/pda.h> | 16 | #include <asm/sn/pda.h> |
| 17 | #include <asm/sn/sn_cpuid.h> | 17 | #include <asm/sn/sn_cpuid.h> |
| 18 | #include <asm/sn/shub_mmr.h> | 18 | #include <asm/sn/shub_mmr.h> |
| 19 | #include <asm/sn/acpi.h> | ||
| 19 | 20 | ||
| 20 | #define IS_LEGACY_VGA_IOPORT(p) \ | 21 | #define IS_LEGACY_VGA_IOPORT(p) \ |
| 21 | (((p) >= 0x3b0 && (p) <= 0x3bb) || ((p) >= 0x3c0 && (p) <= 0x3df)) | 22 | (((p) >= 0x3b0 && (p) <= 0x3bb) || ((p) >= 0x3c0 && (p) <= 0x3df)) |
| @@ -29,8 +30,6 @@ | |||
| 29 | * SN i/o address. Used by sn_in*() and sn_out*(). | 30 | * SN i/o address. Used by sn_in*() and sn_out*(). |
| 30 | */ | 31 | */ |
| 31 | 32 | ||
| 32 | extern int sn_acpi_base_support(); | ||
| 33 | |||
| 34 | void *sn_io_addr(unsigned long port) | 33 | void *sn_io_addr(unsigned long port) |
| 35 | { | 34 | { |
| 36 | if (!IS_RUNNING_ON_SIMULATOR()) { | 35 | if (!IS_RUNNING_ON_SIMULATOR()) { |
| @@ -39,7 +38,7 @@ void *sn_io_addr(unsigned long port) | |||
| 39 | /* On sn2, legacy I/O ports don't point at anything */ | 38 | /* On sn2, legacy I/O ports don't point at anything */ |
| 40 | if (port < (64 * 1024)) | 39 | if (port < (64 * 1024)) |
| 41 | return NULL; | 40 | return NULL; |
| 42 | if (sn_acpi_base_support()) | 41 | if (SN_ACPI_BASE_SUPPORT()) |
| 43 | return (__ia64_mk_io_addr(port)); | 42 | return (__ia64_mk_io_addr(port)); |
| 44 | else | 43 | else |
| 45 | return ((void *)(port | __IA64_UNCACHED_OFFSET)); | 44 | return ((void *)(port | __IA64_UNCACHED_OFFSET)); |
diff --git a/include/asm-ia64/sn/acpi.h b/include/asm-ia64/sn/acpi.h new file mode 100644 index 000000000000..7d6cb3b686e7 --- /dev/null +++ b/include/asm-ia64/sn/acpi.h | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | /* | ||
| 2 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 3 | * License. See the file "COPYING" in the main directory of this archive | ||
| 4 | * for more details. | ||
| 5 | * | ||
| 6 | * Copyright (C) 2006 Silicon Graphics, Inc. All rights reserved. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef _ASM_IA64_SN_ACPI_H | ||
| 10 | #define _ASM_IA64_SN_ACPI_H | ||
| 11 | |||
| 12 | #include "acpi/acglobal.h" | ||
| 13 | |||
| 14 | #define SN_ACPI_BASE_SUPPORT() sn_acpi_base_support() | ||
| 15 | |||
| 16 | extern int sn_acpi_base_support(void); | ||
| 17 | |||
| 18 | #endif /* _ASM_IA64_SN_ACPI_H */ | ||
