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.
|
* This file is part of the coreboot project.
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011 Sven Schnelle <svens@stackframe.org>
|
* 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
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License as
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
@ -92,9 +93,28 @@ Device(EC)
|
||||||
/* Sleep Button pressed */
|
/* Sleep Button pressed */
|
||||||
Method(_Q13, 0, NotSerialized)
|
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 */
|
/* Brightness up GPE */
|
||||||
Method(_Q14, 0, NotSerialized)
|
Method(_Q14, 0, NotSerialized)
|
||||||
{
|
{
|
||||||
|
@ -106,7 +126,7 @@ Device(EC)
|
||||||
{
|
{
|
||||||
\DSPC.BRTD()
|
\DSPC.BRTD()
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/* AC status change: present */
|
/* AC status change: present */
|
||||||
Method(_Q26, 0, NotSerialized)
|
Method(_Q26, 0, NotSerialized)
|
||||||
{
|
{
|
||||||
|
@ -122,15 +142,188 @@ Device(EC)
|
||||||
|
|
||||||
Method(_Q2A, 0, NotSerialized)
|
Method(_Q2A, 0, NotSerialized)
|
||||||
{
|
{
|
||||||
Notify(\_SB.PCI0.LPCB.EC.LID, 0x80)
|
Notify(^LID, 0x80)
|
||||||
}
|
}
|
||||||
|
|
||||||
Method(_Q2B, 0, NotSerialized)
|
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 "ac.asl"
|
||||||
#include "battery.asl"
|
#include "battery.asl"
|
||||||
#include "sleepbutton.asl"
|
#include "sleepbutton.asl"
|
||||||
|
|
Loading…
Reference in New Issue