Vladimir Serbinenko (phcoder@gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4055
-gerrit
commit a1e7b96d8843641638b9111fcdc08c960ad71dca Author: Vladimir Serbinenko phcoder@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@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..4cde604 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"