Author: stepan
Date: 2009-07-21 23:38:33 +0200 (Tue, 21 Jul 2009)
New Revision: 4453

Modified:
   trunk/coreboot-v2/src/arch/i386/boot/acpi.c
   trunk/coreboot-v2/src/arch/i386/boot/coreboot_table.c
   trunk/coreboot-v2/src/arch/i386/boot/tables.c
   trunk/coreboot-v2/src/arch/i386/include/arch/acpi.h
   trunk/coreboot-v2/src/include/boot/coreboot_tables.h
   trunk/coreboot-v2/src/mainboard/amd/dbm690t/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/amd/pistachio/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/amd/serengeti_cheetah/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/asus/a8v-e_se/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/asus/m2v-mx_se/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/intel/xe7501devkit/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/iwill/dk8_htx/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/technexion/tim8690/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/tyan/s2891/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/tyan/s2892/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/tyan/s2895/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/via/epia-m/acpi_tables.c
   trunk/coreboot-v2/src/mainboard/via/vt8454c/acpi_tables.c
Log:
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 <[email protected]>
Acked-by: Peter Stuge <[email protected]>



Modified: trunk/coreboot-v2/src/arch/i386/boot/acpi.c
===================================================================
--- trunk/coreboot-v2/src/arch/i386/boot/acpi.c 2009-07-21 21:36:41 UTC (rev 
4452)
+++ trunk/coreboot-v2/src/arch/i386/boot/acpi.c 2009-07-21 21:38:33 UTC (rev 
4453)
@@ -41,29 +41,50 @@
  * 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; i<entries_num; i++) {
                if(rsdt->entry[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 @@
        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 @@
        
        /* 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 @@
 /* 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);

Modified: trunk/coreboot-v2/src/arch/i386/boot/coreboot_table.c
===================================================================
--- trunk/coreboot-v2/src/arch/i386/boot/coreboot_table.c       2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/arch/i386/boot/coreboot_table.c       2009-07-21 
21:38:33 UTC (rev 4453)
@@ -479,11 +479,12 @@
                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

Modified: trunk/coreboot-v2/src/arch/i386/boot/tables.c
===================================================================
--- trunk/coreboot-v2/src/arch/i386/boot/tables.c       2009-07-21 21:36:41 UTC 
(rev 4452)
+++ trunk/coreboot-v2/src/arch/i386/boot/tables.c       2009-07-21 21:38:33 UTC 
(rev 4453)
@@ -116,7 +116,12 @@
                        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");
                }

Modified: trunk/coreboot-v2/src/arch/i386/include/arch/acpi.h
===================================================================
--- trunk/coreboot-v2/src/arch/i386/include/arch/acpi.h 2009-07-21 21:36:41 UTC 
(rev 4452)
+++ trunk/coreboot-v2/src/arch/i386/include/arch/acpi.h 2009-07-21 21:38:33 UTC 
(rev 4453)
@@ -1,8 +1,9 @@
 /*
  * coreboot ACPI Support - headers and defines.
  * 
- * written by Stefan Reinauer <[email protected]>
- * (C) 2004 SUSE LINUX AG
+ * written by Stefan Reinauer <[email protected]>
+ * 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 <[email protected]>
@@ -17,41 +18,42 @@
 
 #include <stdint.h>
  
-#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 3.0 table RSDP */
 
-/* ACPI 2.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 @@
        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 @@
        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 @@
        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 @@
 #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 @@
        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,8 +367,9 @@
 /* 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);
 int acpi_create_madt_irqoverride(acpi_madt_irqoverride_t *irqoverride,
@@ -365,14 +396,21 @@
 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);

Modified: trunk/coreboot-v2/src/include/boot/coreboot_tables.h
===================================================================
--- trunk/coreboot-v2/src/include/boot/coreboot_tables.h        2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/include/boot/coreboot_tables.h        2009-07-21 
21:38:33 UTC (rev 4453)
@@ -95,9 +95,13 @@
        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 {

Modified: trunk/coreboot-v2/src/mainboard/amd/dbm690t/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/amd/dbm690t/acpi_tables.c   2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/amd/dbm690t/acpi_tables.c   2009-07-21 
21:38:33 UTC (rev 4453)
@@ -158,7 +158,7 @@
        /* 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 @@
        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 @@
        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 @@
 
        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 @@
                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 @@
        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");

Modified: trunk/coreboot-v2/src/mainboard/amd/pistachio/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/amd/pistachio/acpi_tables.c 2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/amd/pistachio/acpi_tables.c 2009-07-21 
21:38:33 UTC (rev 4453)
@@ -158,7 +158,7 @@
        /* 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 @@
        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 @@
        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 @@
 
        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 @@
                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 @@
        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");

Modified: trunk/coreboot-v2/src/mainboard/amd/serengeti_cheetah/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/amd/serengeti_cheetah/acpi_tables.c 
2009-07-21 21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/amd/serengeti_cheetah/acpi_tables.c 
2009-07-21 21:38:33 UTC (rev 4453)
@@ -221,7 +221,7 @@
        /* 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 @@
        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 @@
         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 @@
 
        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 @@
                 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 @@
        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");

Modified: 
trunk/coreboot-v2/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c   
2009-07-21 21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/amd/serengeti_cheetah_fam10/acpi_tables.c   
2009-07-21 21:38:33 UTC (rev 4453)
@@ -223,7 +223,7 @@
        /* 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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        /* 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 @@
                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 @@
        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");

Modified: trunk/coreboot-v2/src/mainboard/asus/a8v-e_se/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/asus/a8v-e_se/acpi_tables.c 2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/asus/a8v-e_se/acpi_tables.c 2009-07-21 
21:38:33 UTC (rev 4453)
@@ -108,7 +108,7 @@
        /* 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 @@
        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;

Modified: trunk/coreboot-v2/src/mainboard/asus/m2v-mx_se/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/asus/m2v-mx_se/acpi_tables.c        
2009-07-21 21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/asus/m2v-mx_se/acpi_tables.c        
2009-07-21 21:38:33 UTC (rev 4453)
@@ -119,7 +119,7 @@
        /* 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 @@
        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 @@
 
        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;

Modified: trunk/coreboot-v2/src/mainboard/intel/xe7501devkit/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/intel/xe7501devkit/acpi_tables.c    
2009-07-21 21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/intel/xe7501devkit/acpi_tables.c    
2009-07-21 21:38:33 UTC (rev 4453)
@@ -116,7 +116,7 @@
        /* 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 @@
        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;

Modified: trunk/coreboot-v2/src/mainboard/iwill/dk8_htx/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/iwill/dk8_htx/acpi_tables.c 2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/iwill/dk8_htx/acpi_tables.c 2009-07-21 
21:38:33 UTC (rev 4453)
@@ -224,7 +224,7 @@
        /* 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 @@
        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 @@
         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 @@
 
        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 @@
                 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 @@
        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");

Modified: trunk/coreboot-v2/src/mainboard/technexion/tim8690/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/technexion/tim8690/acpi_tables.c    
2009-07-21 21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/technexion/tim8690/acpi_tables.c    
2009-07-21 21:38:33 UTC (rev 4453)
@@ -158,7 +158,7 @@
        /* 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 @@
        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 @@
        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 @@
 
        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 @@
                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 @@
        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");

Modified: trunk/coreboot-v2/src/mainboard/tyan/s2891/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/tyan/s2891/acpi_tables.c    2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/tyan/s2891/acpi_tables.c    2009-07-21 
21:38:33 UTC (rev 4453)
@@ -112,7 +112,7 @@
        /* 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 @@
 
        /* 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 @@
        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 @@
        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;

Modified: trunk/coreboot-v2/src/mainboard/tyan/s2892/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/tyan/s2892/acpi_tables.c    2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/tyan/s2892/acpi_tables.c    2009-07-21 
21:38:33 UTC (rev 4453)
@@ -112,7 +112,7 @@
        /* 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 @@
 
        /* 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 @@
        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 @@
        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;

Modified: trunk/coreboot-v2/src/mainboard/tyan/s2895/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/tyan/s2895/acpi_tables.c    2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/tyan/s2895/acpi_tables.c    2009-07-21 
21:38:33 UTC (rev 4453)
@@ -123,7 +123,7 @@
        /* 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 @@
 
        /* 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 @@
        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 @@
        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;

Modified: trunk/coreboot-v2/src/mainboard/via/epia-m/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/via/epia-m/acpi_tables.c    2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/via/epia-m/acpi_tables.c    2009-07-21 
21:38:33 UTC (rev 4453)
@@ -63,7 +63,7 @@
        /* 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 @@
        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;

Modified: trunk/coreboot-v2/src/mainboard/via/vt8454c/acpi_tables.c
===================================================================
--- trunk/coreboot-v2/src/mainboard/via/vt8454c/acpi_tables.c   2009-07-21 
21:36:41 UTC (rev 4452)
+++ trunk/coreboot-v2/src/mainboard/via/vt8454c/acpi_tables.c   2009-07-21 
21:38:33 UTC (rev 4453)
@@ -146,7 +146,7 @@
        /* 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 @@
        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 @@
        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 @@
        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);


-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to