diff options
-rw-r--r-- | src/ec/lenovo/h8/acpi/ec.asl | 137 | ||||
-rw-r--r-- | src/ec/lenovo/h8/acpi/thinkpad.asl | 156 |
2 files changed, 157 insertions, 136 deletions
diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl index 76c43a634b..17afba2dec 100644 --- a/src/ec/lenovo/h8/acpi/ec.asl +++ b/src/ec/lenovo/h8/acpi/ec.asl @@ -304,142 +304,6 @@ Device(EC) } } - Device (HKEY) - { - Name (_HID, EisaId ("IBM0068")) - Name (BTN, 0) - Name (BTAB, 0) - - /* MASK */ - Name (DHKN, 0x080C) - - /* Effective Mask */ - Name (EMSK, 0) - - /* Effective Mask for tablet */ - Name (ETAB, 0) - - /* Device enabled. */ - Name (EN, 0) - - Method (_STA, 0, NotSerialized) - { - Return (0x0F) - } - - /* Retrieve event. */ - Method (MHKP, 0, NotSerialized) - { - Store (BTN, Local0) - If (LNotEqual (Local0, Zero)) { - Store (Zero, BTN) - Add (Local0, 0x1000, Local0) - Return (Local0) - } - Store (BTAB, Local0) - If (LNotEqual (Local0, Zero)) { - Store (Zero, BTAB) - Add (Local0, 0x5000, Local0) - Return (Local0) - } - Return (Zero) - } - - /* Report event */ - Method (RHK, 1, NotSerialized) { - ShiftLeft (One, Subtract (Arg0, 1), Local0) - If (And (EMSK, Local0)) { - Store (Arg0, BTN) - Notify (HKEY, 0x80) - } - } - - /* Report tablet */ - Method (RTAB, 1, NotSerialized) { - ShiftLeft (One, Subtract (Arg0, 1), Local0) - If (And (ETAB, Local0)) { - Store (Arg0, BTAB) - Notify (HKEY, 0x80) - } - } - - /* Enable/disable all events. */ - Method (MHKC, 1, NotSerialized) { - If (Arg0) { - Store (DHKN, EMSK) - Store (Ones, ETAB) - } - Else - { - Store (Zero, EMSK) - Store (Zero, ETAB) - } - 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) - } - - /* Report tablet mode switch state */ - Method (MHKG, 0, NotSerialized) - { - Return (ShiftLeft(TBSW, 3)) - } - - /* Mute audio */ - Method (SSMS, 1, NotSerialized) - { - Store(Arg0, ALMT) - } - - /* Control mute microphone LED */ - Method (MMTS, 1, NotSerialized) - { - If (Arg0) - { - TLED(0x8E) - } - Else - { - TLED(0x0E) - } - } - - /* Version */ - Method (MHKV, 0, NotSerialized) - { - Return (0x0100) - } - - /* Master wireless switch state */ - Method (WLSW, 0, NotSerialized) - { - Return (\_SB.PCI0.LPCB.EC.GSTS) - } - } - #include "ac.asl" #include "battery.asl" #include "sleepbutton.asl" @@ -447,4 +311,5 @@ Device(EC) #include "beep.asl" #include "thermal.asl" #include "systemstatus.asl" +#include "thinkpad.asl" } diff --git a/src/ec/lenovo/h8/acpi/thinkpad.asl b/src/ec/lenovo/h8/acpi/thinkpad.asl new file mode 100644 index 0000000000..eb5b60e705 --- /dev/null +++ b/src/ec/lenovo/h8/acpi/thinkpad.asl @@ -0,0 +1,156 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (c) 2011 Sven Schnelle <svens@stackframe.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; version 2 of + * the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +Device (HKEY) +{ + /* Generated by ssdt.c */ + External (\HBDC, IntObj) + + Name (_HID, EisaId ("IBM0068")) + + Name (BTN, 0) + + Name (BTAB, 0) + + /* MASK */ + Name (DHKN, 0x080C) + + /* Effective Mask */ + Name (EMSK, 0) + + /* Effective Mask for tablet */ + Name (ETAB, 0) + + /* Device enabled. */ + Name (EN, 0) + + Method (_STA, 0, NotSerialized) + { + Return (0x0F) + } + + /* Retrieve event. */ + Method (MHKP, 0, NotSerialized) + { + Store (BTN, Local0) + If (LNotEqual (Local0, Zero)) { + Store (Zero, BTN) + Add (Local0, 0x1000, Local0) + Return (Local0) + } + Store (BTAB, Local0) + If (LNotEqual (Local0, Zero)) { + Store (Zero, BTAB) + Add (Local0, 0x5000, Local0) + Return (Local0) + } + Return (Zero) + } + + /* Report event */ + Method (RHK, 1, NotSerialized) { + ShiftLeft (One, Subtract (Arg0, 1), Local0) + If (And (EMSK, Local0)) { + Store (Arg0, BTN) + Notify (HKEY, 0x80) + } + } + + /* Report tablet */ + Method (RTAB, 1, NotSerialized) { + ShiftLeft (One, Subtract (Arg0, 1), Local0) + If (And (ETAB, Local0)) { + Store (Arg0, BTAB) + Notify (HKEY, 0x80) + } + } + + /* Enable/disable all events. */ + Method (MHKC, 1, NotSerialized) { + If (Arg0) { + Store (DHKN, EMSK) + Store (Ones, ETAB) + } + Else + { + Store (Zero, EMSK) + Store (Zero, ETAB) + } + 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) + } + + /* Report tablet mode switch state */ + Method (MHKG, 0, NotSerialized) + { + Return (ShiftLeft(TBSW, 3)) + } + + /* Mute audio */ + Method (SSMS, 1, NotSerialized) + { + Store(Arg0, ALMT) + } + + /* Control mute microphone LED */ + Method (MMTS, 1, NotSerialized) + { + If (Arg0) + { + TLED(0x8E) + } + Else + { + TLED(0x0E) + } + } + + /* Version */ + Method (MHKV, 0, NotSerialized) + { + Return (0x0100) + } + + /* Master wireless switch state */ + Method (WLSW, 0, NotSerialized) + { + Return (\_SB.PCI0.LPCB.EC.GSTS) + } +} |