Bug 218343
Summary: | discharge rate not reported | ||
---|---|---|---|
Product: | ACPI | Reporter: | Marc Dietrich (marvin24) |
Component: | Power-Battery | Assignee: | acpi_power-battery |
Status: | RESOLVED INVALID | ||
Severity: | normal | ||
Priority: | P3 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | Subsystem: | ||
Regression: | No | Bisected commit-id: | |
Attachments: | dsdt.dsl |
Description
Marc Dietrich
2024-01-04 15:55:28 UTC
Created attachment 305679 [details]
dsdt.dsl
I checked the _BST method with acpidbg (not going further) and it seems that it really returns -1: - Evaluate _SB_.BAT0._BST Evaluating \_SB_.BAT0._BST Evaluation of \_SB_.BAT0._BST returned object 0000000035df6af1, external buffer length 78 [Package] Contains 4 Elements: [Integer] = 0000000000000001 [Integer] = 00000000FFFFFFFF [Integer] = 0000000000000DD9 [Integer] = 0000000000003056 so I guess it's a firmware bug or a feature. The diagnosis of the UEFI Bios however is able to get the current within a few seconds. Maybe there is some proprietary way to get battery current. Closing. I guess this one here is the FW bug (from \_SB_.PCI0.LPCB.EC0_.BTST) DerefOf (NBST [Arg0]) [Zero] = Local0 // Battery state If ((Local0 & One)) // discharging ? { // yes -> range check of current rate (local3) If (((Local3 < 0x0190) || (Local3 > 0x1964))) { // out of range? use old rate Local5 = DerefOf (DerefOf (NBST [Arg0]) [One]) // also out of range? If (((Local5 < 0x0190) || (Local5 > 0x1964))) { Local3 = 0x0D7A // 3450 } Else { Local3 = Local5 // old rate } } // ups, now always overwrite current rate with -1 ! Local3 = 0xFFFFFFFF } ElseIf (((Local0 & 0x02) == Zero)) // not charging? { Local3 = Zero } So, I guess clearly a FW bug, a direct call to \_SB_.PCI0.LPCB.EC0_.BPR_ gives the correct current while discharging and charging. |