From fc10c342661a8825af200a92822ea50ea636eed0 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Mon, 25 Aug 2014 22:58:11 +0200 Subject: lenovo/h8: Support tablet events _QXX numbers are determined experimentally, hotkey scancodes from thinkpad-acpi module. Change-Id: I1f7548ef62529ae25dcdcbed0fc74390b7529a2e Signed-off-by: Vladimir Serbinenko Reviewed-on: http://review.coreboot.org/6765 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan --- src/ec/lenovo/h8/acpi/ec.asl | 48 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) (limited to 'src/ec/lenovo') 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) } -- cgit v1.2.3