summaryrefslogtreecommitdiff
path: root/src/mainboard/lenovo
diff options
context:
space:
mode:
authorSven Schnelle <svens@stackframe.org>2011-04-11 19:43:32 +0000
committerSven Schnelle <svens@stackframe.org>2011-04-11 19:43:32 +0000
commitffcd1439f36ec27388139b9d5a379dd4294417b8 (patch)
treeb3694c7283ed4635497f4b7e6525684a5ffe7256 /src/mainboard/lenovo
parent18b02360b9dba6ca61538923e27b5ba68a2b3299 (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/Kconfig2
-rw-r--r--src/mainboard/lenovo/x60/acpi/ac.asl44
-rw-r--r--src/mainboard/lenovo/x60/acpi/battery.asl296
-rw-r--r--src/mainboard/lenovo/x60/acpi/beep.asl32
-rw-r--r--src/mainboard/lenovo/x60/acpi/dock.asl56
-rw-r--r--src/mainboard/lenovo/x60/acpi/ec.asl129
-rw-r--r--src/mainboard/lenovo/x60/acpi/gpe.asl4
-rw-r--r--src/mainboard/lenovo/x60/acpi/lid.asl54
-rw-r--r--src/mainboard/lenovo/x60/acpi/sleepbutton.asl49
-rw-r--r--src/mainboard/lenovo/x60/acpi/systemstatus.asl66
-rw-r--r--src/mainboard/lenovo/x60/acpi/thermal.asl41
-rw-r--r--src/mainboard/lenovo/x60/devicetree.cb18
-rw-r--r--src/mainboard/lenovo/x60/dsdt.asl7
-rw-r--r--src/mainboard/lenovo/x60/mainboard.c62
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));