acpigen: Add methods for mutex operations

Tested on Linux 5.2:
Dumped and decoded the ACPI tables using iasl.

Change-Id: I79310b0f9e2297cf8428d11598935164caf95968
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/37637
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
diff --git a/src/arch/x86/acpigen.c b/src/arch/x86/acpigen.c
index 1d75889..cc724a0 100644
--- a/src/arch/x86/acpigen.c
+++ b/src/arch/x86/acpigen.c
@@ -403,6 +403,37 @@
 	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;