aboutsummaryrefslogtreecommitdiff
path: root/src/ec/google/wilco/acpi/event.asl
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@google.com>2018-11-17 12:18:20 -0700
committerPatrick Georgi <pgeorgi@google.com>2018-12-04 10:18:16 +0000
commit45b8465602da800ce35c16dacf24c811f78ddcac (patch)
tree83f060d8b223f7139145e17c974dc7edba03ded2 /src/ec/google/wilco/acpi/event.asl
parent57f22f6ffe598c3886b604eae5a46f8b584c0470 (diff)
ec/google/wilco: Fix extended event handling
Extended events will be handled by the OS kernel driver, but that driver needs a method exposed by ACPI to read the event data from the EC and into a buffer. Tested by generating a hotkey event and reading the buffer from the Linux kernel driver with acpi_evaluate_object(). Change-Id: Ic8510e38d777a5dd31a5237867313efefeb2b48e Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://review.coreboot.org/c/29674 Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/ec/google/wilco/acpi/event.asl')
-rw-r--r--src/ec/google/wilco/acpi/event.asl24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/ec/google/wilco/acpi/event.asl b/src/ec/google/wilco/acpi/event.asl
index b43086c6c3..4d796b5c85 100644
--- a/src/ec/google/wilco/acpi/event.asl
+++ b/src/ec/google/wilco/acpi/event.asl
@@ -76,6 +76,11 @@ Method (ECQ1, 1, Serialized)
Method (ECQ2, 1, Serialized)
{
Printf ("EVT2: %o", Arg0)
+
+ If (EBIT (E2QS, Arg0)) {
+ Printf ("QS EVENT")
+ Notify (^WLCO, 0x90)
+ }
}
/* Handle events in PmEv3 */
@@ -90,12 +95,6 @@ Method (ECQ4, 1, Serialized)
Printf ("EVT4: %o", Arg0)
}
-/* Handle QuickSet events */
-Method (ECQS, 1, Serialized)
-{
- Printf ("QS EVENT %o", Arg0)
-}
-
/* Process all events */
Method (_Q66, 0, Serialized)
{
@@ -118,9 +117,20 @@ Method (_Q66, 0, Serialized)
If (Local0) {
ECQ4 (Local0)
}
+}
+/* Get Event Buffer */
+Method (QSET, 0, Serialized)
+{
+ /* Get count of event bytes */
Local0 = R (QSEC)
+ Name (QBUF, Buffer (Local0) {})
+
+ /* Fill QS event buffer with Local0 bytes */
For (Local1 = 0, Local1 < Local0, Local1++) {
- ECQS (R (QSEB))
+ QBUF[Local1] = R (QSEB)
}
+
+ Printf ("QS = %o", QBUF)
+ Return (QBUF)
}