summaryrefslogtreecommitdiffstats
path: root/src/acpi/acpigen.c
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2020-08-19 23:17:42 -0600
committerAaron Durbin <adurbin@chromium.org>2020-08-21 16:19:30 +0000
commit80bc09156445f1d759cf330d94800be30f70e940 (patch)
treee135e37f1af4af1814be732479ba36dcfa498126 /src/acpi/acpigen.c
parent29ed4f56b5c41231081d2fccdf500dd307a3a8d3 (diff)
downloadcoreboot-80bc09156445f1d759cf330d94800be30f70e940.tar.gz
coreboot-80bc09156445f1d759cf330d94800be30f70e940.tar.bz2
coreboot-80bc09156445f1d759cf330d94800be30f70e940.zip
acpi: add more AML generation functions
Add the following functions to acpi AML generation code: acpigen_write_to_integer_from_namestring() acpigen_write_create_byte_field() acpigen_write_create_word_field() acpigen_write_create_dword_field() acpigen_write_create_qword_field() BUG=b:163583825 Change-Id: Ida151aff68f90012b16df2383fb96ddb87c3fb9c Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/44641 Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/acpi/acpigen.c')
-rw-r--r--src/acpi/acpigen.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/acpi/acpigen.c b/src/acpi/acpigen.c
index f2187062a7c7..a82a66ef6e2f 100644
--- a/src/acpi/acpigen.c
+++ b/src/acpi/acpigen.c
@@ -1353,6 +1353,13 @@ void acpigen_write_to_integer(uint8_t src, uint8_t dst)
acpigen_emit_byte(dst);
}
+void acpigen_write_to_integer_from_namestring(const char *source, uint8_t dst_op)
+{
+ acpigen_emit_byte(TO_INTEGER_OP);
+ acpigen_emit_namestring(source);
+ acpigen_emit_byte(dst_op);
+}
+
void acpigen_write_byte_buffer(uint8_t *arr, size_t size)
{
size_t i;
@@ -1971,3 +1978,31 @@ void acpigen_notify(const char *namestr, int value)
acpigen_emit_namestring(namestr);
acpigen_write_integer(value);
}
+
+static void _create_field(uint8_t aml_op, uint8_t srcop, size_t byte_offset, const char *name)
+{
+ acpigen_emit_byte(aml_op);
+ acpigen_emit_byte(srcop);
+ acpigen_write_integer(byte_offset);
+ acpigen_emit_namestring(name);
+}
+
+void acpigen_write_create_byte_field(uint8_t op, size_t byte_offset, const char *name)
+{
+ _create_field(CREATE_BYTE_OP, op, byte_offset, name);
+}
+
+void acpigen_write_create_word_field(uint8_t op, size_t byte_offset, const char *name)
+{
+ _create_field(CREATE_WORD_OP, op, byte_offset, name);
+}
+
+void acpigen_write_create_dword_field(uint8_t op, size_t byte_offset, const char *name)
+{
+ _create_field(CREATE_DWORD_OP, op, byte_offset, name);
+}
+
+void acpigen_write_create_qword_field(uint8_t op, size_t byte_offset, const char *name)
+{
+ _create_field(CREATE_QWORD_OP, op, byte_offset, name);
+}