summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Held <felix-coreboot@felixheld.de>2023-12-14 20:49:59 +0100
committerFelix Held <felix-coreboot@felixheld.de>2024-01-08 13:09:36 +0000
commit6759ad39ad7d669f8fe712b6dcbb927092043497 (patch)
tree22d457a55347fe24689a06febd8ef555ea59e5d7
parent3526b9fcaf33c6c7725fa7f0bd901be8ca122a2a (diff)
downloadcoreboot-6759ad39ad7d669f8fe712b6dcbb927092043497.tar.gz
coreboot-6759ad39ad7d669f8fe712b6dcbb927092043497.tar.bz2
coreboot-6759ad39ad7d669f8fe712b6dcbb927092043497.zip
arch/x86: introduce HAVE_CONFIGURABLE_APMC_SMI_PORT
Introduce the HAVE_CONFIGURABLE_APMC_SMI_PORT Kconfig option that when not selected will result in a default implementation of pm_acpi_smi_cmd_port to be included in the build that returns APM_CNT. SoCs that provide their own pm_acpi_smi_cmd_port implementation, need to select this Kconfig option. Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: Iaceb61b0f2a630d7afe2e0780b6a2a9806ea62f9 Reviewed-on: https://review.coreboot.org/c/coreboot/+/79566 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Rudolph <patrick.rudolph@9elements.com>
-rw-r--r--src/arch/x86/Kconfig7
-rw-r--r--src/arch/x86/Makefile.inc5
-rw-r--r--src/arch/x86/apmc_smi_port.c (renamed from src/mainboard/emulation/qemu-q35/smi.c)2
-rw-r--r--src/mainboard/emulation/qemu-q35/Makefile.inc1
-rw-r--r--src/soc/amd/common/block/smi/Kconfig1
5 files changed, 14 insertions, 2 deletions
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index e149f0864e2a..0c116536750b 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -316,6 +316,13 @@ config HAVE_CF9_RESET_PREPARE
bool
depends on HAVE_CF9_RESET
+config HAVE_CONFIGURABLE_APMC_SMI_PORT
+ bool
+ help
+ SoCs that have a configurable APMC SMI command port, should select
+ this option and implement pm_acpi_smi_cmd_port() that returns the IO
+ port.
+
config PIRQ_ROUTE
bool
default n
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index 62294a65ce63..04a0e58dbf96 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -336,3 +336,8 @@ smm-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
smm-$(CONFIG_DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES) += null_breakpoint.c
smm-srcs += $(wildcard src/mainboard/$(MAINBOARDDIR)/smihandler.c)
+
+ifneq ($(CONFIG_HAVE_CONFIGURABLE_APMC_SMI_PORT),y)
+ramstage-y += apmc_smi_port.c
+smm-y += apmc_smi_port.c
+endif
diff --git a/src/mainboard/emulation/qemu-q35/smi.c b/src/arch/x86/apmc_smi_port.c
index 5d8d48295cc1..ac8f3364c5e2 100644
--- a/src/mainboard/emulation/qemu-q35/smi.c
+++ b/src/arch/x86/apmc_smi_port.c
@@ -2,7 +2,7 @@
#include <cpu/x86/smm.h>
-/* The X86 qemu target uses AMD64 save states but the APM port is not configurable. */
+/* default implementation of the !HAVE_CONFIGURABLE_APMC_SMI_PORT case */
uint16_t pm_acpi_smi_cmd_port(void)
{
return APM_CNT;
diff --git a/src/mainboard/emulation/qemu-q35/Makefile.inc b/src/mainboard/emulation/qemu-q35/Makefile.inc
index f4a89be06f7f..bc73edcbbb99 100644
--- a/src/mainboard/emulation/qemu-q35/Makefile.inc
+++ b/src/mainboard/emulation/qemu-q35/Makefile.inc
@@ -20,5 +20,4 @@ all-y += ../qemu-i440fx/bootmode.c
ramstage-$(CONFIG_CHROMEOS) += chromeos.c
-smm-y += smi.c
smm-y += memmap.c
diff --git a/src/soc/amd/common/block/smi/Kconfig b/src/soc/amd/common/block/smi/Kconfig
index b2054371cd7f..5a3f42d20e13 100644
--- a/src/soc/amd/common/block/smi/Kconfig
+++ b/src/soc/amd/common/block/smi/Kconfig
@@ -1,5 +1,6 @@
config SOC_AMD_COMMON_BLOCK_SMI
bool
+ select HAVE_CONFIGURABLE_APMC_SMI_PORT
help
Select this option to add the common functions for setting up the SMI
configuration to the build.