Bug 61101
Summary: | Second battery is not used on Asus TX300 | ||
---|---|---|---|
Product: | Platform Specific/Hardware | Reporter: | jkp (jkp) |
Component: | x86-64 | Assignee: | platform_x86_64 (platform_x86_64) |
Status: | NEW --- | ||
Severity: | high | CC: | foivos, jkp, joaquim.ortega, szg00000, yoann.losbar |
Priority: | P1 | ||
Hardware: | x86-64 | ||
OS: | Linux | ||
Kernel Version: | 3.11 | Subsystem: | |
Regression: | No | Bisected commit-id: |
Description
jkp
2013-09-10 08:03:02 UTC
With win8, "battery up" mode is automatically switched off when the power supply is plugged in, but on Linux, machine stays in "battery up" mode even when power supply is plugged in. Anyone with suggestions on how to progess? ACPI decompilation seems to give some info, would be useful if someone familiar with ACPI would take a look. I ran the following to get some info on the ACPI messages above. Q86 is described as DOCK OUT EVENT. Can't find anything which would obviously tell something about how to control “BATTERY UP” mode, but I don't know much about ACPI so I'm not good at looking. cat /sys/firmware/acpi/tables/DSDT > dsdt.dat iasl -d dsdt.dat Found what looks like a tablet (pad) / notebook (nb) mode switch, perhaps this is relevant. If (LEqual (IIA0, 0x00120062)) { MNIO (" call set PAD/NB MODE\n") If (FSPM) { Return (Zero) } MNIO ("TO SER PAD/NB MODE :") MNIO (IIA1) MNIO ("\n") If (IIA1) { ^^PCI0.LPCB.EC0.WRAM (0x07B1, Zero) } Else { ^^PCI0.LPCB.EC0.WRAM (0x07B1, One) } Return (One) } } Some code handling two batteries: If (LEqual (IIA0, 0x00120047)) { If (And (^^PCI0.LPCB.EC0.EPWS, 0x06)) { Store (Zero, Local1) If (LEqual (Local0, 0x02)) { Store (^^PCI0.LPCB.EC0.B0DV, Local1) } Else { If (LEqual (Local0, 0x04)) { Store (^^PCI0.LPCB.EC0.B1DV, Local1) } Else { Store (Add (^^PCI0.LPCB.EC0.B0DV, ^^PCI0.LPCB.EC0.B1DV), Local1) } } Return (Add (Local1, 0x00010000)) } This, too, seems to handle two batteries: If (LEqual (IIA0, 0x00120049)) { If (And (^^PCI0.LPCB.EC0.EPWS, 0x06)) { Store (Zero, Local1) If (LEqual (Local0, 0x02)) { Store (^^PCI0.LPCB.EC0.B0FC, Local1) } Else { If (LEqual (Local0, 0x04)) { Store (^^PCI0.LPCB.EC0.B1FC, Local1) } Else { Store (Add (^^PCI0.LPCB.EC0.B0FC, ^^PCI0.LPCB.EC0.B1FC), Local1) } } Return (Add (Local1, 0x00010000)) } |