diff options
author | Stefan Reinauer <stepan@coresystems.de> | 2009-07-21 21:38:33 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2009-07-21 21:38:33 +0000 |
commit | b657a3c9b726334aac89f1af16495eab3ebefc6b (patch) | |
tree | 428e1de09fdb4d29d783f5ea875c41d13effa893 /src/mainboard/tyan | |
parent | 4d933dd2d686879e0c27839d3f9046e348580da8 (diff) |
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 <stepan@coresystems.de>
Acked-by: Peter Stuge <peter@stuge.se>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4453 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/mainboard/tyan')
-rw-r--r-- | src/mainboard/tyan/s2891/acpi_tables.c | 14 | ||||
-rw-r--r-- | src/mainboard/tyan/s2892/acpi_tables.c | 14 | ||||
-rw-r--r-- | src/mainboard/tyan/s2895/acpi_tables.c | 14 |
3 files changed, 21 insertions, 21 deletions
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; |