[coreboot-gerrit] New patch to review for coreboot: 4974d61 Lenovo hotkeys

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Wed Nov 13 21:44:19 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 4974d61017ab47744ee0bb1e9e2580eaf3d4eead
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Wed Nov 13 21:43:50 2013 +0100

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

diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl
index 368afa8..5cf7246 100644
--- a/src/ec/lenovo/h8/acpi/ec.asl
+++ b/src/ec/lenovo/h8/acpi/ec.asl
@@ -86,9 +86,28 @@ Device(EC)
 	/* Sleep Button pressed */
 	Method(_Q13, 0, NotSerialized)
 	{
-		Notify(\_SB.PCI0.LPCB.EC.SLPB, 0x80)
+		Notify(^SLPB, 0x80)
 	}
 
+#if defined (CONFIG_BOARD_LENOVO_X201) && 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 +119,7 @@ Device(EC)
 	{
 		\DSPC.BRTD()
 	}
-
+#endif
 	/* AC status change: present */
 	Method(_Q26, 0, NotSerialized)
 	{
@@ -116,14 +135,181 @@ 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)
+	       Name (EN, 0)
+               Method (_STA, 0, NotSerialized)
+               {
+                    Return (0x0F)
+               }
+               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)
+                      }
+               }
+               Method (MHKC, 1, NotSerialized) {
+	                 If (Arg0) {
+		                Store (DHKN, EMSK)
+			 }
+			 Else
+			 {
+				Store (Zero, EMSK)
+			 }
+                         Store (Arg0, EN)
+               }
+               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)
+				}
+                    }
+               }
+               Method (MHKA, 0, NotSerialized)
+               {
+                    Return (0x07FFFFFF)
+               }
+               Method (MHKV, 0, NotSerialized)
+               {
+                    Return (0x0100)
+               }
+       }
 
 #include "ac.asl"
 #include "battery.asl"



More information about the coreboot-gerrit mailing list