[coreboot-gerrit] Patch set updated for coreboot: 00cf881 Lenovo hotkeys support

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Wed Nov 20 03:02:12 CET 2013


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

-gerrit

commit 00cf881eefaacbd98f7361b39fbb05925b126c5f
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Thu Nov 14 18:56:45 2013 +0100

    Lenovo hotkeys support
    
    Implement proprietary lenovo ACPI hotkeys
    
    Change-Id: I36a6d3a280b0ac76d9ea063cdc10197a57e306f9
    Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
 src/ec/lenovo/h8/acpi/ec.asl | 201 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 197 insertions(+), 4 deletions(-)

diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl
index 368afa8..da3920e 100644
--- a/src/ec/lenovo/h8/acpi/ec.asl
+++ b/src/ec/lenovo/h8/acpi/ec.asl
@@ -2,6 +2,7 @@
  * This file is part of the coreboot project.
  *
  * Copyright (c) 2011 Sven Schnelle <svens at stackframe.org>
+ * Copyright (c) 2013 Vladimir Serbinenko <phcoder at gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -86,9 +87,28 @@ Device(EC)
 	/* Sleep Button pressed */
 	Method(_Q13, 0, NotSerialized)
 	{
-		Notify(\_SB.PCI0.LPCB.EC.SLPB, 0x80)
+		Notify(^SLPB, 0x80)
 	}
 
+#if IS_ENABLED (CONFIG_BOARD_LENOVO_X201)
+	/* Brightness up GPE */
+	Method(_Q14, 0, NotSerialized)
+	{
+		\_SB.PCI0.GFX0.LCD0.INCB()
+	}
+
+	/* Brightness down GPE */
+	Method(_Q15, 0, NotSerialized)
+	{
+		\_SB.PCI0.GFX0.LCD0.DECB()
+	}
+
+	/* Next display GPE */
+	Method(_Q16, 0, NotSerialized)
+	{
+		Notify (\_SB.PCI0.GFX0, 0x82)
+	}
+#else
 	/* Brightness up GPE */
 	Method(_Q14, 0, NotSerialized)
 	{
@@ -100,7 +120,7 @@ Device(EC)
 	{
 		\DSPC.BRTD()
 	}
-
+#endif
 	/* AC status change: present */
 	Method(_Q26, 0, NotSerialized)
 	{
@@ -116,14 +136,187 @@ Device(EC)
 
        Method(_Q2A, 0, NotSerialized)
        {
-               Notify(\_SB.PCI0.LPCB.EC.LID, 0x80)
+	       Notify(^LID, 0x80)
        }
 
        Method(_Q2B, 0, NotSerialized)
        {
-               Notify(\_SB.PCI0.LPCB.EC.LID, 0x80)
+	       Notify(^LID, 0x80)
+       }
+
+
+       /* IBM proprietary buttons.  */
+
+       Method (_Q10, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x01)
+       }
+
+       Method (_Q11, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x02)
+       }
+
+       Method (_Q12, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x03)
+       }
+
+       Method (_Q64, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x05)
+       }
+
+       Method (_Q65, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x06)
+       }
+
+       Method (_Q17, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x08)
+       }
+
+       Method (_Q66, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x0A)
+       }
+
+       Method (_Q6A, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x1B)
+       }
+
+       Method (_Q1A, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x0B)
        }
 
+       Method (_Q1B, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x0C)
+       }
+
+       Method (_Q62, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x0D)
+       }
+
+       Method (_Q60, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x0E)
+       }
+
+       Method (_Q61, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x0F)
+       }
+
+       Method (_Q1F, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x12)
+       }
+
+       Method (_Q67, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x13)
+       }
+
+       Method (_Q63, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x14)
+       }
+
+       Method (_Q19, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x18)
+       }
+
+#if CONFIG_BOARD_LENOVO_X201
+       Method (_Q1C, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x19)
+       }
+
+       Method (_Q1D, 0, NotSerialized)
+       {
+	    ^HKEY.RHK (0x1A)
+       }
+#endif
+
+       Device (HKEY)
+       {
+	       Name (_HID, EisaId ("IBM0068"))
+	       Name (BTN, 0)
+	       /* MASK */
+	       Name (DHKN, 0x080C)
+	       /* Effective Mask */
+	       Name (EMSK, 0)
+	       /* Device enabled. */
+	       Name (EN, 0)
+	       Method (_STA, 0, NotSerialized)
+	       {
+		    Return (0x0F)
+	       }
+	       /* Retrieve event. */
+	       Method (MHKP, 0, NotSerialized)
+	       {
+		    Store (BTN, Local0)
+		    If (LEqual (Local0, Zero)) {
+		       Return (Zero)
+		    }
+		    Store (Zero, BTN)
+		    Add (Local0, 0x1000, Local0)
+		    Return (Local0)
+	       }
+	       /* Report event  */
+	       Method (RHK, 1, NotSerialized) {
+		      ShiftLeft (One, Subtract (Arg0, 1), Local0)
+		      If (And (EMSK, Local0)) {
+			 Store (Arg0, BTN)
+			 Notify (HKEY, 0x80)
+		      }
+	       }
+	       /* Enable/disable all events.  */
+	       Method (MHKC, 1, NotSerialized) {
+			 If (Arg0) {
+				Store (DHKN, EMSK)
+			 }
+			 Else
+			 {
+				Store (Zero, EMSK)
+			 }
+			 Store (Arg0, EN)
+	       }
+	       /* Enable/disable event.  */
+	       Method (MHKM, 2, NotSerialized) {
+		    If (LLessEqual (Arg0, 0x20)) {
+				ShiftLeft (One, Subtract (Arg0, 1), Local0)
+				If (Arg1)
+				{
+				    Or (DHKN, Local0, DHKN)
+				}
+				Else
+				{
+				    And (DHKN, Not (Local0), DHKN)
+				}
+				If (EN)
+				{
+				     Store (DHKN, EMSK)
+				}
+		    }
+	       }
+	       /* Mask hotkey all. */
+	       Method (MHKA, 0, NotSerialized)
+	       {
+		    Return (0x07FFFFFF)
+	       }
+	       /* Version */
+	       Method (MHKV, 0, NotSerialized)
+	       {
+		    Return (0x0100)
+	       }
+       }
 
 #include "ac.asl"
 #include "battery.asl"



More information about the coreboot-gerrit mailing list