Kyösti Mälkki has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/74348 )
Change subject: ACPI: Add COMMON_ACPI_MADT_IOAPIC and CUSTOM_ACPI_MADT ......................................................................
ACPI: Add COMMON_ACPI_MADT_IOAPIC and CUSTOM_ACPI_MADT
Add Kconfig COMMON_ACPI_MADT_IOAPIC to replace platforms' implementations of adding IOAPIC and IRQ override entries for ACPI MADT tables.
Platforms that have a more complex MADT may continue to add custom entries using CUSTOM_ACPI_MADT.
Change-Id: I0b77769f89cc319ad228eb37bc341e2150b8a892 Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- M src/acpi/Kconfig M src/acpi/acpi.c M src/mainboard/asus/p2b/Kconfig M src/soc/intel/quark/Kconfig 4 files changed, 47 insertions(+), 6 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/48/74348/1
diff --git a/src/acpi/Kconfig b/src/acpi/Kconfig index 5af8b22..3b02070 100644 --- a/src/acpi/Kconfig +++ b/src/acpi/Kconfig @@ -31,13 +31,22 @@ Set to indicate <soc/nvs.h> exists for the platform with a definition for global_nvs.
+config ACPI_CUSTOM_MADT + bool + default n if ACPI_NO_CUSTOM_MADT + default y + help + Selected by platforms that need to expose custom MADT entries. + +config ACPI_NO_CUSTOM_MADT + bool + default y if ACPI_COMMON_MADT_LAPIC && ACPI_COMMON_MADT_IOAPIC + config ACPI_COMMON_MADT_LAPIC bool
-config ACPI_NO_MADT +config ACPI_COMMON_MADT_IOAPIC bool - help - Selected by platforms that don't expose a useful MADT.
config ACPI_NO_PCAT_8259 bool diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index cf96aee..9107bbf 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -257,6 +257,18 @@ return irqoverride->length; }
+static unsigned long acpi_create_madt_ioapic_gsi0_default(unsigned long current) +{ + current += acpi_create_madt_ioapic_from_hw((acpi_madt_ioapic_t *)current, IO_APIC_ADDR); + + current += acpi_create_madt_irqoverride((void *)current, MP_BUS_ISA, 0, 2, + MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH); + + current += acpi_create_madt_sci_override((void *)current); + + return current; +} + static int acpi_create_madt_lapic_nmi(acpi_madt_lapic_nmi_t *lapic_nmi, u8 cpu, u16 flags, u8 lint) { @@ -334,7 +346,10 @@ if (CONFIG(ACPI_COMMON_MADT_LAPIC)) current = acpi_create_madt_lapics_with_nmis(current);
- if (!CONFIG(ACPI_NO_MADT)) + if (CONFIG(ACPI_COMMON_MADT_IOAPIC)) + current = acpi_create_madt_ioapic_gsi0_default(current); + + if (CONFIG(ACPI_CUSTOM_MADT)) current = acpi_fill_madt(current);
/* (Re)calculate length and checksum. */ diff --git a/src/mainboard/asus/p2b/Kconfig b/src/mainboard/asus/p2b/Kconfig index 986cfde..a645bcc 100644 --- a/src/mainboard/asus/p2b/Kconfig +++ b/src/mainboard/asus/p2b/Kconfig @@ -9,7 +9,7 @@
config BOARD_SPECIFIC_OPTIONS def_bool y - select ACPI_NO_MADT + select ACPI_NO_CUSTOM_MADT select CPU_INTEL_SLOT_1 select NORTHBRIDGE_INTEL_I440BX select SOUTHBRIDGE_INTEL_I82371EB diff --git a/src/soc/intel/quark/Kconfig b/src/soc/intel/quark/Kconfig index 58f01da..631755c 100644 --- a/src/soc/intel/quark/Kconfig +++ b/src/soc/intel/quark/Kconfig @@ -9,7 +9,7 @@
config CPU_SPECIFIC_OPTIONS def_bool y - select ACPI_NO_MADT + select ACPI_NO_CUSTOM_MADT select ARCH_X86 select NO_ECAM_MMCONF_SUPPORT select NO_SMM