We define IO_APIC_ADDR in <arch/ioapic.h>, let's use it.
[coreboot.git] / src / mainboard / intel / xe7501devkit / acpi_tables.c
index 7d1261c57fc563c48702d38a00241c3f883ed058..3695bb4dc437823ebaff30394ca0df6fde81f838 100644 (file)
@@ -8,16 +8,29 @@
 #include <console/console.h>
 #include <string.h>
 #include <arch/acpi.h>
+#include <arch/ioapic.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
 #include <assert.h>
 #include "bus.h"
 #include "ioapic.h"
 
+unsigned long acpi_fill_mcfg(unsigned long current)
+{
+       /* Just a dummy */
+       return current;
+}
+
+unsigned long acpi_fill_slit(unsigned long current)
+{
+       // Not implemented
+       return current;
+}
+
 unsigned long acpi_fill_srat(unsigned long current)
 {
        // Not implemented
-       return 0;
+       return current;
 }
 
 unsigned long acpi_fill_madt(unsigned long current)
@@ -26,21 +39,21 @@ unsigned long acpi_fill_madt(unsigned long current)
        device_t dev = 0;
     struct resource* res = NULL;
 
+
        // SJM: Hard-code CPU LAPIC entries for now
        //              Use SourcePoint numbering of processors
        current += acpi_create_madt_lapic((acpi_madt_lapic_t *)current, 0, 6);
        current += acpi_create_madt_lapic((acpi_madt_lapic_t *)current, 1, 7);
        current += acpi_create_madt_lapic((acpi_madt_lapic_t *)current, 2, 0);
        current += acpi_create_madt_lapic((acpi_madt_lapic_t *)current, 3, 1);
-       
+
 
        // Southbridge IOAPIC
-       current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, IOAPIC_ICH3, 0xfec00000, irq_start);
+       current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *)current, IOAPIC_ICH3, IO_APIC_ADDR, irq_start);
        irq_start += INTEL_IOAPIC_NUM_INTERRUPTS;
 
        // P64H2#2 Bus A IOAPIC
-       dev = dev_find_slot(PCI_BUS_E7501_HI_B, PCI_DEVFN(30, 0));      
+       dev = dev_find_slot(PCI_BUS_E7501_HI_B, PCI_DEVFN(30, 0));
        if (!dev)
                BUG();          // Config.lb error?
        res = find_resource(dev, PCI_BASE_ADDRESS_0);
@@ -48,7 +61,7 @@ unsigned long acpi_fill_madt(unsigned long current)
        irq_start += INTEL_IOAPIC_NUM_INTERRUPTS;
 
        // P64H2#2 Bus B IOAPIC
-       dev = dev_find_slot(PCI_BUS_E7501_HI_B, PCI_DEVFN(28, 0));      
+       dev = dev_find_slot(PCI_BUS_E7501_HI_B, PCI_DEVFN(28, 0));
        if (!dev)
                BUG();          // Config.lb error?
        res = find_resource(dev, PCI_BASE_ADDRESS_0);
@@ -57,7 +70,7 @@ unsigned long acpi_fill_madt(unsigned long current)
 
 
        // P64H2#1 Bus A IOAPIC
-       dev = dev_find_slot(PCI_BUS_E7501_HI_D, PCI_DEVFN(30, 0));      
+       dev = dev_find_slot(PCI_BUS_E7501_HI_D, PCI_DEVFN(30, 0));
        if (!dev)
                BUG();          // Config.lb error?
        res = find_resource(dev, PCI_BASE_ADDRESS_0);
@@ -65,7 +78,7 @@ unsigned long acpi_fill_madt(unsigned long current)
        irq_start += INTEL_IOAPIC_NUM_INTERRUPTS;
 
        // P64H2#1 Bus B IOAPIC
-       dev = dev_find_slot(PCI_BUS_E7501_HI_D, PCI_DEVFN(28, 0));      
+       dev = dev_find_slot(PCI_BUS_E7501_HI_D, PCI_DEVFN(28, 0));
        if (!dev)
                BUG();          // Config.lb error?
        res = find_resource(dev, PCI_BASE_ADDRESS_0);
@@ -92,8 +105,8 @@ unsigned long write_acpi_tables(unsigned long start)
        /* Align ACPI tables to 16byte */
        start   = ( start + 0x0f ) & -0x10;
        current = start;
-       
-       printk_info("ACPI: Writing ACPI tables at %lx...\n", 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;
@@ -103,22 +116,22 @@ 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:
         */
        /* QNX wants an MADT */
-       printk_debug("ACPI:    * MADT\n");
+       printk(BIOS_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_info("ACPI: done.\n");
+       printk(BIOS_INFO, "ACPI: done.\n");
        return current;
 }