summaryrefslogtreecommitdiff
path: root/src/soc/amd/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/amd/common')
-rw-r--r--src/soc/amd/common/acpi/gpio_bank_lib.asl34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/soc/amd/common/acpi/gpio_bank_lib.asl b/src/soc/amd/common/acpi/gpio_bank_lib.asl
index f209f448c1..8640cc114d 100644
--- a/src/soc/amd/common/acpi/gpio_bank_lib.asl
+++ b/src/soc/amd/common/acpi/gpio_bank_lib.asl
@@ -2,6 +2,8 @@
#include <soc/iomap.h>
+#define GPIO_INPUT_SHIFT 16
+#define GPIO_INPUT_VALUE (1 << GPIO_INPUT_SHIFT)
#define GPIO_OUTPUT_SHIFT 22
#define GPIO_OUTPUT_VALUE (1 << GPIO_OUTPUT_SHIFT)
@@ -148,3 +150,35 @@ Method (CTXS, 1, Serialized)
}
VAL0 &= ~GPIO_OUTPUT_VALUE
}
+
+/*
+ * Get GPIO Input Value
+ * Arg0 - GPIO Number
+ */
+Method (GRXS, 1, Serialized)
+{
+ OperationRegion (GPDW, SystemMemory, GPAD (Arg0), 4)
+ Field (GPDW, AnyAcc, NoLock, Preserve)
+ {
+ VAL0, 32
+ }
+ Local0 = (GPIO_INPUT_VALUE & VAL0) >> GPIO_INPUT_SHIFT
+
+ Return (Local0)
+}
+
+/*
+ * Get GPIO Output Value
+ * Arg0 - GPIO Number
+ */
+Method (GTXS, 1, Serialized)
+{
+ OperationRegion (GPDW, SystemMemory, GPAD (Arg0), 4)
+ Field (GPDW, AnyAcc, NoLock, Preserve)
+ {
+ VAL0, 32
+ }
+ Local0 = (GPIO_OUTPUT_VALUE & VAL0) >> GPIO_OUTPUT_SHIFT
+
+ Return (Local0)
+}