[coreboot-gerrit] Patch set updated for coreboot: ec/lenovo/h8: Support an optional battery page flip delay
Tobias Diedrich (ranma+coreboot@tdiedrich.de)
gerrit at coreboot.org
Wed Feb 22 00:53:54 CET 2017
Tobias Diedrich (ranma+coreboot at tdiedrich.de) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18348
-gerrit
commit 1832089269dc7b0a9a29d4a38097b75a7ecc727c
Author: Tobias Diedrich <ranma+openocd at tdiedrich.de>
Date: Sun Feb 12 13:16:18 2017 +0100
ec/lenovo/h8: Support an optional battery page flip delay
The Lenovo H8 battery interface uses a paged EC memory area.
Some Thinkpads use a different EC controller (ENE KB9012) with mostly
compatible firmware, which requires an explicit delay between writing
the page register and reading the page data.
Change-Id: Iaeb8c4829efa29139396b519de803f10dd93f03f
Signed-off-by: Tobias Diedrich <ranma+coreboot at tdiedrich.de>
---
src/ec/lenovo/h8/acpi/battery.asl | 30 ++++++++++++++++++++++--------
1 file changed, 22 insertions(+), 8 deletions(-)
diff --git a/src/ec/lenovo/h8/acpi/battery.asl b/src/ec/lenovo/h8/acpi/battery.asl
index 0ebc9ee..b334d49 100644
--- a/src/ec/lenovo/h8/acpi/battery.asl
+++ b/src/ec/lenovo/h8/acpi/battery.asl
@@ -84,6 +84,20 @@ Field (ERAM, ByteAcc, NoLock, Preserve)
BANA, 128
}
+/*
+ * Switches the battery information page (16 bytes ERAM @0xa0).
+ * Arg0:
+ * bit7-4: Battery number
+ * bit3-0: Information page number
+ */
+Method(BPAG, 1, NotSerialized)
+{
+ Store(Arg0, PAGE)
+#ifdef BATTERY_PAGE_DELAY_MS
+ Sleep(BATTERY_PAGE_DELAY_MS)
+#endif
+}
+
/* Arg0: Battery
* Arg1: Battery Status Package
* Arg2: charging
@@ -93,9 +107,9 @@ Method(BSTA, 4, NotSerialized)
{
Acquire(ECLK, 0xffff)
Store(0, Local0)
- Or(1, Arg0, PAGE)
+ ^BPAG(Or(1, Arg0))
Store(BAMA, Local1)
- Store(Arg0, PAGE) /* Battery dynamic information */
+ ^BPAG(Arg0) /* Battery dynamic information */
Store(BAPR, Local2)
@@ -132,12 +146,12 @@ Method(BSTA, 4, NotSerialized)
Method(BINF, 2, NotSerialized)
{
Acquire(ECLK, 0xffff)
- Or(1, Arg1, PAGE) /* Battery 0 static information */
+ ^BPAG(Or(1, Arg1)) /* Battery 0 static information */
Xor(BAMA, 1, Index(Arg0, 0))
Store(BAMA, Local0)
- Store(Arg1, PAGE)
+ ^BPAG(Arg1)
Store(BAFC, Local2)
- Or(2, Arg1, PAGE)
+ ^BPAG(Or(2, Arg1))
Store(BADC, Local1)
if (Local0)
@@ -162,13 +176,13 @@ Method(BINF, 2, NotSerialized)
}
Store (SERN, Index (Arg0, 10)) // Serial Number
- Or(4, Arg1, PAGE)
+ ^BPAG(Or(4, Arg1))
Name (TYPE, Buffer() { 0, 0, 0, 0, 0 })
Store(BATY, TYPE)
Store(TYPE, Index (Arg0, 11)) // Battery type
- Or(5, Arg1, PAGE)
+ ^BPAG(Or(5, Arg1))
Store(BAOE, Index (Arg0, 12)) // OEM information
- Or(6, Arg1, PAGE)
+ ^BPAG(Or(6, Arg1))
Store(BANA, Index (Arg0, 9)) // Model number
Release(ECLK)
Return (Arg0)
More information about the coreboot-gerrit
mailing list