summaryrefslogtreecommitdiff
path: root/src/arch/x86/acpigen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/acpigen.c')
-rw-r--r--src/arch/x86/acpigen.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/arch/x86/acpigen.c b/src/arch/x86/acpigen.c
index 1d75889018..cc724a0cc1 100644
--- a/src/arch/x86/acpigen.c
+++ b/src/arch/x86/acpigen.c
@@ -403,6 +403,37 @@ void acpigen_write_opregion(struct opregion *opreg)
acpigen_write_integer(opreg->regionlen);
}
+/*
+ * Generate ACPI AML code for Mutex
+ * Arg0: Pointer to name of mutex
+ * Arg1: Initial value of mutex
+ */
+void acpigen_write_mutex(const char *name, const uint8_t flags)
+{
+ /* MutexOp */
+ acpigen_emit_ext_op(MUTEX_OP);
+ /* NameString 4 chars only */
+ acpigen_emit_simple_namestring(name);
+ acpigen_emit_byte(flags);
+}
+
+void acpigen_write_acquire(const char *name, const uint16_t val)
+{
+ /* AcquireOp */
+ acpigen_emit_ext_op(ACQUIRE_OP);
+ /* NameString 4 chars only */
+ acpigen_emit_simple_namestring(name);
+ acpigen_emit_word(val);
+}
+
+void acpigen_write_release(const char *name)
+{
+ /* ReleaseOp */
+ acpigen_emit_ext_op(RELEASE_OP);
+ /* NameString 4 chars only */
+ acpigen_emit_simple_namestring(name);
+}
+
static void acpigen_write_field_length(uint32_t len)
{
uint8_t i, j;