summaryrefslogtreecommitdiff
path: root/src/acpi
diff options
context:
space:
mode:
authorTim Wawrzynczak <twawrzynczak@chromium.org>2021-07-01 11:18:50 -0600
committerPatrick Georgi <pgeorgi@google.com>2021-07-12 07:34:44 +0000
commitc4ca2f63967c3ab274d068d50f98df584014101a (patch)
tree5dd9dd78999a117049b5de3c9ef8cfe85f20009f /src/acpi
parentf16a5ec87104c6ab83a85ababdf9d2f43940ab5c (diff)
acpi: Add function to simplify If (CondRefOf (..)) sequences
The new function is called acpigen_write_if_cond_refof(), and it must be paired with a following acpigen_write_if_end() call. Change-Id: I6e192a569f550ecb77ad264275d52f219eacaca1 Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/56003 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src/acpi')
-rw-r--r--src/acpi/acpigen.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/acpi/acpigen.c b/src/acpi/acpigen.c
index 9818dc296c..8320b6cacc 100644
--- a/src/acpi/acpigen.c
+++ b/src/acpi/acpigen.c
@@ -1501,6 +1501,21 @@ void acpigen_write_if_lequal_namestr_int(const char *namestr, uint64_t val)
acpigen_write_integer(val);
}
+/*
+ * Generates ACPI code to check at runtime if an object named `namestring`
+ * exists, and leaves the If scope open to continue execute code when this
+ * is true. NOTE: Requires matching acpigen_write_if_end().
+ *
+ * If (CondRefOf (NAME))
+ */
+void acpigen_write_if_cond_ref_of(const char *namestring)
+{
+ acpigen_write_if();
+ acpigen_emit_ext_op(COND_REFOF_OP);
+ acpigen_emit_namestring(namestring);
+ acpigen_emit_byte(ZERO_OP); /* ignore COND_REFOF_OP destination */
+}
+
/* Closes previously opened if statement and generates ACPI code for else statement. */
void acpigen_write_else(void)
{