lenovo/h8: Support tablet events

_QXX numbers are determined experimentally, hotkey scancodes from thinkpad-acpi
module.

Change-Id: I1f7548ef62529ae25dcdcbed0fc74390b7529a2e
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-on: http://review.coreboot.org/6765
Tested-by: build bot (Jenkins)
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
This commit is contained in:
Vladimir Serbinenko 2014-08-25 22:58:11 +02:00
parent 5888d86868
commit fc10c34266
1 changed files with 43 additions and 5 deletions

View File

@ -236,14 +236,37 @@ Device(EC)
^HKEY.RHK (0x1A) ^HKEY.RHK (0x1A)
} }
Method (_Q5C, 0, NotSerialized)
{
^HKEY.RTAB (0xB)
}
Method (_Q5D, 0, NotSerialized)
{
^HKEY.RTAB (0xC)
}
Method (_Q5E, 0, NotSerialized)
{
^HKEY.RTAB (0x9)
}
Method (_Q5F, 0, NotSerialized)
{
^HKEY.RTAB (0xA)
}
Device (HKEY) Device (HKEY)
{ {
Name (_HID, EisaId ("IBM0068")) Name (_HID, EisaId ("IBM0068"))
Name (BTN, 0) Name (BTN, 0)
Name (BTAB, 0)
/* MASK */ /* MASK */
Name (DHKN, 0x080C) Name (DHKN, 0x080C)
/* Effective Mask */ /* Effective Mask */
Name (EMSK, 0) Name (EMSK, 0)
/* Effective Mask for tablet */
Name (ETAB, 0)
/* Device enabled. */ /* Device enabled. */
Name (EN, 0) Name (EN, 0)
Method (_STA, 0, NotSerialized) Method (_STA, 0, NotSerialized)
@ -254,12 +277,17 @@ Device(EC)
Method (MHKP, 0, NotSerialized) Method (MHKP, 0, NotSerialized)
{ {
Store (BTN, Local0) Store (BTN, Local0)
If (LEqual (Local0, Zero)) { If (LNotEqual (Local0, Zero)) {
Return (Zero) Store (Zero, BTN)
Add (Local0, 0x1000, Local0)
Return (Local0)
}
Store (BTAB, Local0)
If (LNotEqual (Local0, Zero)) {
Store (Zero, BTAB)
Add (Local0, 0x5000, Local0)
Return (Local0)
} }
Store (Zero, BTN)
Add (Local0, 0x1000, Local0)
Return (Local0)
} }
/* Report event */ /* Report event */
Method (RHK, 1, NotSerialized) { Method (RHK, 1, NotSerialized) {
@ -269,14 +297,24 @@ Device(EC)
Notify (HKEY, 0x80) Notify (HKEY, 0x80)
} }
} }
/* Report tablet */
Method (RTAB, 1, NotSerialized) {
ShiftLeft (One, Subtract (Arg0, 1), Local0)
If (And (ETAB, Local0)) {
Store (Arg0, BTAB)
Notify (HKEY, 0x80)
}
}
/* Enable/disable all events. */ /* Enable/disable all events. */
Method (MHKC, 1, NotSerialized) { Method (MHKC, 1, NotSerialized) {
If (Arg0) { If (Arg0) {
Store (DHKN, EMSK) Store (DHKN, EMSK)
Store (Ones, ETAB)
} }
Else Else
{ {
Store (Zero, EMSK) Store (Zero, EMSK)
Store (Zero, ETAB)
} }
Store (Arg0, EN) Store (Arg0, EN)
} }