diff options
author | Sven Schnelle <svens@stackframe.org> | 2011-04-11 19:43:32 +0000 |
---|---|---|
committer | Sven Schnelle <svens@stackframe.org> | 2011-04-11 19:43:32 +0000 |
commit | ffcd1439f36ec27388139b9d5a379dd4294417b8 (patch) | |
tree | b3694c7283ed4635497f4b7e6525684a5ffe7256 /src/mainboard/lenovo | |
parent | 18b02360b9dba6ca61538923e27b5ba68a2b3299 (diff) |
EC: Add Lenovo H8
Move the EC support code from the X60 mainboard to a generic
driver, as this EC is used in many thinkpads. Also move the
ACPI code to this directory for this reason.
This patch also adds a chip config, so that the initial setting
for basic register can be specified in devicetree.cb
Signed-off-by: Sven Schnelle <svens@stackframe.org>
Acked-by: Peter Stuge <peter@stuge.se>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6485 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/mainboard/lenovo')
-rw-r--r-- | src/mainboard/lenovo/x60/Kconfig | 2 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/ac.asl | 44 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/battery.asl | 296 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/beep.asl | 32 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/dock.asl | 56 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/ec.asl | 129 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/gpe.asl | 4 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/lid.asl | 54 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/sleepbutton.asl | 49 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/systemstatus.asl | 66 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/acpi/thermal.asl | 41 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/devicetree.cb | 18 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/dsdt.asl | 7 | ||||
-rw-r--r-- | src/mainboard/lenovo/x60/mainboard.c | 62 |
14 files changed, 61 insertions, 799 deletions
diff --git a/src/mainboard/lenovo/x60/Kconfig b/src/mainboard/lenovo/x60/Kconfig index ebd2c1c7bb..c4b2f63cfd 100644 --- a/src/mainboard/lenovo/x60/Kconfig +++ b/src/mainboard/lenovo/x60/Kconfig @@ -11,7 +11,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy select SUPERIO_NSC_PC87382 select SUPERIO_NSC_PC87392 select EC_LENOVO_PMH7 - select EC_ACPI + select EC_LENOVO_H8 select BOARD_HAS_FADT select HAVE_OPTION_TABLE select HAVE_PIRQ_TABLE diff --git a/src/mainboard/lenovo/x60/acpi/ac.asl b/src/mainboard/lenovo/x60/acpi/ac.asl deleted file mode 100644 index cbc84b2365..0000000000 --- a/src/mainboard/lenovo/x60/acpi/ac.asl +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - * MA 02110-1301 USA - */ - -Field(ERAM, ByteAcc, NoLock, Preserve) -{ - Offset (0x46), - , 4, - HPAC, 1 -} - -Device(AC) -{ - Name(_HID, "ACPI0003") - Name(_UID, 0x00) - Name(_PCL, Package() { \_SB } ) - - Method(_PSR, 0, NotSerialized) - { - return (HPAC) - } - - Method(_STA, 0, NotSerialized) - { - Return (0x0f) - } -} diff --git a/src/mainboard/lenovo/x60/acpi/battery.asl b/src/mainboard/lenovo/x60/acpi/battery.asl deleted file mode 100644 index 7168581604..0000000000 --- a/src/mainboard/lenovo/x60/acpi/battery.asl +++ /dev/null @@ -1,296 +0,0 @@ -/* - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - * MA 02110-1301 USA - */ - -Field(ERAM, ByteAcc, NoLock, Preserve) -{ - Offset (0x38), - B0ST, 4, /* Battery 0 state */ - , 1, - B0CH, 1, /* Battery 0 charging */ - B0DI, 1, /* Battery 0 discharging */ - B0PR, 1, /* Battery 0 present */ - Offset (0x39), - B1ST, 4, /* Battery 1 state */ - , 1, - B1CH, 1, /* Battery 1 charging, */ - B1DI, 1, /* Battery 1 discharging,*/ - B1PR, 1 /* Battery 1 present */ -} - -/* EC Registers */ -/* PAGE == 0x00 */ -Field (ERAM, ByteAcc, NoLock, Preserve) -{ - Offset(0xa0), - BARC, 16, /* Battery remaining capacity */ - BAFC, 16, /* Battery full charge capacity */ - Offset(0xa8), - BAPR, 16, /* Battery present rate */ - BAVO, 16, /* Battery Voltage */ -} - -/* PAGE == 0x01 */ -Field (ERAM, ByteAcc, NoLock, Preserve) -{ - Offset(0xa0), - , 15, - BAMA, 1, -} - -/* PAGE == 0x02 */ -Field (ERAM, ByteAcc, NoLock, Preserve) -{ - Offset(0xa0), - BADC, 16, /* Design Capacity */ - BADV, 16, /* Design voltage */ - , 16, - , 16, - , 16, - BASN, 16, -} - -/* PAGE == 0x04: Battery type */ -Field (ERAM, ByteAcc, NoLock, Preserve) -{ - Offset(0xa0), - BATY, 32 -} - - -/* PAGE == 0x05: Battery OEM information */ -Field (ERAM, ByteAcc, NoLock, Preserve) -{ - Offset(0xa0), - BAOE, 128 -} - -/* PAGE == 0x06: Battery name */ -Field (ERAM, ByteAcc, NoLock, Preserve) -{ - Offset(0xa0), - BANA, 128 -} - -/* Arg0: Battery - * Arg1: Battery Status Package - * Arg2: charging - * Arg3: discharging - */ -Method(BSTA, 4, NotSerialized) -{ - Acquire(ECLK, 0xffff) - Store(0, Local0) - Or(1, Arg0, PAGE) - Store(BAMA, Local1) - Store(Arg0, PAGE) /* Battery dynamic information */ - - Store(BAPR, Local2) - - if (Arg2) // charging - { - Or(2, Local0, Local0) - - If (LGreaterEqual (Local2, 0x8000)) { - Store(0, Local2) - } - } - - if (Arg3) // discharging - { - Or(1, Local0, Local0) - Subtract(0x10000, Local2, Local2) - } - - Store(Local0, Index(Arg1, 0x00)) - - if (Local1) { - Multiply (BARC, 10, Index(Arg1, 2)) - Multiply (Local2, BAVO, Local2) - Divide (Local2, 1000, Local3, Index(Arg1, 1)) - } else { - Store(BARC, Index(Arg1, 2)) - Store(Local2, Index(Arg1, 1)) - } - Store(BAVO, Index(Arg1, 3)) - Release(ECLK) - Return (Arg1) -} - -Method(BINF, 2, NotSerialized) -{ - Acquire(ECLK, 0xffff) - Or(1, Arg1, PAGE) /* Battery 0 static information */ - Xor(BAMA, 1, Index(Arg0, 0)) - Store(BAMA, Local0) - Store(Arg1, PAGE) - Store(BAFC, Local2) - Or(2, Arg1, PAGE) - Store(BADC, Local1) - - if (Local0) - { - Multiply (Local1, 10, Local1) - Multiply (Local2, 10, Local2) - } - - Store(Local1, Index(Arg0, 1)) // Design Capacity - Store(Local2, Index(Arg0, 2)) // Last full charge capacity - Store(BADV, Index(Arg0, 4)) // Design Voltage - Divide (Local2, 20, Local0, Index(Arg0, 5)) // Warning capacity - - Store (BASN, Local0) - Name (SERN, Buffer (0x06) { " " }) - Store (4, Local1) - While (Local0) - { - Divide (Local0, 0x0A, Local2, Local0) - Add (Local2, 48, Index (SERN, Local1)) - Decrement (Local1) - } - Store (SERN, Index (Arg0, 10)) // Serial Number - - Or(4, Arg1, PAGE) - Name (TYPE, Buffer() { 0, 0, 0, 0, 0 }) - Store(BATY, TYPE) - Store(TYPE, Index (Arg0, 11)) // Battery type - Or(5, Arg1, PAGE) - Store(BAOE, Index (Arg0, 12)) // OEM information - Or(6, Arg1, PAGE) - Store(BANA, Index (Arg0, 9)) // Model number - Release(ECLK) - Return (Arg0) -} - -Device (BAT0) -{ - Name (_HID, EisaId ("PNP0C0A")) - Name (_UID, 0x00) - Name (_PCL, Package () { \_SB }) - - Name (BATS, Package () - { - 0x00, // 0: PowerUnit: Report in mWh - 0xFFFFFFFF, // 1: Design cap - 0xFFFFFFFF, // 2: Last full charge cap - 0x01, // 3: Battery Technology - 10800, // 4: Design Voltage (mV) - 0x00, // 5: Warning design capacity - 200, // 6: Low design capacity - 1, // 7: granularity1 - 1, // 8: granularity2 - "", // 9: Model number - "", // A: Serial number - "", // B: Battery Type - "" // C: OEM information - }) - - Method (_BIF, 0, NotSerialized) - { - Return (BINF(BATS, 0)) - } - - Name (BATI, Package () - { - 0, // Battery State - // Bit 0 - discharge - // Bit 1 - charge - // Bit 2 - critical state - 0, // Battery present Rate - 0, // Battery remaining capacity - 0 // Battery present voltage - }) - - Method (_BST, 0, NotSerialized) - { - if (B0PR) { - Return (BSTA(0, BATI, B0CH, B0DI)) - } else { - Return (BATS) - } - } - - Method (_STA, 0, NotSerialized) - { - if (B0PR) { - Return (0x1f) - } else { - Return (0x0f) - } - } -} - -Device (BAT1) -{ - Name (_HID, EisaId ("PNP0C0A")) - Name (_UID, 0x00) - Name (_PCL, Package () { \_SB }) - - Name (BATS, Package () - { - 0x00, // 0: PowerUnit: Report in mWh - 0xFFFFFFFF, // 1: Design cap - 0xFFFFFFFF, // 2: Last full charge cap - 0x01, // 3: Battery Technology - 10800, // 4: Design Voltage (mV) - 0x00, // 5: Warning design capacity - 200, // 6: Low design capacity - 1, // 7: granularity1 - 1, // 8: granularity2 - "", // 9: Model number - "", // A: Serial number - "", // B: Battery Type - "" // C: OEM information - }) - - Method (_BIF, 0, NotSerialized) - { - Return (BINF(BATS, 0x10)) - } - - Name (BATI, Package () - { - 0, // Battery State - // Bit 0 - discharge - // Bit 1 - charge - // Bit 2 - critical state - 0, // Battery present Rate - 0, // Battery remaining capacity - 0 // Battery present voltage - }) - - Method (_BST, 0, NotSerialized) - { - if (B1PR) { - Return (BSTA(0x10, BATI, B1CH, B1DI)) - } else { - Return (BATS) - } - } - - Method (_STA, 0, NotSerialized) - { - if (B1PR) { - Return (0x1f) - } else { - Return (0x0f) - } - } -} diff --git a/src/mainboard/lenovo/x60/acpi/beep.asl b/src/mainboard/lenovo/x60/acpi/beep.asl deleted file mode 100644 index 718f41bd37..0000000000 --- a/src/mainboard/lenovo/x60/acpi/beep.asl +++ /dev/null @@ -1,32 +0,0 @@ -/* - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - * MA 02110-1301 USA - */ - -Field(ERAM, ByteAcc, NoLock, Preserve) -{ - Offset (0x06), - SNDS, 8 /* Write to this register to generate sound */ - -} - -Method(BEEP, 1, NotSerialized) -{ - Store (Arg0, SNDS) -} diff --git a/src/mainboard/lenovo/x60/acpi/dock.asl b/src/mainboard/lenovo/x60/acpi/dock.asl index db61e059a8..d393f44f32 100644 --- a/src/mainboard/lenovo/x60/acpi/dock.asl +++ b/src/mainboard/lenovo/x60/acpi/dock.asl @@ -21,35 +21,47 @@ #include "smi.h" -OperationRegion (DLPC, SystemIO, 0x164c, 1) -Field(DLPC, ByteAcc, NoLock, Preserve) +Scope (\_SB) { - , 3, - DSTA, 1, -} -Device(DOCK) -{ - Name(_HID, "ACPI0003") - Name(_UID, 0x00) - Name(_PCL, Package() { \_SB } ) + OperationRegion (DLPC, SystemIO, 0x164c, 1) + Field(DLPC, ByteAcc, NoLock, Preserve) + { + , 3, + DSTA, 1, + } - Method(_DCK, 1, NotSerialized) + Device(DOCK) { - if (Arg0) { - Sleep(250) - /* connect dock */ - TRAP(SMI_DOCK_CONNECT) - } else { - /* disconnect dock */ - TRAP(SMI_DOCK_DISCONNECT) + Name(_HID, "ACPI0003") + Name(_UID, 0x00) + Name(_PCL, Package() { \_SB } ) + + Method(_DCK, 1, NotSerialized) + { + if (Arg0) { + Sleep(250) + /* connect dock */ + TRAP(SMI_DOCK_CONNECT) + } else { + /* disconnect dock */ + TRAP(SMI_DOCK_DISCONNECT) + } + + Xor(Arg0, DSTA, Local0) + Return (Local0) } - Xor(Arg0, DSTA, Local0) - Return (Local0) + Method(_STA, 0, NotSerialized) + { + Return (DSTA) + } } +} - Method(_STA, 0, NotSerialized) +Scope(\_SB.PCI0.LPCB.EC) +{ + Method(_Q18, 0, NotSerialized) { - Return (DSTA) + Notify(\_SB.DOCK, 3) } } diff --git a/src/mainboard/lenovo/x60/acpi/ec.asl b/src/mainboard/lenovo/x60/acpi/ec.asl index 85ea4914ba..c3569e8c41 100644 --- a/src/mainboard/lenovo/x60/acpi/ec.asl +++ b/src/mainboard/lenovo/x60/acpi/ec.asl @@ -1,128 +1 @@ -/* - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - * MA 02110-1301 USA - */ - -#include "smi.h" -Device(EC) -{ - Name (_HID, EISAID("PNP0C09")) - Name (_UID, 0) - - Name (_GPE, 28) - Mutex (ECLK, 0) - - OperationRegion(ERAM, EmbeddedControl, 0x00, 0x100) - Field (ERAM, ByteAcc, NoLock, Preserve) - { - Offset (0x05), - HSPA, 1, - Offset (0x0C), - LEDS, 8, /* LED state */ - Offset (0x3a), - AMUT, 1, /* Audio Mute */ - Offset (0x3B), - , 1, - KBLT, 1, /* Keyboard Light */ - Offset (0x4e), - WAKE, 16, - Offset (0x78), - TMP0, 8, /* Thermal Zone 0 temperature */ - TMP1, 8, /* Thermal Zone 1 temperature */ - Offset (0x81), - PAGE, 8 /* Information Page Selector */ - } - - Method (_CRS, 0) - { - Name (ECMD, ResourceTemplate() - { - IO (Decode16, 0x62, 0x62, 1, 1) - IO (Decode16, 0x66, 0x66, 1, 1) - }) - Return (ECMD) - } - - Method (LED, 1, NotSerialized) - { - Store(Arg0, LEDS) - } - - Method (_INI, 0, NotSerialized) - { - } - - Method (MUTE, 1, NotSerialized) - { - Store(Arg0, AMUT) - } - - /* Sleep Button pressed */ - Method(_Q13, 0, NotSerialized) - { - Notify(\_SB.PCI0.LPCB.EC.SLPB, 0x80) - } - - /* Brightness up GPE */ - Method(_Q14, 0, NotSerialized) - { - \DSPC.BRTU () - } - - /* Brightness down GPE */ - Method(_Q15, 0, NotSerialized) - { - \DSPC.BRTD() - } - - Method(_Q18, 0, NotSerialized) - { - Notify(\_SB.PCI0.LPCB.EC.DOCK, 3) - } - - /* AC status change: present */ - Method(_Q26, 0, NotSerialized) - { - Notify (AC, 0x80) - } - - /* AC status change: not present */ - Method(_Q27, 0, NotSerialized) - { - Notify (AC, 0x80) - } - - Method(_Q2A, 0, NotSerialized) - { - Notify(\_SB.PCI0.LPCB.EC.LID, 0x80) - } - - Method(_Q2B, 0, NotSerialized) - { - Notify(\_SB.PCI0.LPCB.EC.LID, 0x80) - } - - -#include "ac.asl" -#include "battery.asl" -#include "sleepbutton.asl" -#include "lid.asl" -#include "beep.asl" -#include "dock.asl" -} +#include <ec/lenovo/h8/acpi/ec.asl> diff --git a/src/mainboard/lenovo/x60/acpi/gpe.asl b/src/mainboard/lenovo/x60/acpi/gpe.asl index 64e8e31e66..3aa9615302 100644 --- a/src/mainboard/lenovo/x60/acpi/gpe.asl +++ b/src/mainboard/lenovo/x60/acpi/gpe.asl @@ -12,10 +12,10 @@ Scope (\_GPE) { if (GP13) { Or(GIV1, 0x20, GIV1) - Notify(\_SB.PCI0.LPCB.EC.DOCK, 3) + Notify(\_SB.DOCK, 3) } else { And(GIV1, 0xdf, GIV1) - Notify(\_SB.PCI0.LPCB.EC.DOCK, 0) + Notify(\_SB.DOCK, 0) } } } diff --git a/src/mainboard/lenovo/x60/acpi/lid.asl b/src/mainboard/lenovo/x60/acpi/lid.asl deleted file mode 100644 index 2dfa8d116d..0000000000 --- a/src/mainboard/lenovo/x60/acpi/lid.asl +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - * MA 02110-1301 USA - */ - -Field(ERAM, ByteAcc, NoLock, Preserve) -{ - Offset (0x32), - , 2, - WKLD, 1, - Offset (0x46), - , 2, - LIDS, 1 -} - -Device(LID) -{ - Name(_HID, "PNP0C0D") - - Method(_LId, 0, NotSerialized) - { - 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 deleted file mode 100644 index 09e88aa74e..0000000000 --- a/src/mainboard/lenovo/x60/acpi/sleepbutton.asl +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - * 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) - } - } -} diff --git a/src/mainboard/lenovo/x60/acpi/systemstatus.asl b/src/mainboard/lenovo/x60/acpi/systemstatus.asl deleted file mode 100644 index 161be083a0..0000000000 --- a/src/mainboard/lenovo/x60/acpi/systemstatus.asl +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - * MA 02110-1301 USA - */ - - -Scope (\_SI) -{ - Method(_SST, 1, NotSerialized) - { - If (LEqual (Arg0, 0)) { - /* Indicator off */ - - /* power LED off */ - \_SB.PCI0.LPCB.EC.LED(0x00) - /* suspend LED off */ - \_SB.PCI0.LPCB.EC.LED(0x07) - } - - If (LEqual (Arg0, 1)) { - /* working state */ - - /* power LED on */ - \_SB.PCI0.LPCB.EC.LED(0x80) - /* suspend LED off */ - \_SB.PCI0.LPCB.EC.LED(0x07) - } - - If (LEqual (Arg0, 2)) { - /* waking state */ - - /* power LED om */ - \_SB.PCI0.LPCB.EC.LED(0x80) - /* suspend LED blinking */ - \_SB.PCI0.LPCB.EC.LED(0xc7) - } - - If (LEqual (Arg0, 3)) { - /* sleep state */ - - /* power LED off */ - \_SB.PCI0.LPCB.EC.LED(0x00) - /* suspend LED on */ - \_SB.PCI0.LPCB.EC.LED(0x87) - } - - - - } -} diff --git a/src/mainboard/lenovo/x60/acpi/thermal.asl b/src/mainboard/lenovo/x60/acpi/thermal.asl deleted file mode 100644 index 35b6f145b5..0000000000 --- a/src/mainboard/lenovo/x60/acpi/thermal.asl +++ /dev/null @@ -1,41 +0,0 @@ -Scope(\_TZ) -{ - Method(C2K, 1, NotSerialized) - { - Multiply(Arg0, 10, Local0) - Add (Local0, 2732, Local0) - if (LLessEqual(Local0, 2732)) { - Return (3000) - } - - if (LGreater(Local0, 4012)) { - Return (3000) - } - Return (Local0) - } - - ThermalZone(THM0) - { - Method(_CRT, 0, NotSerialized) { - Return (C2K(127)) - } - Method(_TMP) { - Return (C2K(\_SB.PCI0.LPCB.EC.TMP0)) - } - } - - ThermalZone(THM1) - { - Method(_CRT, 0, NotSerialized) { - Return (C2K(99)) - } - - Method(_PSV, 0, NotSerialized) { - Return (C2K(94)) - } - - Method(_TMP) { - Return (C2K(\_SB.PCI0.LPCB.EC.TMP1)) - } - } -} diff --git a/src/mainboard/lenovo/x60/devicetree.cb b/src/mainboard/lenovo/x60/devicetree.cb index 2817255e82..f47fdaeab6 100644 --- a/src/mainboard/lenovo/x60/devicetree.cb +++ b/src/mainboard/lenovo/x60/devicetree.cb @@ -86,13 +86,29 @@ chip northbridge/intel/i945 device pnp ff.1 on # dummy end end - chip ec/acpi + chip ec/lenovo/h8 device pnp ff.2 on # dummy io 0x60 = 0x62 io 0x62 = 0x66 io 0x64 = 0x1600 io 0x66 = 0x1604 end + + register "config0" = "0xa6" + register "config1" = "0x05" + register "config2" = "0xa0" + register "config3" = "0x05" + + register "beepmask0" = "0xfe" + register "beepmask1" = "0x96" + + register "event2_enable" = "0xff" + register "event3_enable" = "0xff" + register "event4_enable" = "0xf4" + register "event5_enable" = "0x3c" + + register "wlan_enable" = "0x01" + register "trackpoint_enable" = "0x03" end chip superio/nsc/pc87382 device pnp 164e.2 on # IR diff --git a/src/mainboard/lenovo/x60/dsdt.asl b/src/mainboard/lenovo/x60/dsdt.asl index 3467a8b8bf..905c94ac67 100644 --- a/src/mainboard/lenovo/x60/dsdt.asl +++ b/src/mainboard/lenovo/x60/dsdt.asl @@ -40,10 +40,6 @@ DefinitionBlock( // mainboard specific devices #include "acpi/mainboard.asl" - // Thermal Zone - #include "acpi/thermal.asl" - // System status indicators - #include "acpi/systemstatus.asl" Scope (\_SB) { Device (PCI0) { @@ -54,4 +50,7 @@ DefinitionBlock( /* Chipset specific sleep states */ #include "../../../southbridge/intel/i82801gx/acpi/sleepstates.asl" + + // Dock support code + #include "acpi/dock.asl" } diff --git a/src/mainboard/lenovo/x60/mainboard.c b/src/mainboard/lenovo/x60/mainboard.c index c2aaaa93cf..15ed808614 100644 --- a/src/mainboard/lenovo/x60/mainboard.c +++ b/src/mainboard/lenovo/x60/mainboard.c @@ -32,78 +32,22 @@ #include <arch/io.h> #include <ec/lenovo/pmh7/pmh7.h> #include <ec/acpi/ec.h> +#include <ec/lenovo/h8/h8.h> #include <northbridge/intel/i945/i945.h> static void backlight_enable(void) { - pmh7_register_set_bit(0x50, 5); -} - -static void trackpoint_enable(void) -{ - ec_write(0x0b, 0x03); -} - -static void wlan_enable(void) -{ - ec_write(0x3a, 0x20); -} - -static void log_ec_version(void) -{ - unsigned char ecfw[9], c; - u16 fwvh, fwvl; - int i; - - for(i = 0; i < 8; i++) { - c = ec_read(0xf0 + i); - if (c < 0x20 || c > 0x7f) - break; - ecfw[i] = c; - } - ecfw[i] = '\0'; - - fwvh = ec_read(0xe9); - fwvl = ec_read(0xe8); - - printk(BIOS_INFO, "EC Firmware ID %s, Version %d.%d%d%c\n", ecfw, - fwvh >> 4, fwvh & 0x0f, fwvl >> 4, 0x41 + (fwvl & 0xf)); + pmh7_register_set_bit(0x50, 5); } static void mainboard_enable(device_t dev) { device_t dev0; - log_ec_version(); - backlight_enable(); - trackpoint_enable(); - - /* FIXME: this should be ACPI's task - * but for now, enable it here */ - wlan_enable(); - - /* enable ACPI events */ - ec_write(0x00, 0xa6); - ec_write(0x01, 0x05); - - ec_write(0x02, 0xa0); - ec_write(0x03, 0x05); - - /* set mask of enabled beeps */ - ec_write(0x04, 0xfe); - ec_write(0x05, 0x96); - - /* Unknown, but required for hotkeys - Maybe a mask for enabled keys? */ - - ec_write(0x12, 0xff); - ec_write(0x13, 0xff); - ec_write(0x14, 0xf4); - ec_write(0x15, 0x3c); /* enable Audio */ - ec_clr_bit(0x3a, 0); + h8_set_audio_mute(0); /* If we're resuming from suspend, blink suspend LED */ dev0 = dev_find_slot(0, PCI_DEVFN(0,0)); |