[coreboot-gerrit] Patch set updated for coreboot: soc/apollolake/acpi: Fill in ACPI MADT table

Lijian Zhao (lijian.zhao@intel.com) gerrit at coreboot.org
Fri Apr 1 07:10:26 CEST 2016


Lijian Zhao (lijian.zhao at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13373

-gerrit

commit 1c3fc665e594bfd7595b24546ca021d94dddc3dd
Author: Lance Zhao <lijian.zhao at intel.com>
Date:   Mon Nov 16 18:33:21 2015 -0800

    soc/apollolake/acpi: Fill in ACPI MADT table
    
    ACPI MADT tables required to describe the multiprocess interrupt routing.
    Apollolake SOC also have the interrupt override table like other x86
    silicons.
    
    Change-Id: I85976e227963c950aad4476d68581b96e1090559
    Signed-off-by: Lance Zhao <lijian.zhao at intel.com>
---
 src/soc/intel/apollolake/acpi.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/soc/intel/apollolake/acpi.c b/src/soc/intel/apollolake/acpi.c
index 5fd2b74..a12bb3c 100644
--- a/src/soc/intel/apollolake/acpi.c
+++ b/src/soc/intel/apollolake/acpi.c
@@ -11,6 +11,8 @@
  */
 
 #include <arch/acpi.h>
+#include <arch/ioapic.h>
+#include <arch/smp/mpspec.h>
 #include <cpu/x86/smm.h>
 #include <soc/acpi.h>
 #include <soc/iomap.h>
@@ -21,11 +23,31 @@ unsigned long acpi_fill_mcfg(unsigned long current)
 	return current;
 }
 
-unsigned long acpi_fill_madt(unsigned long current)
+static unsigned long acpi_madt_irq_overrides(unsigned long current)
 {
+	uint16_t flags = MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW;;
+
+	/* INT_SRC_OVR */
+	current += acpi_create_madt_irqoverride((void *)current, 0, 0, 2, 0);
+
+	/* SCI */
+	current += acpi_create_madt_irqoverride((void *)current, 0, 9, 9, flags);
+
 	return current;
 }
 
+unsigned long acpi_fill_madt(unsigned long current)
+{
+	/* Local APICs */
+	current = acpi_create_madt_lapics(current);
+
+	/* IOAPIC */
+	current += acpi_create_madt_ioapic((void *) current,
+					     2, IO_APIC_ADDR, 0);
+
+	return acpi_madt_irq_overrides(current);
+}
+
 static int acpi_sci_irq(void)
 {
 	int sci_irq = 9;



More information about the coreboot-gerrit mailing list