From b657a3c9b726334aac89f1af16495eab3ebefc6b Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Tue, 21 Jul 2009 21:38:33 +0000 Subject: [PATCH] This fixes a couple of issues with older Linux kernels (that expect an XSDT as soon as there's an ACPI 2.0 or later table) * add XSDT support * add more table types This patch will break at least the kontron (and possibly some new boards I missed) Signed-off-by: Stefan Reinauer Acked-by: Peter Stuge git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4453 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/arch/i386/boot/acpi.c | 73 +++++++++-- src/arch/i386/boot/coreboot_table.c | 3 +- src/arch/i386/boot/tables.c | 7 +- src/arch/i386/include/arch/acpi.h | 118 ++++++++++++------ src/include/boot/coreboot_tables.h | 10 +- src/mainboard/amd/dbm690t/acpi_tables.c | 16 +-- src/mainboard/amd/pistachio/acpi_tables.c | 16 +-- .../amd/serengeti_cheetah/acpi_tables.c | 16 +-- .../amd/serengeti_cheetah_fam10/acpi_tables.c | 16 +-- src/mainboard/asus/a8v-e_se/acpi_tables.c | 10 +- src/mainboard/asus/m2v-mx_se/acpi_tables.c | 16 +-- .../intel/xe7501devkit/acpi_tables.c | 4 +- src/mainboard/iwill/dk8_htx/acpi_tables.c | 16 +-- .../technexion/tim8690/acpi_tables.c | 16 +-- src/mainboard/tyan/s2891/acpi_tables.c | 14 +-- src/mainboard/tyan/s2892/acpi_tables.c | 14 +-- src/mainboard/tyan/s2895/acpi_tables.c | 14 +-- src/mainboard/via/epia-m/acpi_tables.c | 4 +- src/mainboard/via/vt8454c/acpi_tables.c | 10 +- 19 files changed, 244 insertions(+), 149 deletions(-) diff --git a/src/arch/i386/boot/acpi.c b/src/arch/i386/boot/acpi.c index c0c57190ad..b05a2c5dae 100644 --- a/src/arch/i386/boot/acpi.c +++ b/src/arch/i386/boot/acpi.c @@ -41,29 +41,50 @@ u8 acpi_checksum(u8 *table, u32 length) * add an acpi table to rsdt structure, and recalculate checksum */ -void acpi_add_table(acpi_rsdt_t *rsdt, void *table) +void acpi_add_table(acpi_rsdp_t *rsdp, void *table) { int i; + acpi_rsdt_t *rsdt; + acpi_xsdt_t *xsdt = NULL; + + rsdt = (acpi_rsdt_t *)rsdp->rsdt_address; + if (rsdp->xsdt_address) { + xsdt = (acpi_xsdt_t *)((u32)rsdp->xsdt_address); + } int entries_num = ARRAY_SIZE(rsdt->entry); for (i=0; ientry[i]==0) { rsdt->entry[i]=(u32)table; - /* fix length to stop kernel winging about invalid entries */ + /* fix length to stop kernel whining about invalid entries */ rsdt->header.length = sizeof(acpi_header_t) + (sizeof(u32) * (i+1)); /* fix checksum */ /* hope this won't get optimized away */ rsdt->header.checksum=0; rsdt->header.checksum=acpi_checksum((u8 *)rsdt, rsdt->header.length); + + /* And now the same thing for the XSDT. We use the same + * index as we want the XSDT and RSDT to always be in + * sync in coreboot. + */ + if (xsdt) { + xsdt->entry[i]=(u64)(u32)table; + xsdt->header.length = sizeof(acpi_header_t) + + (sizeof(u64) * (i+1)); + xsdt->header.checksum=0; + xsdt->header.checksum=acpi_checksum((u8 *)xsdt, + xsdt->header.length); + } - printk_debug("ACPI: added table %d/%d Length now %d\n",i+1, entries_num, rsdt->header.length); + printk_debug("ACPI: added table %d/%d Length now %d\n", + i+1, entries_num, rsdt->header.length); return; } } - printk_warning("ACPI: could not add ACPI table to RSDT. failed.\n"); + printk_err("ACPI: Error: Could not add ACPI table, too many tables.\n"); } int acpi_create_mcfg_mmconfig(acpi_mcfg_mmconfig_t *mmconfig, u32 base, u16 seg_nr, u8 start, u8 end) @@ -216,7 +237,7 @@ void acpi_create_ssdt_generator(acpi_header_t *ssdt, char *oem_table_id) memcpy(&ssdt->oem_id, OEM_ID, 6); memcpy(&ssdt->oem_table_id, oem_table_id, 8); ssdt->oem_revision = 42; - memcpy(&ssdt->asl_compiler_id, "GENAML", 4); + memcpy(&ssdt->asl_compiler_id, "CORE", 4); ssdt->asl_compiler_revision = 42; ssdt->length = sizeof(acpi_header_t); @@ -376,16 +397,47 @@ void acpi_write_rsdt(acpi_rsdt_t *rsdt) /* fix checksum */ - header->checksum = acpi_checksum((void *)rsdt, sizeof(acpi_rsdt_t)); + header->checksum = acpi_checksum((void *)rsdt, sizeof(acpi_rsdt_t)); } -void acpi_write_rsdp(acpi_rsdp_t *rsdp, acpi_rsdt_t *rsdt) +void acpi_write_xsdt(acpi_xsdt_t *xsdt) +{ + acpi_header_t *header=&(xsdt->header); + + /* fill out header fields */ + memcpy(header->signature, XSDT_NAME, 4); + memcpy(header->oem_id, OEM_ID, 6); + memcpy(header->oem_table_id, RSDT_TABLE, 8); + memcpy(header->asl_compiler_id, ASLC, 4); + + header->length = sizeof(acpi_xsdt_t); + header->revision = 1; + + /* fill out entries */ + + // entries are filled in later, we come with an empty set. + + /* fix checksum */ + + header->checksum = acpi_checksum((void *)xsdt, sizeof(acpi_xsdt_t)); +} + +void acpi_write_rsdp(acpi_rsdp_t *rsdp, acpi_rsdt_t *rsdt, acpi_xsdt_t *xsdt) { memcpy(rsdp->signature, RSDP_SIG, 8); memcpy(rsdp->oem_id, OEM_ID, 6); rsdp->length = sizeof(acpi_rsdp_t); rsdp->rsdt_address = (u32)rsdt; - rsdp->revision = 2; + /* Some OSes expect an XSDT to be present for RSD PTR + * revisions >= 2. If we don't have an ACPI XSDT, force + * ACPI 1.0 (and thus RSD PTR revision 0) + */ + if (xsdt == NULL) { + rsdp->revision = 0; + } else { + rsdp->xsdt_address = (u64)(u32)xsdt; + rsdp->revision = 2; + } rsdp->checksum = acpi_checksum((void *)rsdp, 20); rsdp->ext_checksum = acpi_checksum((void *)rsdp, sizeof(acpi_rsdp_t)); } @@ -415,11 +467,6 @@ void suspend_resume(void) /* this is to be filled by SB code - startup value what was found */ u8 acpi_slp_type = 0; -int acpi_get_sleep_type(void) -{ - return acpi_slp_type; -} - int acpi_is_wakeup(void) { return (acpi_slp_type == 3); diff --git a/src/arch/i386/boot/coreboot_table.c b/src/arch/i386/boot/coreboot_table.c index 659ab0f90e..6c7693c9f4 100644 --- a/src/arch/i386/boot/coreboot_table.c +++ b/src/arch/i386/boot/coreboot_table.c @@ -479,11 +479,12 @@ unsigned long write_coreboot_table( low_table_start, low_table_end - low_table_start); /* Record the pirq table, acpi tables, and maybe the mptable */ - lb_add_memory_range(mem, LB_MEM_TABLE, + lb_add_memory_range(mem, LB_MEM_TABLE, rom_table_start, rom_table_end-rom_table_start); #if CONFIG_HAVE_HIGH_TABLES == 1 printk_debug("Adding high table area\n"); + // should this be LB_MEM_ACPI? lb_add_memory_range(mem, LB_MEM_TABLE, high_tables_base, high_tables_size); #endif diff --git a/src/arch/i386/boot/tables.c b/src/arch/i386/boot/tables.c index 9991415eda..17338ef558 100644 --- a/src/arch/i386/boot/tables.c +++ b/src/arch/i386/boot/tables.c @@ -116,7 +116,12 @@ struct lb_memory *write_tables(void) acpi_start++; } if (acpi_start != high_table_end) { - acpi_write_rsdp((acpi_rsdp_t *)rom_table_end, ((acpi_rsdp_t *)acpi_start)->rsdt_address); + acpi_rsdp_t *low_rsdp = (acpi_rsdp_t *)rom_table_end, + *high_rsdp = (acpi_rsdp_t *)acpi_start; + + acpi_write_rsdp(low_rsdp, + (acpi_rsdt_t *)(high_rsdp->rsdt_address), + (acpi_xsdt_t *)(high_rsdp->xsdt_address)); } else { printk_err("ERROR: Didn't find RSDP in high table.\n"); } diff --git a/src/arch/i386/include/arch/acpi.h b/src/arch/i386/include/arch/acpi.h index 5b5797fcd1..1b3f8d208f 100644 --- a/src/arch/i386/include/arch/acpi.h +++ b/src/arch/i386/include/arch/acpi.h @@ -1,8 +1,9 @@ /* * coreboot ACPI Support - headers and defines. * - * written by Stefan Reinauer - * (C) 2004 SUSE LINUX AG + * written by Stefan Reinauer + * Copyright (C) 2004 SUSE LINUX AG + * Copyright (C) 2008-2009 coresystems GmbH * * The ACPI table structs are based on the Linux kernel sources. * ACPI FADT & FACS added by Nick Barker @@ -17,41 +18,42 @@ #include -#if CONFIG_HAVE_ACPI_RESUME -/* 0 = S0, 1 = S1 ...*/ -extern u8 acpi_slp_type; -#endif +#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */ +#define RSDP_NAME "RSDP" -#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */ -#define RSDP_NAME "RSDP" +#define RSDT_NAME "RSDT" +#define HPET_NAME "HPET" +#define MADT_NAME "APIC" +#define MCFG_NAME "MCFG" +#define SRAT_NAME "SRAT" +#define SLIT_NAME "SLIT" +#define SSDT_NAME "SSDT" +#define FACS_NAME "FACS" +#define FADT_NAME "FACP" +#define XSDT_NAME "XSDT" -#define RSDT_NAME "RSDT" -#define HPET_NAME "HPET" -#define MADT_NAME "APIC" -#define MCFG_NAME "MCFG" -#define SRAT_NAME "SRAT" -#define SLIT_NAME "SLIT" -#define SSDT_NAME "SSDT" -#define FACS_NAME "FACS" -#define FADT_NAME "FACP" +// Misnomer, the NAME above is the 4 byte signature, this (TABLE) is the +// OEM_TABLE_ID. +// +#define ACPI_TABLE_CREATOR "COREBOOT" +#define RSDT_TABLE ACPI_TABLE_CREATOR +#define HPET_TABLE ACPI_TABLE_CREATOR +#define MCFG_TABLE ACPI_TABLE_CREATOR +#define MADT_TABLE ACPI_TABLE_CREATOR +#define SRAT_TABLE ACPI_TABLE_CREATOR +#define SLIT_TABLE ACPI_TABLE_CREATOR +#define XSDT_TABLE ACPI_TABLE_CREATOR -#define RSDT_TABLE "RSDT " -#define HPET_TABLE "AMD64 " -#define MCFG_TABLE "MCFG " -#define MADT_TABLE "MADT " -#define SRAT_TABLE "SRAT " -#define SLIT_TABLE "SLIT " +#define OEM_ID "CORE " +#define ASLC "CORE" -#define OEM_ID "CORE " -#define ASLC "CORE" - -/* ACPI 2.0 table RSDP */ +/* ACPI 3.0 table RSDP */ typedef struct acpi_rsdp { char signature[8]; /* RSDP signature "RSD PTR" */ u8 checksum; /* checksum of the first 20 bytes */ char oem_id[6]; /* OEM ID, "LXBIOS" */ - u8 revision; /* 0 for APCI 1.0, 2 for ACPI 2.0 */ + u8 revision; /* 0 for APCI 1.0, 2 for ACPI 2.0/3.0 */ u32 rsdt_address; /* physical address of RSDT */ u32 length; /* total length of RSDP (including extended part) */ u64 xsdt_address; /* physical address of XSDT */ @@ -85,16 +87,23 @@ typedef struct acpi_table_header /* ACPI common table header */ u32 asl_compiler_revision; /* ASL compiler revision number */ } __attribute__ ((packed)) acpi_header_t; +/* FIXME: This is very fragile: + * MCONFIG, HPET, FADT, SRAT, SLIT, MADT(APIC), SSDT, SSDTX, and SSDT for CPU + * pstate + */ + +#define MAX_ACPI_TABLES (7 + CONFIG_ACPI_SSDTX_NUM + CONFIG_MAX_CPUS) + /* RSDT */ typedef struct acpi_rsdt { struct acpi_table_header header; - u32 entry[7+CONFIG_ACPI_SSDTX_NUM+CONFIG_MAX_CPUS]; /* MCONFIG, HPET, FADT, SRAT, SLIT, MADT(APIC), SSDT, SSDTX, and SSDT for CPU pstate*/ + u32 entry[MAX_ACPI_TABLES]; } __attribute__ ((packed)) acpi_rsdt_t; /* XSDT */ typedef struct acpi_xsdt { struct acpi_table_header header; - u64 entry[6+CONFIG_ACPI_SSDTX_NUM]; + u64 entry[MAX_ACPI_TABLES]; } __attribute__ ((packed)) acpi_xsdt_t; /* HPET TIMERS */ @@ -107,7 +116,7 @@ typedef struct acpi_hpet { u8 attributes; } __attribute__ ((packed)) acpi_hpet_t; -/* MCFG taken from include/linux/acpi.h */ +/* MCFG */ typedef struct acpi_mcfg { struct acpi_table_header header; u8 reserved[8]; @@ -279,6 +288,9 @@ typedef struct acpi_fadt { struct acpi_gen_regaddr x_gpe1_blk; } __attribute__ ((packed)) acpi_fadt_t; +// +// FADT Feature Flags +// #define ACPI_FADT_WBINVD (1 << 0) #define ACPI_FADT_WBINVD_FLUSH (1 << 1) #define ACPI_FADT_C1_SUPPORTED (1 << 2) @@ -300,14 +312,27 @@ typedef struct acpi_fadt { #define ACPI_FADT_APIC_CLUSTER (1 << 18) #define ACPI_FADT_APIC_PHYSICAL (1 << 19) +// +// FADT Boot Architecture Flags +// +#define ACPI_FADT_LEGACY_DEVICES (1 << 0) +#define ACPI_FADT_8042 (1 << 1) +#define ACPI_FADT_VGA_NOT_PRESENT (1 << 2) +#define ACPI_FADT_MSI_NOT_SUPPORTED (1 << 3) +#define ACPI_FADT_NO_PCIE_ASPM_CONTROL (1 << 4) + +// +// FADT Preferred Power Management Profile +// enum acpi_preferred_pm_profiles { - PM_UNSPECIFIED = 0, - PM_DESKTOP = 1, - PM_MOBILE = 2, - PM_WORKSTATION = 3, - PM_ENTERPRISE = 4, - PM_SOHO_SERVER = 5, - PM_APPLIANCE_PC = 6 + PM_UNSPECIFIED = 0, + PM_DESKTOP = 1, + PM_MOBILE = 2, + PM_WORKSTATION = 3, + PM_ENTERPRISE_SERVER = 4, + PM_SOHO_SERVER = 5, + PM_APPLIANCE_PC = 6, + PM_PERFORMANCE_SERVER = 7 }; /* FACS */ @@ -324,6 +349,11 @@ typedef struct acpi_facs { u8 resv[31]; } __attribute__ ((packed)) acpi_facs_t; +// +// FACS Flags +// +#define ACPI_FACS_S4BIOS_F (1 << 0) + /* These are implemented by the target port */ unsigned long write_acpi_tables(unsigned long addr); unsigned long acpi_fill_madt(unsigned long current); @@ -337,7 +367,8 @@ void acpi_create_fadt(acpi_fadt_t *fadt,acpi_facs_t *facs,void *dsdt); /* These can be used by the target port */ u8 acpi_checksum(u8 *table, u32 length); -void acpi_add_table(acpi_rsdt_t *rsdt, void *table); +void acpi_add_table(acpi_rsdp_t *rsdp, void *table); + int acpi_create_madt_lapic(acpi_madt_lapic_t *lapic, u8 cpu, u8 apic); int acpi_create_madt_ioapic(acpi_madt_ioapic_t *ioapic, u8 id, u32 addr,u32 gsi_base); @@ -365,14 +396,21 @@ void acpi_create_mcfg(acpi_mcfg_t *mcfg); void acpi_create_facs(acpi_facs_t *facs); void acpi_write_rsdt(acpi_rsdt_t *rsdt); -void acpi_write_rsdp(acpi_rsdp_t *rsdp, acpi_rsdt_t *rsdt); +void acpi_write_xsdt(acpi_xsdt_t *xsdt); +void acpi_write_rsdp(acpi_rsdp_t *rsdp, acpi_rsdt_t *rsdt, acpi_xsdt_t *xsdt); #if CONFIG_HAVE_ACPI_RESUME +/* 0 = S0, 1 = S1 ...*/ +extern u8 acpi_slp_type; + void suspend_resume(void); void *acpi_find_wakeup_vector(void); void *acpi_get_wakeup_rsdp(void); void acpi_jmp_to_realm_wakeup(u32 linear_addr); void acpi_jump_to_wakeup(void *wakeup_addr); + +int acpi_get_sleep_type(void); + #endif unsigned long acpi_add_ssdt_pstates(acpi_rsdt_t *rsdt, unsigned long current); diff --git a/src/include/boot/coreboot_tables.h b/src/include/boot/coreboot_tables.h index 0385db9093..2ba61266c6 100644 --- a/src/include/boot/coreboot_tables.h +++ b/src/include/boot/coreboot_tables.h @@ -95,9 +95,13 @@ struct lb_memory_range { struct lb_uint64 start; struct lb_uint64 size; uint32_t type; -#define LB_MEM_RAM 1 /* Memory anyone can use */ -#define LB_MEM_RESERVED 2 /* Don't use this memory region */ -#define LB_MEM_TABLE 16 /* Ram configuration tables are kept in */ +#define LB_MEM_RAM 1 /* Memory anyone can use */ +#define LB_MEM_RESERVED 2 /* Don't use this memory region */ +#define LB_MEM_ACPI 3 /* ACPI Tables */ +#define LB_MEM_NVS 4 /* ACPI NVS Memory */ +#define LB_MEM_UNUSABLE 5 /* Unusable address space */ +#define LB_MEM_VENDOR_RSVD 6 /* Vendor Reserved */ +#define LB_MEM_TABLE 16 /* Ram configuration tables are kept in */ }; struct lb_memory { diff --git a/src/mainboard/amd/dbm690t/acpi_tables.c b/src/mainboard/amd/dbm690t/acpi_tables.c index 3829a7a082..c61f97b98e 100644 --- a/src/mainboard/amd/dbm690t/acpi_tables.c +++ b/src/mainboard/amd/dbm690t/acpi_tables.c @@ -158,7 +158,7 @@ unsigned long write_acpi_tables(unsigned long start) /* clear all table memory */ memset((void *)start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* @@ -169,13 +169,13 @@ unsigned long write_acpi_tables(unsigned long start) hpet = (acpi_hpet_t *) current; current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt, hpet); + acpi_add_table(rsdp, hpet); printk_debug("ACPI: * MADT\n"); madt = (acpi_madt_t *) current; acpi_create_madt(madt); current += madt->header.length; - acpi_add_table(rsdt, madt); + acpi_add_table(rsdp, madt); #if 0 /* SRAT */ @@ -183,14 +183,14 @@ unsigned long write_acpi_tables(unsigned long start) srat = (acpi_srat_t *) current; acpi_create_srat(srat); current += srat->header.length; - acpi_add_table(rsdt, srat); + acpi_add_table(rsdp, srat); /* SLIT */ printk_debug("ACPI: * SLIT\n"); slit = (acpi_slit_t *) current; acpi_create_slit(slit); current += slit->header.length; - acpi_add_table(rsdt, slit); + acpi_add_table(rsdp, slit); #endif /* SSDT */ @@ -199,7 +199,7 @@ unsigned long write_acpi_tables(unsigned long start) acpi_create_ssdt_generator(ssdt, "DYNADATA"); current += ssdt->length; - acpi_add_table(rsdt, ssdt); + acpi_add_table(rsdp, ssdt); #if CONFIG_ACPI_SSDTX_NUM >= 1 @@ -238,7 +238,7 @@ unsigned long write_acpi_tables(unsigned long start) ssdtx->checksum = 0; ssdtx->checksum = acpi_checksum((u8 *)ssdtx, ssdtx->length); - acpi_add_table(rsdt, ssdtx); + acpi_add_table(rsdp, ssdtx); } #endif @@ -261,7 +261,7 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt, facs, dsdt); - acpi_add_table(rsdt, fadt); + acpi_add_table(rsdp, fadt); #if DUMP_ACPI_TABLES == 1 printk_debug("rsdp\n"); diff --git a/src/mainboard/amd/pistachio/acpi_tables.c b/src/mainboard/amd/pistachio/acpi_tables.c index e985d4552a..897246cae9 100644 --- a/src/mainboard/amd/pistachio/acpi_tables.c +++ b/src/mainboard/amd/pistachio/acpi_tables.c @@ -158,7 +158,7 @@ unsigned long write_acpi_tables(unsigned long start) /* clear all table memory */ memset((void *)start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* @@ -169,13 +169,13 @@ unsigned long write_acpi_tables(unsigned long start) hpet = (acpi_hpet_t *) current; current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt, hpet); + acpi_add_table(rsdp, hpet); printk_debug("ACPI: * MADT\n"); madt = (acpi_madt_t *) current; acpi_create_madt(madt); current += madt->header.length; - acpi_add_table(rsdt, madt); + acpi_add_table(rsdp, madt); #if 0 /* SRAT */ @@ -183,14 +183,14 @@ unsigned long write_acpi_tables(unsigned long start) srat = (acpi_srat_t *) current; acpi_create_srat(srat); current += srat->header.length; - acpi_add_table(rsdt, srat); + acpi_add_table(rsdp, srat); /* SLIT */ printk_debug("ACPI: * SLIT\n"); slit = (acpi_slit_t *) current; acpi_create_slit(slit); current += slit->header.length; - acpi_add_table(rsdt, slit); + acpi_add_table(rsdp, slit); #endif /* SSDT */ @@ -199,7 +199,7 @@ unsigned long write_acpi_tables(unsigned long start) acpi_create_ssdt_generator(ssdt, "DYNADATA"); current += ssdt->length; - acpi_add_table(rsdt, ssdt); + acpi_add_table(rsdp, ssdt); #if CONFIG_ACPI_SSDTX_NUM >= 1 @@ -238,7 +238,7 @@ unsigned long write_acpi_tables(unsigned long start) ssdtx->checksum = 0; ssdtx->checksum = acpi_checksum((u8 *)ssdtx, ssdtx->length); - acpi_add_table(rsdt, ssdtx); + acpi_add_table(rsdp, ssdtx); } #endif @@ -262,7 +262,7 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt, facs, dsdt); - acpi_add_table(rsdt, fadt); + acpi_add_table(rsdp, fadt); #if DUMP_ACPI_TABLES == 1 printk_debug("rsdp\n"); diff --git a/src/mainboard/amd/serengeti_cheetah/acpi_tables.c b/src/mainboard/amd/serengeti_cheetah/acpi_tables.c index 04e52364de..6bde4d5f43 100644 --- a/src/mainboard/amd/serengeti_cheetah/acpi_tables.c +++ b/src/mainboard/amd/serengeti_cheetah/acpi_tables.c @@ -221,7 +221,7 @@ unsigned long write_acpi_tables(unsigned long start) /* clear all table memory */ memset((void *)start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* @@ -231,14 +231,14 @@ unsigned long write_acpi_tables(unsigned long start) hpet = (acpi_hpet_t *) current; current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt,hpet); + acpi_add_table(rsdp,hpet); /* If we want to use HPET Timers Linux wants an MADT */ printk_debug("ACPI: * MADT\n"); madt = (acpi_madt_t *) current; acpi_create_madt(madt); current+=madt->header.length; - acpi_add_table(rsdt,madt); + acpi_add_table(rsdp,madt); /* SRAT */ @@ -246,14 +246,14 @@ unsigned long write_acpi_tables(unsigned long start) srat = (acpi_srat_t *) current; acpi_create_srat(srat); current+=srat->header.length; - acpi_add_table(rsdt,srat); + acpi_add_table(rsdp,srat); /* SLIT */ printk_debug("ACPI: * SLIT\n"); slit = (acpi_slit_t *) current; acpi_create_slit(slit); current+=slit->header.length; - acpi_add_table(rsdt,slit); + acpi_add_table(rsdp,slit); /* SSDT */ printk_debug("ACPI: * SSDT\n"); @@ -261,7 +261,7 @@ unsigned long write_acpi_tables(unsigned long start) acpi_create_ssdt_generator(ssdt, "DYNADATA"); current += ssdt->length; - acpi_add_table(rsdt, ssdt); + acpi_add_table(rsdp, ssdt); #if CONFIG_ACPI_SSDTX_NUM >= 1 @@ -297,7 +297,7 @@ unsigned long write_acpi_tables(unsigned long start) update_ssdtx((void *)ssdtx, i); ssdtx->checksum = 0; ssdtx->checksum = acpi_checksum((unsigned char *)ssdtx,ssdtx->length); - acpi_add_table(rsdt,ssdtx); + acpi_add_table(rsdp,ssdtx); } #endif @@ -321,7 +321,7 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt,facs,dsdt); - acpi_add_table(rsdt,fadt); + acpi_add_table(rsdp,fadt); #if DUMP_ACPI_TABLES == 1 printk_debug("rsdp\n"); diff --git a/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c b/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c index 8239a115bf..b8782e1b42 100644 --- a/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c +++ b/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c @@ -223,7 +223,7 @@ unsigned long write_acpi_tables(unsigned long start) /* clear all table memory */ memset((void *)start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* @@ -234,7 +234,7 @@ unsigned long write_acpi_tables(unsigned long start) hpet = (acpi_hpet_t *) current; current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt,hpet); + acpi_add_table(rsdp,hpet); /* If we want to use HPET Timers Linux wants an MADT */ current = ( current + 0x07) & -0x08; @@ -242,7 +242,7 @@ unsigned long write_acpi_tables(unsigned long start) madt = (acpi_madt_t *) current; acpi_create_madt(madt); current+=madt->header.length; - acpi_add_table(rsdt,madt); + acpi_add_table(rsdp,madt); /* SRAT */ current = ( current + 0x07) & -0x08; @@ -250,7 +250,7 @@ unsigned long write_acpi_tables(unsigned long start) srat = (acpi_srat_t *) current; acpi_create_srat(srat); current+=srat->header.length; - acpi_add_table(rsdt,srat); + acpi_add_table(rsdp,srat); /* SLIT */ current = ( current + 0x07) & -0x08; @@ -258,7 +258,7 @@ unsigned long write_acpi_tables(unsigned long start) slit = (acpi_slit_t *) current; acpi_create_slit(slit); current+=slit->header.length; - acpi_add_table(rsdt,slit); + acpi_add_table(rsdp,slit); /* SSDT */ current = ( current + 0x0f) & -0x10; @@ -271,7 +271,7 @@ unsigned long write_acpi_tables(unsigned long start) /* recalculate checksum */ ssdt->checksum = 0; ssdt->checksum = acpi_checksum((unsigned char *)ssdt,ssdt->length); - acpi_add_table(rsdt,ssdt); + acpi_add_table(rsdp,ssdt); printk_debug("ACPI: * SSDT for PState at %lx\n", current); current = acpi_add_ssdt_pstates(rsdt, current); @@ -312,7 +312,7 @@ unsigned long write_acpi_tables(unsigned long start) update_ssdtx((void *)ssdtx, i); ssdtx->checksum = 0; ssdtx->checksum = acpi_checksum((unsigned char *)ssdtx,ssdtx->length); - acpi_add_table(rsdt,ssdtx); + acpi_add_table(rsdp,ssdtx); } #endif @@ -339,7 +339,7 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt,facs,dsdt); - acpi_add_table(rsdt,fadt); + acpi_add_table(rsdp,fadt); #if DUMP_ACPI_TABLES == 1 printk_debug("rsdp\n"); diff --git a/src/mainboard/asus/a8v-e_se/acpi_tables.c b/src/mainboard/asus/a8v-e_se/acpi_tables.c index a204c90976..f2af5bdfa7 100644 --- a/src/mainboard/asus/a8v-e_se/acpi_tables.c +++ b/src/mainboard/asus/a8v-e_se/acpi_tables.c @@ -108,7 +108,7 @@ unsigned long write_acpi_tables(unsigned long start) /* Clear all table memory. */ memset((void *) start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* We explicitly add these tables later on: */ @@ -131,25 +131,25 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt, facs, dsdt); - acpi_add_table(rsdt, fadt); + acpi_add_table(rsdp, fadt); /* If we want to use HPET timers Linux wants it in MADT. */ printk_debug("ACPI: * MADT\n"); madt = (acpi_madt_t *) current; acpi_create_madt(madt); current += madt->header.length; - acpi_add_table(rsdt, madt); + acpi_add_table(rsdp, madt); printk_debug("ACPI: * MCFG\n"); mcfg = (acpi_mcfg_t *) current; acpi_create_mcfg(mcfg); current += mcfg->header.length; - acpi_add_table(rsdt, mcfg); + acpi_add_table(rsdp, mcfg); printk_debug("ACPI: * SRAT\n"); srat = (acpi_srat_t *) current; acpi_create_srat(srat); current += srat->header.length; - acpi_add_table(rsdt, srat); + acpi_add_table(rsdp, srat); printk_info("ACPI: done.\n"); return current; diff --git a/src/mainboard/asus/m2v-mx_se/acpi_tables.c b/src/mainboard/asus/m2v-mx_se/acpi_tables.c index 5c9c1db0ad..606321791e 100644 --- a/src/mainboard/asus/m2v-mx_se/acpi_tables.c +++ b/src/mainboard/asus/m2v-mx_se/acpi_tables.c @@ -119,7 +119,7 @@ unsigned long write_acpi_tables(unsigned long start) /* Clear all table memory. */ memset((void *) start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* We explicitly add these tables later on: */ @@ -146,39 +146,39 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt, facs, dsdt); - acpi_add_table(rsdt, fadt); + acpi_add_table(rsdp, fadt); printk_debug("ACPI: * HPET\n"); hpet = (acpi_hpet_t *) current; current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt, hpet); + acpi_add_table(rsdp, hpet); /* If we want to use HPET timers Linux wants an MADT. */ printk_debug("ACPI: * MADT\n"); madt = (acpi_madt_t *) current; acpi_create_madt(madt); current += madt->header.length; - acpi_add_table(rsdt, madt); + acpi_add_table(rsdp, madt); printk_debug("ACPI: * MCFG\n"); mcfg = (acpi_mcfg_t *) current; acpi_create_mcfg(mcfg); current += mcfg->header.length; - acpi_add_table(rsdt, mcfg); + acpi_add_table(rsdp, mcfg); printk_debug("ACPI: * SRAT\n"); srat = (acpi_srat_t *) current; acpi_create_srat(srat); current += srat->header.length; - acpi_add_table(rsdt, srat); + acpi_add_table(rsdp, srat); /* SLIT */ printk_debug("ACPI: * SLIT\n"); slit = (acpi_slit_t *) current; acpi_create_slit(slit); current+=slit->header.length; - acpi_add_table(rsdt,slit); + acpi_add_table(rsdp,slit); /* SSDT */ printk_debug("ACPI: * SSDT\n"); @@ -186,7 +186,7 @@ unsigned long write_acpi_tables(unsigned long start) acpi_create_ssdt_generator(ssdt, "DYNADATA"); current += ssdt->length; - acpi_add_table(rsdt, ssdt); + acpi_add_table(rsdp, ssdt); printk_info("ACPI: done.\n"); return current; diff --git a/src/mainboard/intel/xe7501devkit/acpi_tables.c b/src/mainboard/intel/xe7501devkit/acpi_tables.c index ddfddbea0c..3f30fcc6f3 100644 --- a/src/mainboard/intel/xe7501devkit/acpi_tables.c +++ b/src/mainboard/intel/xe7501devkit/acpi_tables.c @@ -116,7 +116,7 @@ unsigned long write_acpi_tables(unsigned long start) /* clear all table memory */ memset((void *)start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* @@ -128,7 +128,7 @@ unsigned long write_acpi_tables(unsigned long start) madt = (acpi_madt_t *) current; acpi_create_madt(madt); current+=madt->header.length; - acpi_add_table(rsdt,madt); + acpi_add_table(rsdp,madt); printk_info("ACPI: done.\n"); return current; diff --git a/src/mainboard/iwill/dk8_htx/acpi_tables.c b/src/mainboard/iwill/dk8_htx/acpi_tables.c index 53822bd9d6..12e0494939 100644 --- a/src/mainboard/iwill/dk8_htx/acpi_tables.c +++ b/src/mainboard/iwill/dk8_htx/acpi_tables.c @@ -224,7 +224,7 @@ unsigned long write_acpi_tables(unsigned long start) /* clear all table memory */ memset((void *)start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* @@ -234,14 +234,14 @@ unsigned long write_acpi_tables(unsigned long start) hpet = (acpi_hpet_t *) current; current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt,hpet); + acpi_add_table(rsdp,hpet); /* If we want to use HPET Timers Linux wants an MADT */ printk_debug("ACPI: * MADT\n"); madt = (acpi_madt_t *) current; acpi_create_madt(madt); current+=madt->header.length; - acpi_add_table(rsdt,madt); + acpi_add_table(rsdp,madt); /* SRAT */ @@ -249,14 +249,14 @@ unsigned long write_acpi_tables(unsigned long start) srat = (acpi_srat_t *) current; acpi_create_srat(srat); current+=srat->header.length; - acpi_add_table(rsdt,srat); + acpi_add_table(rsdp,srat); /* SLIT */ printk_debug("ACPI: * SLIT\n"); slit = (acpi_slit_t *) current; acpi_create_slit(slit); current+=slit->header.length; - acpi_add_table(rsdt,slit); + acpi_add_table(rsdp,slit); /* SSDT */ printk_debug("ACPI: * SSDT\n"); @@ -264,7 +264,7 @@ unsigned long write_acpi_tables(unsigned long start) acpi_create_ssdt_generator(ssdt, "DYNADATA"); current += ssdt->length; - acpi_add_table(rsdt, ssdt); + acpi_add_table(rsdp, ssdt); #if CONFIG_ACPI_SSDTX_NUM >= 1 @@ -302,7 +302,7 @@ unsigned long write_acpi_tables(unsigned long start) update_ssdtx((void *)ssdtx, i); ssdtx->checksum = 0; ssdtx->checksum = acpi_checksum((unsigned char *)ssdtx,ssdtx->length); - acpi_add_table(rsdt,ssdtx); + acpi_add_table(rsdp,ssdtx); } #endif @@ -326,7 +326,7 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt,facs,dsdt); - acpi_add_table(rsdt,fadt); + acpi_add_table(rsdp,fadt); #if DUMP_ACPI_TABLES == 1 printk_debug("rsdp\n"); diff --git a/src/mainboard/technexion/tim8690/acpi_tables.c b/src/mainboard/technexion/tim8690/acpi_tables.c index 3829a7a082..c61f97b98e 100644 --- a/src/mainboard/technexion/tim8690/acpi_tables.c +++ b/src/mainboard/technexion/tim8690/acpi_tables.c @@ -158,7 +158,7 @@ unsigned long write_acpi_tables(unsigned long start) /* clear all table memory */ memset((void *)start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* @@ -169,13 +169,13 @@ unsigned long write_acpi_tables(unsigned long start) hpet = (acpi_hpet_t *) current; current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt, hpet); + acpi_add_table(rsdp, hpet); printk_debug("ACPI: * MADT\n"); madt = (acpi_madt_t *) current; acpi_create_madt(madt); current += madt->header.length; - acpi_add_table(rsdt, madt); + acpi_add_table(rsdp, madt); #if 0 /* SRAT */ @@ -183,14 +183,14 @@ unsigned long write_acpi_tables(unsigned long start) srat = (acpi_srat_t *) current; acpi_create_srat(srat); current += srat->header.length; - acpi_add_table(rsdt, srat); + acpi_add_table(rsdp, srat); /* SLIT */ printk_debug("ACPI: * SLIT\n"); slit = (acpi_slit_t *) current; acpi_create_slit(slit); current += slit->header.length; - acpi_add_table(rsdt, slit); + acpi_add_table(rsdp, slit); #endif /* SSDT */ @@ -199,7 +199,7 @@ unsigned long write_acpi_tables(unsigned long start) acpi_create_ssdt_generator(ssdt, "DYNADATA"); current += ssdt->length; - acpi_add_table(rsdt, ssdt); + acpi_add_table(rsdp, ssdt); #if CONFIG_ACPI_SSDTX_NUM >= 1 @@ -238,7 +238,7 @@ unsigned long write_acpi_tables(unsigned long start) ssdtx->checksum = 0; ssdtx->checksum = acpi_checksum((u8 *)ssdtx, ssdtx->length); - acpi_add_table(rsdt, ssdtx); + acpi_add_table(rsdp, ssdtx); } #endif @@ -261,7 +261,7 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt, facs, dsdt); - acpi_add_table(rsdt, fadt); + acpi_add_table(rsdp, fadt); #if DUMP_ACPI_TABLES == 1 printk_debug("rsdp\n"); diff --git a/src/mainboard/tyan/s2891/acpi_tables.c b/src/mainboard/tyan/s2891/acpi_tables.c index cc3b5c2364..0f4f76af20 100644 --- a/src/mainboard/tyan/s2891/acpi_tables.c +++ b/src/mainboard/tyan/s2891/acpi_tables.c @@ -112,7 +112,7 @@ unsigned long write_acpi_tables(unsigned long start) /* Clear all table memory. */ memset((void *) start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); current = ALIGN(current, 64); @@ -136,28 +136,28 @@ unsigned long write_acpi_tables(unsigned long start) /* Add FADT now that we have facs and dsdt. */ acpi_create_fadt(fadt, facs, dsdt); - acpi_add_table(rsdt, fadt); + acpi_add_table(rsdp, fadt); current = ALIGN(current, 16); hpet = (acpi_hpet_t *) current; printk_debug("ACPI: * HPET @ %p\n", hpet); current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt, hpet); + acpi_add_table(rsdp, hpet); current = ALIGN(current, 16); madt = (acpi_madt_t *) current; printk_debug("ACPI: * APIC/MADT @ %p\n", madt); acpi_create_madt(madt); current += madt->header.length; - acpi_add_table(rsdt, madt); + acpi_add_table(rsdp, madt); current = ALIGN(current, 16); srat = (acpi_srat_t *) current; printk_debug("ACPI: * SRAT @ %p\n", srat); acpi_create_srat(srat); current += srat->header.length; - acpi_add_table(rsdt, srat); + acpi_add_table(rsdp, srat); /* SLIT */ current = ALIGN(current, 16); @@ -165,7 +165,7 @@ unsigned long write_acpi_tables(unsigned long start) printk_debug("ACPI: * SLIT @ %p\n", slit); acpi_create_slit(slit); current+=slit->header.length; - acpi_add_table(rsdt,slit); + acpi_add_table(rsdp,slit); /* SSDT */ current = ALIGN(current, 16); @@ -173,7 +173,7 @@ unsigned long write_acpi_tables(unsigned long start) printk_debug("ACPI: * SSDT @ %p\n", ssdt); acpi_create_ssdt_generator(ssdt, "DYNADATA"); current += ssdt->length; - acpi_add_table(rsdt, ssdt); + acpi_add_table(rsdp, ssdt); printk_info("ACPI: done %p.\n", (void *)current); return current; diff --git a/src/mainboard/tyan/s2892/acpi_tables.c b/src/mainboard/tyan/s2892/acpi_tables.c index cc3b5c2364..0f4f76af20 100644 --- a/src/mainboard/tyan/s2892/acpi_tables.c +++ b/src/mainboard/tyan/s2892/acpi_tables.c @@ -112,7 +112,7 @@ unsigned long write_acpi_tables(unsigned long start) /* Clear all table memory. */ memset((void *) start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); current = ALIGN(current, 64); @@ -136,28 +136,28 @@ unsigned long write_acpi_tables(unsigned long start) /* Add FADT now that we have facs and dsdt. */ acpi_create_fadt(fadt, facs, dsdt); - acpi_add_table(rsdt, fadt); + acpi_add_table(rsdp, fadt); current = ALIGN(current, 16); hpet = (acpi_hpet_t *) current; printk_debug("ACPI: * HPET @ %p\n", hpet); current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt, hpet); + acpi_add_table(rsdp, hpet); current = ALIGN(current, 16); madt = (acpi_madt_t *) current; printk_debug("ACPI: * APIC/MADT @ %p\n", madt); acpi_create_madt(madt); current += madt->header.length; - acpi_add_table(rsdt, madt); + acpi_add_table(rsdp, madt); current = ALIGN(current, 16); srat = (acpi_srat_t *) current; printk_debug("ACPI: * SRAT @ %p\n", srat); acpi_create_srat(srat); current += srat->header.length; - acpi_add_table(rsdt, srat); + acpi_add_table(rsdp, srat); /* SLIT */ current = ALIGN(current, 16); @@ -165,7 +165,7 @@ unsigned long write_acpi_tables(unsigned long start) printk_debug("ACPI: * SLIT @ %p\n", slit); acpi_create_slit(slit); current+=slit->header.length; - acpi_add_table(rsdt,slit); + acpi_add_table(rsdp,slit); /* SSDT */ current = ALIGN(current, 16); @@ -173,7 +173,7 @@ unsigned long write_acpi_tables(unsigned long start) printk_debug("ACPI: * SSDT @ %p\n", ssdt); acpi_create_ssdt_generator(ssdt, "DYNADATA"); current += ssdt->length; - acpi_add_table(rsdt, ssdt); + acpi_add_table(rsdp, ssdt); printk_info("ACPI: done %p.\n", (void *)current); return current; diff --git a/src/mainboard/tyan/s2895/acpi_tables.c b/src/mainboard/tyan/s2895/acpi_tables.c index 5072326455..99f7b9657c 100644 --- a/src/mainboard/tyan/s2895/acpi_tables.c +++ b/src/mainboard/tyan/s2895/acpi_tables.c @@ -123,7 +123,7 @@ unsigned long write_acpi_tables(unsigned long start) /* Clear all table memory. */ memset((void *) start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); current = ALIGN(current, 64); @@ -147,28 +147,28 @@ unsigned long write_acpi_tables(unsigned long start) /* Add FADT now that we have facs and dsdt. */ acpi_create_fadt(fadt, facs, dsdt); - acpi_add_table(rsdt, fadt); + acpi_add_table(rsdp, fadt); current = ALIGN(current, 16); hpet = (acpi_hpet_t *) current; printk_debug("ACPI: * HPET @ %p\n", hpet); current += sizeof(acpi_hpet_t); acpi_create_hpet(hpet); - acpi_add_table(rsdt, hpet); + acpi_add_table(rsdp, hpet); current = ALIGN(current, 16); madt = (acpi_madt_t *) current; printk_debug("ACPI: * APIC/MADT @ %p\n", madt); acpi_create_madt(madt); current += madt->header.length; - acpi_add_table(rsdt, madt); + acpi_add_table(rsdp, madt); current = ALIGN(current, 16); srat = (acpi_srat_t *) current; printk_debug("ACPI: * SRAT @ %p\n", srat); acpi_create_srat(srat); current += srat->header.length; - acpi_add_table(rsdt, srat); + acpi_add_table(rsdp, srat); /* SLIT */ current = ALIGN(current, 16); @@ -176,7 +176,7 @@ unsigned long write_acpi_tables(unsigned long start) printk_debug("ACPI: * SLIT @ %p\n", slit); acpi_create_slit(slit); current+=slit->header.length; - acpi_add_table(rsdt,slit); + acpi_add_table(rsdp,slit); /* SSDT */ current = ALIGN(current, 16); @@ -184,7 +184,7 @@ unsigned long write_acpi_tables(unsigned long start) printk_debug("ACPI: * SSDT @ %p\n", ssdt); acpi_create_ssdt_generator(ssdt, "DYNADATA"); current += ssdt->length; - acpi_add_table(rsdt, ssdt); + acpi_add_table(rsdp, ssdt); printk_info("ACPI: done %p.\n", (void *)current); return current; diff --git a/src/mainboard/via/epia-m/acpi_tables.c b/src/mainboard/via/epia-m/acpi_tables.c index 9ca946de59..3f58d66824 100644 --- a/src/mainboard/via/epia-m/acpi_tables.c +++ b/src/mainboard/via/epia-m/acpi_tables.c @@ -63,7 +63,7 @@ unsigned long write_acpi_tables(unsigned long start) /* clear all table memory */ memset((void *)start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* @@ -86,7 +86,7 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt,facs,dsdt); - acpi_add_table(rsdt,fadt); + acpi_add_table(rsdp,fadt); printk_info("ACPI: done.\n"); return current; diff --git a/src/mainboard/via/vt8454c/acpi_tables.c b/src/mainboard/via/vt8454c/acpi_tables.c index edf8d7e207..42dfef2da7 100644 --- a/src/mainboard/via/vt8454c/acpi_tables.c +++ b/src/mainboard/via/vt8454c/acpi_tables.c @@ -146,7 +146,7 @@ unsigned long write_acpi_tables(unsigned long start) /* clear all table memory */ memset((void *) start, 0, current - start); - acpi_write_rsdp(rsdp, rsdt); + acpi_write_rsdp(rsdp, rsdt, NULL); acpi_write_rsdt(rsdt); /* @@ -158,7 +158,7 @@ unsigned long write_acpi_tables(unsigned long start) hpet = (acpi_hpet_t *) current; current += sizeof(acpi_hpet_t); acpi_create_via_hpet(hpet); - acpi_add_table(rsdt, hpet); + acpi_add_table(rsdp, hpet); /* If we want to use HPET Timers Linux wants an MADT */ printk_debug("ACPI: * MADT\n"); @@ -166,13 +166,13 @@ unsigned long write_acpi_tables(unsigned long start) madt = (acpi_madt_t *) current; acpi_create_madt(madt); current += madt->header.length; - acpi_add_table(rsdt, madt); + acpi_add_table(rsdp, madt); printk_debug("ACPI: * MCFG\n"); mcfg = (acpi_mcfg_t *) current; acpi_create_mcfg(mcfg); current += mcfg->header.length; - acpi_add_table(rsdt, mcfg); + acpi_add_table(rsdp, mcfg); printk_debug("ACPI: * FACS\n"); facs = (acpi_facs_t *) current; @@ -195,7 +195,7 @@ unsigned long write_acpi_tables(unsigned long start) current += sizeof(acpi_fadt_t); acpi_create_fadt(fadt, facs, dsdt); - acpi_add_table(rsdt, fadt); + acpi_add_table(rsdp, fadt); printk_debug("ACPI: * DMI (Linux workaround)\n"); memcpy((void *)0xfff80, dmi_table, DMI_TABLE_SIZE);