From 6c8913ee20398754a2caf2184e185b3860dfb951 Mon Sep 17 00:00:00 2001 From: Nicolas Kochlowski Date: Tue, 17 Dec 2024 12:42:54 -0300 Subject: [PATCH] drivers/amd/opensil/acpi.c: Factor common ACPI calls to openSIL driver Refactor to factor out and route ACPI calls through the openSIL driver interface to separate main SoC code from vendorcode. Change-Id: I9fa4f60164333ec7a268702fa3e94979a1b83594 Signed-off-by: Nicolas Kochlowski Reviewed-on: https://review.coreboot.org/c/coreboot/+/85633 Tested-by: build bot (Jenkins) Reviewed-by: Felix Held --- src/drivers/amd/opensil/Makefile.mk | 1 + src/drivers/amd/opensil/acpi.c | 16 ++++++++++++++++ src/drivers/amd/opensil/opensil.h | 4 ++++ src/soc/amd/genoa_poc/acpi.c | 4 ++-- src/soc/amd/phoenix/acpi.c | 4 ++-- src/vendorcode/amd/opensil/genoa_poc/acpi.c | 8 +++++++- src/vendorcode/amd/opensil/opensil.h | 5 +++-- src/vendorcode/amd/opensil/stub/ramstage.c | 6 +++--- 8 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 src/drivers/amd/opensil/acpi.c diff --git a/src/drivers/amd/opensil/Makefile.mk b/src/drivers/amd/opensil/Makefile.mk index 1d209364c0..82e025bd54 100644 --- a/src/drivers/amd/opensil/Makefile.mk +++ b/src/drivers/amd/opensil/Makefile.mk @@ -4,6 +4,7 @@ ifeq ($(CONFIG_OPENSIL_DRIVER),y) subdirs-y += mpio +ramstage-y += acpi.c ramstage-y += ramstage.c endif diff --git a/src/drivers/amd/opensil/acpi.c b/src/drivers/amd/opensil/acpi.c new file mode 100644 index 0000000000..042ee6779b --- /dev/null +++ b/src/drivers/amd/opensil/acpi.c @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include + +#include "opensil.h" + +void amd_opensil_fill_fadt_io_ports(acpi_fadt_t *fadt) +{ + opensil_fill_fadt(fadt); +} + +unsigned long acpi_add_opensil_tables(unsigned long current, acpi_rsdp_t *rsdp) +{ + return add_opensil_acpi_table(current, rsdp); +} diff --git a/src/drivers/amd/opensil/opensil.h b/src/drivers/amd/opensil/opensil.h index 00468762c9..f2bcd6b900 100644 --- a/src/drivers/amd/opensil/opensil.h +++ b/src/drivers/amd/opensil/opensil.h @@ -3,9 +3,13 @@ #ifndef OPENSIL_DRIVER_H #define OPENSIL_DRIVER_H +#include + /* Set up openSIL env and call TP1 */ void amd_opensil_silicon_init(void); /* Set global and per-device MPIO configurations */ void configure_mpio(void); +/* Fill in FADT from openSIL */ +void amd_opensil_fill_fadt_io_ports(acpi_fadt_t *fadt); #endif /* OPENSIL_DRIVER_H */ diff --git a/src/soc/amd/genoa_poc/acpi.c b/src/soc/amd/genoa_poc/acpi.c index 9b8011dcc6..9091050ba5 100644 --- a/src/soc/amd/genoa_poc/acpi.c +++ b/src/soc/amd/genoa_poc/acpi.c @@ -8,12 +8,12 @@ #include #include #include -#include +#include void acpi_fill_fadt(acpi_fadt_t *fadt) { /* Fill in pm1_evt, pm1_cnt, pm_tmr, gpe0_blk from openSIL input structure */ - opensil_fill_fadt_io_ports(fadt); + amd_opensil_fill_fadt_io_ports(fadt); fadt->pm1_evt_len = 4; /* 32 bits */ fadt->pm1_cnt_len = 2; /* 16 bits */ diff --git a/src/soc/amd/phoenix/acpi.c b/src/soc/amd/phoenix/acpi.c index a182dfbb12..1475b6166a 100644 --- a/src/soc/amd/phoenix/acpi.c +++ b/src/soc/amd/phoenix/acpi.c @@ -17,10 +17,10 @@ #include #include #include +#include #include #include #include -#include #include "chip.h" /* @@ -40,7 +40,7 @@ void acpi_fill_fadt(acpi_fadt_t *fadt) fadt->gpe0_blk = ACPI_GPE0_BLK; } else { /* Fill in pm1_evt, pm1_cnt, pm_tmr, gpe0_blk from openSIL input structure */ - opensil_fill_fadt_io_ports(fadt); + amd_opensil_fill_fadt_io_ports(fadt); } fadt->pm1_evt_len = 4; /* 32 bits */ diff --git a/src/vendorcode/amd/opensil/genoa_poc/acpi.c b/src/vendorcode/amd/opensil/genoa_poc/acpi.c index f539798d69..fcdf167c12 100644 --- a/src/vendorcode/amd/opensil/genoa_poc/acpi.c +++ b/src/vendorcode/amd/opensil/genoa_poc/acpi.c @@ -5,9 +5,10 @@ #include #include #include + #include "../opensil.h" -void opensil_fill_fadt_io_ports(acpi_fadt_t *fadt) +void opensil_fill_fadt(acpi_fadt_t *fadt) { FCHHWACPI_INPUT_BLK *blk = SilFindStructure(SilId_FchHwAcpiP, 0); @@ -16,3 +17,8 @@ void opensil_fill_fadt_io_ports(acpi_fadt_t *fadt) fadt->pm_tmr_blk = blk->AcpiPmTmrBlkAddr; fadt->gpe0_blk = blk->AcpiGpe0BlkAddr; } + +unsigned long add_opensil_acpi_table(unsigned long current, acpi_rsdp_t *rsdp) +{ + return current; +} diff --git a/src/vendorcode/amd/opensil/opensil.h b/src/vendorcode/amd/opensil/opensil.h index 91231251c4..cd71dfc3ce 100644 --- a/src/vendorcode/amd/opensil/opensil.h +++ b/src/vendorcode/amd/opensil/opensil.h @@ -9,8 +9,9 @@ void SIL_STATUS_report(const char *function, const int status); // Add the memory map to dev, starting at index idx, returns last use idx void add_opensil_memmap(struct device *dev, unsigned long *idx); -// Fill in FADT from openSIL -void opensil_fill_fadt_io_ports(acpi_fadt_t *fadt); + +void opensil_fill_fadt(acpi_fadt_t *fadt); +unsigned long add_opensil_acpi_table(unsigned long current, acpi_rsdp_t *rsdp); void setup_opensil(void); void opensil_xSIM_timepoint_1(void); diff --git a/src/vendorcode/amd/opensil/stub/ramstage.c b/src/vendorcode/amd/opensil/stub/ramstage.c index 0674140646..5da6134ce3 100644 --- a/src/vendorcode/amd/opensil/stub/ramstage.c +++ b/src/vendorcode/amd/opensil/stub/ramstage.c @@ -1,8 +1,8 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include -#include #include + #include "../opensil.h" void add_opensil_memmap(struct device *dev, unsigned long *idx) @@ -10,12 +10,12 @@ void add_opensil_memmap(struct device *dev, unsigned long *idx) printk(BIOS_NOTICE, "openSIL stub: %s\n", __func__); } -void opensil_fill_fadt_io_ports(acpi_fadt_t *fadt) +void opensil_fill_fadt(acpi_fadt_t *fadt) { printk(BIOS_NOTICE, "openSIL stub: %s\n", __func__); } -unsigned long acpi_add_opensil_tables(unsigned long current, acpi_rsdp_t *rsdp) +unsigned long add_opensil_acpi_table(unsigned long current, acpi_rsdp_t *rsdp) { printk(BIOS_NOTICE, "openSIL stub: %s\n", __func__); return current;