This patch adds the required methods for enabling/disabling
the LID and SLPB objects as wake source. On Thinkpads, the
Fn key can (and is by the Vendor BIOS) programmed as Wake source,
so let's do it the same way.
Signed-off-by: Sven Schnelle <svens(a)stackframe.org>
---
src/mainboard/lenovo/x60/acpi/lid.asl | 21 +++++++++++++++++++--
src/mainboard/lenovo/x60/acpi/sleepbutton.asl | 24 ++++++++++++++++++++++++
2 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/src/mainboard/lenovo/x60/acpi/lid.asl b/src/mainboard/lenovo/x60/acpi/lid.asl
index 2c92ee6..2dfa8d1 100644
--- a/src/mainboard/lenovo/x60/acpi/lid.asl
+++ b/src/mainboard/lenovo/x60/acpi/lid.asl
@@ -21,9 +21,12 @@
Field(ERAM, ByteAcc, NoLock, Preserve)
{
+ Offset (0x32),
+ , 2,
+ WKLD, 1,
Offset (0x46),
- , 2,
- LIDS , 1
+ , 2,
+ LIDS, 1
}
Device(LID)
@@ -34,4 +37,18 @@ Device(LID)
{
return (LIDS)
}
+
+ Method(_PRW, 0, NotSerialized)
+ {
+ Return (Package() { 0x18, 0x03 })
+ }
+
+ Method(_PSW, 1, NotSerialized)
+ {
+ if (Arg0) {
+ Store(1, WKLD)
+ } else {
+ Store(0, WKLD)
+ }
+ }
}
diff --git a/src/mainboard/lenovo/x60/acpi/sleepbutton.asl b/src/mainboard/lenovo/x60/acpi/sleepbutton.asl
index c339158..09e88aa 100644
--- a/src/mainboard/lenovo/x60/acpi/sleepbutton.asl
+++ b/src/mainboard/lenovo/x60/acpi/sleepbutton.asl
@@ -19,7 +19,31 @@
* MA 02110-1301 USA
*/
+Field(ERAM, ByteAcc, NoLock, Preserve)
+{
+ Offset (0x32),
+ , 4,
+ WKFN, 1,
+ Offset(0x83),
+ FNKY, 8
+}
+
Device(SLPB)
{
Name (_HID, EisaId ("PNP0C0E"))
+ Method(_PRW, 0, NotSerialized)
+ {
+ Return (Package() { 0x18, 0x03 })
+ }
+
+ Method(_PSW, 1, NotSerialized)
+ {
+ if (Arg0) {
+ Store(6, FNKY) /* Fn key acts as wake button */
+ Store(1, WKFN)
+ } else {
+ Store(0, FNKY) /* Fn key normal operation */
+ Store(0, WKFN)
+ }
+ }
}
--
1.7.4.1