aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/x86/acpigen.c29
-rw-r--r--src/arch/x86/include/arch/acpigen.h22
2 files changed, 51 insertions, 0 deletions
diff --git a/src/arch/x86/acpigen.c b/src/arch/x86/acpigen.c
index e0e957a9df..0a572630a1 100644
--- a/src/arch/x86/acpigen.c
+++ b/src/arch/x86/acpigen.c
@@ -992,3 +992,32 @@ void acpigen_write_else(void)
acpigen_emit_byte(ELSE_OP);
acpigen_write_len_f();
}
+
+/* Soc-implemented functions -- weak definitions. */
+int __attribute__((weak)) acpigen_soc_read_rx_gpio(unsigned int gpio_num)
+{
+ printk(BIOS_ERR, "ERROR: %s not implemented\n", __func__);
+ acpigen_write_debug_string("read_rx_gpio not available");
+ return -1;
+}
+
+int __attribute__((weak)) acpigen_soc_get_tx_gpio(unsigned int gpio_num)
+{
+ printk(BIOS_ERR, "ERROR: %s not implemented\n", __func__);
+ acpigen_write_debug_string("get_tx_gpio not available");
+ return -1;
+}
+
+int __attribute__((weak)) acpigen_soc_set_tx_gpio(unsigned int gpio_num)
+{
+ printk(BIOS_ERR, "ERROR: %s not implemented\n", __func__);
+ acpigen_write_debug_string("set_tx_gpio not available");
+ return -1;
+}
+
+int __attribute__((weak)) acpigen_soc_clear_tx_gpio(unsigned int gpio_num)
+{
+ printk(BIOS_ERR, "ERROR: %s not implemented\n", __func__);
+ acpigen_write_debug_string("clear_tx_gpio not available");
+ return -1;
+}
diff --git a/src/arch/x86/include/arch/acpigen.h b/src/arch/x86/include/arch/acpigen.h
index c2936e2aa9..0c515da242 100644
--- a/src/arch/x86/include/arch/acpigen.h
+++ b/src/arch/x86/include/arch/acpigen.h
@@ -160,4 +160,26 @@ void acpigen_write_else(void);
int get_cst_entries(acpi_cstate_t **);
+/*
+ * 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
+ * restriction on the use of Local variables. In case of get/read functions,
+ * return value is expected to be stored in Local0 variable.
+ *
+ * All functions return 0 on success and -1 on error.
+ */
+
+/* Generate ACPI AML code to return Rx value of GPIO in Local0. */
+int acpigen_soc_read_rx_gpio(unsigned int gpio_num);
+
+/* Generate ACPI AML code to return Tx value of GPIO in Local0. */
+int acpigen_soc_get_tx_gpio(unsigned int gpio_num);
+
+/* Generate ACPI AML code to set Tx value of GPIO to 1. */
+int acpigen_soc_set_tx_gpio(unsigned int gpio_num);
+
+/* Generate ACPI AML code to set Tx value of GPIO to 0. */
+int acpigen_soc_clear_tx_gpio(unsigned int gpio_num);
+
#endif