diff options
author | Duncan Laurie <dlaurie@google.com> | 2018-11-17 12:18:20 -0700 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2018-12-04 10:18:16 +0000 |
commit | 45b8465602da800ce35c16dacf24c811f78ddcac (patch) | |
tree | 83f060d8b223f7139145e17c974dc7edba03ded2 /src/ec/google/wilco/acpi/event.asl | |
parent | 57f22f6ffe598c3886b604eae5a46f8b584c0470 (diff) | |
download | coreboot-45b8465602da800ce35c16dacf24c811f78ddcac.tar.xz |
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.asl | 24 |
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) } |