diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/acpi/acpi.c | 25 | ||||
-rw-r--r-- | src/arch/x86/acpi.c | 18 |
2 files changed, 18 insertions, 25 deletions
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index 1330f127bc..a2e9fdb8d8 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -27,11 +27,6 @@ #include <types.h> #include <version.h> -#if ENV_X86 -#include <arch/ioapic.h> -#include <arch/smp/mpspec.h> -#endif - static acpi_rsdp_t *valid_rsdp(acpi_rsdp_t *rsdp); u8 acpi_checksum(u8 *table, u32 length) @@ -139,24 +134,6 @@ static int acpi_create_mcfg_mmconfig(acpi_mcfg_mmconfig_t *mmconfig, u32 base, return sizeof(acpi_mcfg_mmconfig_t); } -static u16 acpi_sci_int(void) -{ -#if ENV_X86 - u8 gsi, irq, flags; - - ioapic_get_sci_pin(&gsi, &irq, &flags); - - /* ACPI Release 6.5, 5.2.9 and 5.2.15.5. */ - if (!CONFIG(ACPI_HAVE_PCAT_8259)) - return gsi; - - assert(irq < 16); - return irq; -#else - return 0; -#endif -} - static void acpi_create_madt(acpi_header_t *header, void *unused) { acpi_madt_t *madt = (acpi_madt_t *)header; @@ -1103,8 +1080,6 @@ static void acpi_create_fadt(acpi_header_t *header, void *arg1) fadt->preferred_pm_profile = acpi_get_preferred_pm_profile(); - fadt->sci_int = acpi_sci_int(); - arch_fill_fadt(fadt); acpi_fill_fadt(fadt); diff --git a/src/arch/x86/acpi.c b/src/arch/x86/acpi.c index ffa3463259..018cdf5cc3 100644 --- a/src/arch/x86/acpi.c +++ b/src/arch/x86/acpi.c @@ -1,12 +1,30 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include <acpi/acpi.h> +#include <arch/ioapic.h> #include <cf9_reset.h> #include <cpu/x86/smm.h> #include <pc80/mc146818rtc.h> +static u16 acpi_sci_int(void) +{ + u8 gsi, irq, flags; + + ioapic_get_sci_pin(&gsi, &irq, &flags); + + /* ACPI Release 6.5, 5.2.9 and 5.2.15.5. */ + if (!CONFIG(ACPI_HAVE_PCAT_8259)) + return gsi; + + assert(irq < 16); + return irq; +} + + void arch_fill_fadt(acpi_fadt_t *fadt) { + fadt->sci_int = acpi_sci_int(); + if (CONFIG(HAVE_CF9_RESET)) { fadt->reset_reg.space_id = ACPI_ADDRESS_SPACE_IO; fadt->reset_reg.bit_width = 8; |