diff options
author | Vladimir Serbinenko <phcoder@gmail.com> | 2014-08-25 22:58:11 +0200 |
---|---|---|
committer | Vladimir Serbinenko <phcoder@gmail.com> | 2014-08-30 19:26:13 +0200 |
commit | fc10c342661a8825af200a92822ea50ea636eed0 (patch) | |
tree | c090567bb94b232aa62ef66fcebd14290de2ac8f /src | |
parent | 5888d86868678469b3dbef6e2447afc2d2386249 (diff) |
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/ec/lenovo/h8/acpi/ec.asl | 48 |
1 files changed, 43 insertions, 5 deletions
diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl index e8d5215627..f08e1075a8 100644 --- a/src/ec/lenovo/h8/acpi/ec.asl +++ b/src/ec/lenovo/h8/acpi/ec.asl @@ -236,14 +236,37 @@ Device(EC) ^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) { Name (_HID, EisaId ("IBM0068")) Name (BTN, 0) + Name (BTAB, 0) /* MASK */ Name (DHKN, 0x080C) /* Effective Mask */ Name (EMSK, 0) + /* Effective Mask for tablet */ + Name (ETAB, 0) /* Device enabled. */ Name (EN, 0) Method (_STA, 0, NotSerialized) @@ -254,12 +277,17 @@ Device(EC) Method (MHKP, 0, NotSerialized) { Store (BTN, Local0) - If (LEqual (Local0, Zero)) { - Return (Zero) + If (LNotEqual (Local0, 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 */ Method (RHK, 1, NotSerialized) { @@ -269,14 +297,24 @@ Device(EC) 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. */ Method (MHKC, 1, NotSerialized) { If (Arg0) { Store (DHKN, EMSK) + Store (Ones, ETAB) } Else { Store (Zero, EMSK) + Store (Zero, ETAB) } Store (Arg0, EN) } |