ACPICA: minimal patch to integrate new tables into Linux
Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:

committed by
Len Brown

parent
a4bbb810de
commit
ad71860a17
@@ -76,7 +76,7 @@ const char *acpi_get_sysname(void)
|
||||
{
|
||||
#ifdef CONFIG_IA64_GENERIC
|
||||
unsigned long rsdp_phys;
|
||||
struct acpi20_table_rsdp *rsdp;
|
||||
struct acpi_table_rsdp *rsdp;
|
||||
struct acpi_table_xsdt *xsdt;
|
||||
struct acpi_table_header *hdr;
|
||||
|
||||
@@ -87,8 +87,8 @@ const char *acpi_get_sysname(void)
|
||||
return "dig";
|
||||
}
|
||||
|
||||
rsdp = (struct acpi20_table_rsdp *)__va(rsdp_phys);
|
||||
if (strncmp(rsdp->signature, RSDP_SIG, sizeof(RSDP_SIG) - 1)) {
|
||||
rsdp = (struct acpi_table_rsdp *)__va(rsdp_phys);
|
||||
if (strncmp(rsdp->signature, ACPI_SIG_RSDP, sizeof(ACPI_SIG_RSDP) - 1)) {
|
||||
printk(KERN_ERR
|
||||
"ACPI 2.0 RSDP signature incorrect, default to \"dig\"\n");
|
||||
return "dig";
|
||||
@@ -96,7 +96,7 @@ const char *acpi_get_sysname(void)
|
||||
|
||||
xsdt = (struct acpi_table_xsdt *)__va(rsdp->xsdt_address);
|
||||
hdr = &xsdt->header;
|
||||
if (strncmp(hdr->signature, XSDT_SIG, sizeof(XSDT_SIG) - 1)) {
|
||||
if (strncmp(hdr->signature, ACPI_SIG_XSDT, sizeof(ACPI_SIG_XSDT) - 1)) {
|
||||
printk(KERN_ERR
|
||||
"ACPI 2.0 XSDT signature incorrect, default to \"dig\"\n");
|
||||
return "dig";
|
||||
|
@@ -25,7 +25,6 @@
|
||||
#include "xtalk/xwidgetdev.h"
|
||||
#include <linux/acpi.h>
|
||||
#include <asm/sn/sn2/sn_hwperf.h>
|
||||
#include <asm/sn/acpi.h>
|
||||
|
||||
extern void sn_init_cpei_timer(void);
|
||||
extern void register_sn_procfs(void);
|
||||
@@ -37,7 +36,6 @@ extern void sn_legacy_pci_window_fixup(struct pci_controller *, u64, u64);
|
||||
extern void sn_io_acpi_init(void);
|
||||
extern void sn_io_init(void);
|
||||
|
||||
|
||||
static struct list_head sn_sysdata_list;
|
||||
|
||||
/* sysdata list struct */
|
||||
@@ -50,6 +48,15 @@ int sn_ioif_inited; /* SN I/O infrastructure initialized? */
|
||||
|
||||
struct sn_pcibus_provider *sn_pci_provider[PCIIO_ASIC_MAX_TYPES]; /* indexed by asic type */
|
||||
|
||||
int sn_acpi_base_support()
|
||||
{
|
||||
struct acpi_table_header *header;
|
||||
(void)acpi_get_table_by_index(ACPI_TABLE_INDEX_DSDT, &header);
|
||||
if (header && header->oem_revision >= 0x20101)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Hooks and struct for unsupported pci providers
|
||||
*/
|
||||
@@ -286,7 +293,7 @@ void sn_pci_fixup_slot(struct pci_dev *dev)
|
||||
list_add_tail(&pcidev_info->pdi_list,
|
||||
&(SN_PLATFORM_DATA(dev->bus)->pcidev_info));
|
||||
|
||||
if (SN_ACPI_BASE_SUPPORT())
|
||||
if (sn_acpi_base_support())
|
||||
sn_acpi_slot_fixup(dev, pcidev_info);
|
||||
else
|
||||
sn_more_slot_fixup(dev, pcidev_info);
|
||||
@@ -498,7 +505,7 @@ void __devinit
|
||||
sn_pci_fixup_bus(struct pci_bus *bus)
|
||||
{
|
||||
|
||||
if (SN_ACPI_BASE_SUPPORT())
|
||||
if (sn_acpi_base_support())
|
||||
sn_acpi_bus_fixup(bus);
|
||||
else
|
||||
sn_bus_fixup(bus);
|
||||
@@ -546,7 +553,7 @@ sn_io_early_init(void)
|
||||
|
||||
printk(KERN_INFO "ACPI DSDT OEM Rev 0x%x\n",
|
||||
acpi_gbl_DSDT->oem_revision);
|
||||
if (SN_ACPI_BASE_SUPPORT())
|
||||
if (sn_acpi_base_support())
|
||||
sn_io_acpi_init();
|
||||
else
|
||||
sn_io_init();
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
@@ -16,7 +16,6 @@
|
||||
#include <asm/sn/pda.h>
|
||||
#include <asm/sn/sn_cpuid.h>
|
||||
#include <asm/sn/shub_mmr.h>
|
||||
#include <asm/sn/acpi.h>
|
||||
|
||||
#define IS_LEGACY_VGA_IOPORT(p) \
|
||||
(((p) >= 0x3b0 && (p) <= 0x3bb) || ((p) >= 0x3c0 && (p) <= 0x3df))
|
||||
@@ -26,9 +25,12 @@
|
||||
* @port: port to convert
|
||||
*
|
||||
* Legacy in/out instructions are converted to ld/st instructions
|
||||
* on IA64. This routine will convert a port number into a valid
|
||||
* on IA64. This routine will convert a port number into a valid
|
||||
* SN i/o address. Used by sn_in*() and sn_out*().
|
||||
*/
|
||||
|
||||
extern int sn_acpi_base_support();
|
||||
|
||||
void *sn_io_addr(unsigned long port)
|
||||
{
|
||||
if (!IS_RUNNING_ON_SIMULATOR()) {
|
||||
@@ -37,7 +39,7 @@ void *sn_io_addr(unsigned long port)
|
||||
/* On sn2, legacy I/O ports don't point at anything */
|
||||
if (port < (64 * 1024))
|
||||
return NULL;
|
||||
if (SN_ACPI_BASE_SUPPORT())
|
||||
if (sn_acpi_base_support())
|
||||
return (__ia64_mk_io_addr(port));
|
||||
else
|
||||
return ((void *)(port | __IA64_UNCACHED_OFFSET));
|
||||
|
Reference in New Issue
Block a user