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>
This commit is contained in:
parent
57f22f6ffe
commit
45b8465602
|
@ -67,7 +67,7 @@ Name (E1SS, Package () { 0x07, 0x80, RD }) /* SMI-SCI */
|
|||
Name (EVT2, Package () { 0x08, 0xff, RD }) /* Event 2 */
|
||||
Name (E2BS, Package () { 0x08, 0x02, RD }) /* BSS */
|
||||
Name (E2OR, Package () { 0x08, 0x04, RD }) /* Orientation */
|
||||
Name (E2QS, Package () { 0x08, 0x08, RD }) /* Quickset */
|
||||
Name (E2QS, Package () { 0x08, 0x08, RD }) /* QS Event */
|
||||
Name (E2PN, Package () { 0x08, 0x20, RD }) /* Panel */
|
||||
Name (E2DP, Package () { 0x08, 0x40, RD }) /* Display Port */
|
||||
Name (E2VT, Package () { 0x08, 0x80, RD }) /* Video Throttle */
|
||||
|
@ -100,8 +100,8 @@ Name (BSMN, Package () { 0x28, 0xff, RD }) /* BSTATIC: Manufacturer Name */
|
|||
Name (BSDC, Package () { 0x29, 0xff, RD }) /* BSTATIC: Device Chemistry */
|
||||
Name (BSBS, Package () { 0x2a, 0xff, RD }) /* BSTATIC: Battery String */
|
||||
|
||||
Name (QSEC, Package () { 0x2b, 0xff, RD }) /* QuickSet Event Count */
|
||||
Name (QSEB, Package () { 0x2c, 0xff, RD }) /* QuickSet Event Byte */
|
||||
Name (QSEC, Package () { 0x2b, 0xff, RD }) /* QS Event Count */
|
||||
Name (QSEB, Package () { 0x2c, 0xff, RD }) /* QS Event Byte */
|
||||
|
||||
Name (ORST, Package () { 0x39, 0xff, RD }) /* Orientation State */
|
||||
Name (OREV, Package () { 0x3a, 0xff, RD }) /* Orientation Events */
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
Local0 = R (QSEC)
|
||||
For (Local1 = 0, Local1 < Local0, Local1++) {
|
||||
ECQS (R (QSEB))
|
||||
}
|
||||
}
|
||||
|
||||
/* 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++) {
|
||||
QBUF[Local1] = R (QSEB)
|
||||
}
|
||||
|
||||
Printf ("QS = %o", QBUF)
|
||||
Return (QBUF)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue