[coreboot-gerrit] Patch set updated for coreboot: f0a0e9d via/vx800: Migrate to collaborative ACPI

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Sun Sep 21 13:01:11 CEST 2014


Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6944

-gerrit

commit f0a0e9d345afae63a0f1b78012a416d44766ea36
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Tue Sep 2 00:15:02 2014 +0200

    via/vx800: Migrate to collaborative ACPI
    
    Change-Id: I00d0d0e2556d4cd0553a2b3351ace26bf747ff6a
    Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
 src/mainboard/via/epia-m700/Kconfig       |  1 +
 src/mainboard/via/epia-m700/acpi_tables.c | 89 -------------------------------
 src/northbridge/via/vx800/northbridge.c   |  1 +
 3 files changed, 2 insertions(+), 89 deletions(-)

diff --git a/src/mainboard/via/epia-m700/Kconfig b/src/mainboard/via/epia-m700/Kconfig
index c64f8d2..d4dcf46 100644
--- a/src/mainboard/via/epia-m700/Kconfig
+++ b/src/mainboard/via/epia-m700/Kconfig
@@ -11,6 +11,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
 	# select HAVE_ACPI_TABLES
 	select HAVE_OPTION_TABLE
 	select BOARD_ROMSIZE_KB_512
+	select PER_DEVICE_ACPI_TABLES
 
 config MAINBOARD_DIR
 	string
diff --git a/src/mainboard/via/epia-m700/acpi_tables.c b/src/mainboard/via/epia-m700/acpi_tables.c
index 7d95616..c841f2c 100644
--- a/src/mainboard/via/epia-m700/acpi_tables.c
+++ b/src/mainboard/via/epia-m700/acpi_tables.c
@@ -113,92 +113,3 @@ unsigned long acpi_fill_srat(unsigned long current)
 	/* No NUMA, no SRAT. */
 	return current;
 }
-
-#define ALIGN(x,a)              __ALIGN_MASK(x,(typeof(x))(a)-1)
-#define __ALIGN_MASK(x,mask)    (((x)+(mask))&~(mask))
-
-unsigned long write_acpi_tables(unsigned long start)
-{
-	unsigned long current;
-	acpi_rsdp_t *rsdp;
-	acpi_rsdt_t *rsdt;
-	acpi_hpet_t *hpet;
-	acpi_madt_t *madt;
-	acpi_fadt_t *fadt;
-	acpi_facs_t *facs;
-	acpi_header_t *dsdt;
-#if 0
-	acpi_header_t *ssdt;
-#endif
-
-	/* Align ACPI tables to 16 byte. */
-	start = ALIGN(start, 16);
-	current = start;
-
-	printk(BIOS_INFO, "ACPI: Writing ACPI tables at %lx...\n", start);
-
-	/* We need at least an RSDP and an RSDT table. */
-	rsdp = (acpi_rsdp_t *) current;
-	current += sizeof(acpi_rsdp_t);
-	rsdt = (acpi_rsdt_t *) current;
-	current += sizeof(acpi_rsdt_t);
-
-	/* Clear all table memory. */
-	memset((void *)start, 0, current - start);
-
-	acpi_write_rsdp(rsdp, rsdt, NULL);
-	acpi_write_rsdt(rsdt);
-
-	/* We explicitly add these tables later on: */
-	printk(BIOS_DEBUG, "ACPI:     * FACS\n");
-	current = ALIGN(current, 64);
-	facs = (acpi_facs_t *) current;
-	current += sizeof(acpi_facs_t);
-	acpi_create_facs(facs);
-
-	printk(BIOS_DEBUG, "ACPI:     * DSDT\n");
-	dsdt = (acpi_header_t *) current;
-	memcpy(dsdt, &AmlCode_dsdt, sizeof(acpi_header_t));
-	current += dsdt->length;
-	memcpy(dsdt, &AmlCode_dsdt, dsdt->length);
-	dsdt->checksum = 0; /* Don't trust iasl to get this right. */
-	dsdt->checksum = acpi_checksum((u8*)dsdt, dsdt->length);
-	printk(BIOS_DEBUG, "ACPI:     * DSDT @ %p Length %x\n", dsdt, dsdt->length);
-
-	printk(BIOS_DEBUG, "ACPI:     * FADT\n");
-	fadt = (acpi_fadt_t *) current;
-	current += sizeof(acpi_fadt_t);
-
-	acpi_create_fadt(fadt, facs, dsdt);
-	acpi_add_table(rsdp, fadt);
-
-	/* If we want to use HPET timers Linux wants it in MADT. */
-	printk(BIOS_DEBUG, "ACPI:    * MADT\n");
-	madt = (acpi_madt_t *) current;
-	acpi_create_madt(madt);
-	current += madt->header.length;
-	acpi_add_table(rsdp, madt);
-
-	/* NO MCFG in VX855, no PCI-E. */
-
-	printk(BIOS_DEBUG, "ACPI:    * HPET\n");
-	hpet = (acpi_hpet_t *) current;
-	acpi_create_hpet(hpet);
-	current += hpet->header.length;
-	acpi_add_table(rsdp, hpet);
-
-#if 0
-	printk(BIOS_DEBUG, "ACPI:     * SSDT\n");
-	ssdt = (acpi_header_t *) current;
-	memcpy(ssdt, &AmlCode_ssdt, sizeof(acpi_header_t));
-	current += ssdt->length;
-	memcpy(ssdt, &AmlCode_ssdt, ssdt->length);
-	ssdt->checksum = 0; /* Don't trust iasl to get this right. */
-	ssdt->checksum = acpi_checksum((u8*)ssdt, ssdt->length);
-	acpi_add_table(rsdp, ssdt);
-	printk(BIOS_DEBUG, "ACPI:     * SSDT @ %08x Length %x\n", ssdt, ssdt->length);
-#endif
-
-	printk(BIOS_INFO, "ACPI: done.\n");
-	return current;
-}
diff --git a/src/northbridge/via/vx800/northbridge.c b/src/northbridge/via/vx800/northbridge.c
index a87e65e..8305e5f 100644
--- a/src/northbridge/via/vx800/northbridge.c
+++ b/src/northbridge/via/vx800/northbridge.c
@@ -136,6 +136,7 @@ if register with invalid value we set frame buffer size to 32M for default, but
 static struct device_operations pci_domain_ops = {
 	.read_resources = pci_domain_read_resources,
 	.set_resources = pci_domain_set_resources,
+	.write_acpi_tables = acpi_write_hpet,
 	.enable_resources = NULL,
 	.init = NULL,
 	.scan_bus = pci_domain_scan_bus,



More information about the coreboot-gerrit mailing list