From 6b446b991b00c44902b70d86c75b23a8f93d510b Mon Sep 17 00:00:00 2001 From: Raul E Rangel Date: Fri, 19 Nov 2021 11:38:35 -0700 Subject: [PATCH] acpi,Makefile: Add preload_acpi_dsdt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will allow us to preload the dsdt.aml file. BUG=b:179699789 TEST=Build guybrush | 80 - write tables | 1.564 | 1.08 Δ( -0.48, -0.03%) | | 85 - finalize chips | 15.483 | 13.543 Δ( -1.94, -0.14%) | Signed-off-by: Raul E Rangel Change-Id: Ibf69ecb947811a2eec861018e3ba5f858155f1c3 Reviewed-on: https://review.coreboot.org/c/coreboot/+/59504 Tested-by: build bot (Jenkins) Reviewed-by: Tim Wawrzynczak --- Makefile.inc | 3 +++ src/acpi/acpi.c | 11 +++++++++++ src/include/acpi/acpi.h | 1 + 3 files changed, 15 insertions(+) diff --git a/Makefile.inc b/Makefile.inc index 1b1e973d7f..090505e776 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -280,6 +280,9 @@ define asl_template $(CONFIG_CBFS_PREFIX)/$(1).aml-file = $(obj)/$(1).aml $(CONFIG_CBFS_PREFIX)/$(1).aml-type = raw $(CONFIG_CBFS_PREFIX)/$(1).aml-compression = none +ifeq ($(CONFIG_SOC_AMD_COMMON_BLOCK_LPC_SPI_DMA),y) +$(CONFIG_CBFS_PREFIX)/$(1).aml-align = 64 +endif cbfs-files-$(if $(2),$(2),y) += $(CONFIG_CBFS_PREFIX)/$(1).aml -include $(obj)/$(1).d $(obj)/$(1).aml: $(src)/mainboard/$(MAINBOARDDIR)/$(1).asl $(obj)/config.h diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index 78c3fd3b90..3bf57c6ff2 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -1577,6 +1577,17 @@ unsigned long __weak fw_cfg_acpi_tables(unsigned long start) return 0; } +void preload_acpi_dsdt(void) +{ + const char *file = CONFIG_CBFS_PREFIX "/dsdt.aml"; + + if (!CONFIG(CBFS_PRELOAD)) + return; + + printk(BIOS_DEBUG, "Preloading %s\n", file); + cbfs_preload(file); +} + unsigned long write_acpi_tables(unsigned long start) { unsigned long current; diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h index 4f059bb947..4a958553e9 100644 --- a/src/include/acpi/acpi.h +++ b/src/include/acpi/acpi.h @@ -1215,6 +1215,7 @@ void acpi_create_einj(acpi_einj_t *einj, uintptr_t addr, u8 actions); unsigned long fw_cfg_acpi_tables(unsigned long start); /* These are implemented by the target port or north/southbridge. */ +void preload_acpi_dsdt(void); unsigned long write_acpi_tables(unsigned long addr); unsigned long acpi_fill_madt(unsigned long current); unsigned long acpi_fill_ivrs_ioapic(acpi_ivrs_t *ivrs, unsigned long current);