Lenovo hotkeys support
Implement proprietary lenovo ACPI hotkeys Change-Id: I36a6d3a280b0ac76d9ea063cdc10197a57e306f9 Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com> Reviewed-on: http://review.coreboot.org/4055 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
parent
219f068ae3
commit
d26558cf5b
|
@ -2,6 +2,7 @@
|
|||
* This file is part of the coreboot project.
|
||||
*
|
||||
* Copyright (c) 2011 Sven Schnelle <svens@stackframe.org>
|
||||
* Copyright (c) 2013 Vladimir Serbinenko <phcoder@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
|
||||
|
@ -92,9 +93,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)
|
||||
{
|
||||
|
@ -106,7 +126,7 @@ Device(EC)
|
|||
{
|
||||
\DSPC.BRTD()
|
||||
}
|
||||
|
||||
#endif
|
||||
/* AC status change: present */
|
||||
Method(_Q26, 0, NotSerialized)
|
||||
{
|
||||
|
@ -122,15 +142,188 @@ 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"
|
||||
#include "sleepbutton.asl"
|
||||
|
|
Loading…
Reference in New Issue