summaryrefslogtreecommitdiff
path: root/src/include/acpi
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@google.com>2020-06-01 17:36:56 -0700
committerDuncan Laurie <dlaurie@chromium.org>2020-06-03 04:06:14 +0000
commit2fe7471962dd32f4bbf97d815692f956685e903a (patch)
treec491427fa7efdece7de4b4347ab54aaa8292e8ed /src/include/acpi
parent9ff79c22808fb88a5d5cb184a439d26ce00ac15b (diff)
acpigen: Add some new helper functions
These build on existing functions but use different object types in order to provide functions for upcoming changes: acpigen_write_return_op(): Return an operator. acpigen_write_if_lequal_op_op(): Check if 2 operands are equal. acpigen_get_package_op_element(): Read an element from a package into an operator. This one just provides the missing helper, the other 3 already exist: acpigen_get_tx_gpio: Read TX gpio state. Signed-off-by: Duncan Laurie <dlaurie@google.com> Change-Id: I1141fd132d6f09cf482f74e95308947cba2c5846 Reviewed-on: https://review.coreboot.org/c/coreboot/+/41985 Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/include/acpi')
-rw-r--r--src/include/acpi/acpigen.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/include/acpi/acpigen.h b/src/include/acpi/acpigen.h
index a99489de1f..dffde851f5 100644
--- a/src/include/acpi/acpigen.h
+++ b/src/include/acpi/acpigen.h
@@ -360,6 +360,7 @@ void acpigen_write_debug_integer(uint64_t val);
void acpigen_write_debug_op(uint8_t op);
void acpigen_write_if(void);
void acpigen_write_if_and(uint8_t arg1, uint8_t arg2);
+void acpigen_write_if_lequal_op_op(uint8_t op, uint8_t val);
void acpigen_write_if_lequal_op_int(uint8_t op, uint64_t val);
void acpigen_write_if_lequal_namestr_int(const char *namestr, uint64_t val);
void acpigen_write_else(void);
@@ -368,6 +369,7 @@ void acpigen_write_to_integer(uint8_t src, uint8_t dst);
void acpigen_write_byte_buffer(uint8_t *arr, size_t size);
void acpigen_write_return_byte_buffer(uint8_t *arr, size_t size);
void acpigen_write_return_singleton_buffer(uint8_t arg);
+void acpigen_write_return_op(uint8_t arg);
void acpigen_write_return_byte(uint8_t arg);
void acpigen_write_upc(enum acpi_upc_type type);
void acpigen_write_pld(const struct acpi_pld *pld);
@@ -439,6 +441,16 @@ void acpigen_write_indexfield(const char *idx, const char *data,
int get_cst_entries(acpi_cstate_t **);
/*
+ * Get element from package into specified destination op:
+ * <dest_op> = DeRefOf (<package_op>[<element])
+ *
+ * Example:
+ * acpigen_get_package_op_element(ARG0_OP, 0, LOCAL0_OP)
+ * Local0 = DeRefOf (Arg0[0])
+ */
+void acpigen_get_package_op_element(uint8_t package_op, unsigned int element, uint8_t dest_op);
+
+/*
* Soc-implemented functions for generating ACPI AML code for GPIO handling. All
* these functions are expected to use only Local5, Local6 and Local7
* variables. If the functions call into another ACPI method, then there is no
@@ -478,6 +490,14 @@ int acpigen_disable_tx_gpio(struct acpi_gpio *gpio);
*/
void acpigen_get_rx_gpio(struct acpi_gpio *gpio);
+/*
+ * Helper function for getting a TX GPIO value based on the GPIO polarity.
+ * The return value is stored in Local0 variable.
+ * This function ends up calling acpigen_soc_get_tx_gpio to make callbacks
+ * into SoC acpigen code
+ */
+void acpigen_get_tx_gpio(struct acpi_gpio *gpio);
+
/* refer to ACPI 6.4.3.5.3 Word Address Space Descriptor section for details */
void acpigen_resource_word(u16 res_type, u16 gen_flags, u16 type_flags, u16 gran,
u16 range_min, u16 range_max, u16 translation, u16 length);