[coreboot-gerrit] New patch to review for coreboot: 84a399a lenovo/h8: Support tablet events

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Mon Aug 25 23:01:28 CEST 2014


Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6765

-gerrit

commit 84a399a7f8cb138ace785ea1f8b25e716d0c03d6
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Mon Aug 25 22:58:11 2014 +0200

    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 at gmail.com>
---
 src/ec/lenovo/h8/acpi/ec.asl | 48 +++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 43 insertions(+), 5 deletions(-)

diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl
index e8d5215..f08e107 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)
 	       }



More information about the coreboot-gerrit mailing list