aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/smm/smi_trigger.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86/smm/smi_trigger.c')
-rw-r--r--src/cpu/x86/smm/smi_trigger.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/cpu/x86/smm/smi_trigger.c b/src/cpu/x86/smm/smi_trigger.c
new file mode 100644
index 0000000000..f1031a00f6
--- /dev/null
+++ b/src/cpu/x86/smm/smi_trigger.c
@@ -0,0 +1,43 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <arch/io.h>
+#include <console/console.h>
+#include <cpu/x86/smm.h>
+
+int apm_control(u8 cmd)
+{
+ if (!CONFIG(HAVE_SMI_HANDLER))
+ return -1;
+
+ switch (cmd) {
+ case APM_CNT_CST_CONTROL:
+ break;
+ case APM_CNT_PST_CONTROL:
+ break;
+ case APM_CNT_ACPI_DISABLE:
+ printk(BIOS_DEBUG, "Disabling ACPI via APMC.\n");
+ break;
+ case APM_CNT_ACPI_ENABLE:
+ printk(BIOS_DEBUG, "Enabling ACPI via APMC.\n");
+ break;
+ case APM_CNT_GNVS_UPDATE:
+ break;
+ case APM_CNT_FINALIZE:
+ printk(BIOS_DEBUG, "Finalizing SMM.\n");
+ break;
+ case APM_CNT_ELOG_GSMI:
+ break;
+ case APM_CNT_SMMSTORE:
+ break;
+ case APM_CNT_SMMINFO:
+ break;
+ default:
+ break;
+ }
+
+ /* Now raise the SMI. */
+ outb(cmd, APM_CNT);
+
+ printk(BIOS_DEBUG, "APMC done.\n");
+ return 0;
+}