qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2 25/47] acpi: add acpi_field() & acpi_named_field(


From: Igor Mammedov
Subject: [Qemu-devel] [PATCH v2 25/47] acpi: add acpi_field() & acpi_named_field() terms
Date: Thu, 22 Jan 2015 14:50:09 +0000

Signed-off-by: Igor Mammedov <address@hidden>
---
v2:
 fix style error: line over 80 chr
---
 hw/acpi/acpi-build-utils.c         | 28 ++++++++++++++++++++++++++++
 include/hw/acpi/acpi-build-utils.h |  6 ++++++
 2 files changed, 34 insertions(+)

diff --git a/hw/acpi/acpi-build-utils.c b/hw/acpi/acpi-build-utils.c
index 9ac5a0d..8955608 100644
--- a/hw/acpi/acpi-build-utils.c
+++ b/hw/acpi/acpi-build-utils.c
@@ -225,6 +225,16 @@ build_prepend_package_length(GArray *package, unsigned 
length, bool incl_self)
     build_prepend_byte(package, byte);
 }
 
+static void
+build_append_pkg_length(GArray *array, unsigned length, bool incl_self)
+{
+    GArray *tmp = build_alloc_array();
+
+    build_prepend_package_length(tmp, length, incl_self);
+    build_append_array(array, tmp);
+    build_free_array(tmp);
+}
+
 void build_package(GArray *package, uint8_t op)
 {
     build_prepend_package_length(package, package->len, true);
@@ -558,3 +568,21 @@ AcpiAml acpi_operation_region(const char *name, 
acpiRegionSpace rs,
     build_append_int(var.buf, len);
     return var;
 }
+
+/* ACPI 5.0: 20.2.5.2 Named Objects Encoding: NamedField */
+AcpiAml acpi_named_field(const char *name, unsigned length)
+{
+    AcpiAml var = aml_allocate_internal(0, NON_BLOCK);
+    build_append_nameseg(var.buf, "%s", name);
+    build_append_pkg_length(var.buf, length, false);
+    return var;
+}
+
+/* ACPI 5.0: 20.2.5.2 Named Objects Encoding: DefField */
+AcpiAml acpi_field(const char *name, acpiFieldFlags flags)
+{
+    AcpiAml var = aml_allocate_internal(0x81 /* FieldOp */, EXT_PACKAGE);
+    build_append_namestring(var.buf, "%s", name);
+    build_append_byte(var.buf, flags);
+    return var;
+}
diff --git a/include/hw/acpi/acpi-build-utils.h 
b/include/hw/acpi/acpi-build-utils.h
index cb45129..b94098a 100644
--- a/include/hw/acpi/acpi-build-utils.h
+++ b/include/hw/acpi/acpi-build-utils.h
@@ -25,6 +25,10 @@ typedef enum {
 } acpiIODecode;
 
 typedef enum {
+    acpi_byte_acc = 1,
+} acpiFieldFlags;
+
+typedef enum {
     acpi_system_memory = 0x00,
     acpi_system_io = 0x01,
 } acpiRegionSpace;
@@ -53,6 +57,7 @@ AcpiAml acpi_io(acpiIODecode dec, uint16_t min_base, uint16_t 
max_base,
                 uint8_t aln, uint8_t len);
 AcpiAml acpi_operation_region(const char *name, acpiRegionSpace rs,
                               uint32_t offset, uint32_t len);
+AcpiAml acpi_named_field(const char *name, unsigned length);
 
 /* Block ASL object primitives */
 AcpiAml acpi_if(AcpiAml predicate);
@@ -62,6 +67,7 @@ AcpiAml GCC_FMT_ATTR(1, 2) acpi_device(const char 
*name_format, ...);
 AcpiAml acpi_buffer(void);
 AcpiAml acpi_resource_template(void);
 AcpiAml acpi_package(uint8_t num_elements);
+AcpiAml acpi_field(const char *name, acpiFieldFlags flags);
 
 /* other helpers */
 GArray *build_alloc_array(void);
-- 
1.8.3.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]