summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica/acpi_cmbat.c
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2010-12-17 16:21:30 +0000
committeravg <avg@FreeBSD.org>2010-12-17 16:21:30 +0000
commit0193657b55ee30944be9a334c208f917a181a910 (patch)
tree78ff9bb29ee6571b135713d603493dfd5b97ba8f /sys/dev/acpica/acpi_cmbat.c
parentec7bafefbf6ca71e8d4b17f07256ae3b68e5c4ea (diff)
downloadFreeBSD-src-0193657b55ee30944be9a334c208f917a181a910.zip
FreeBSD-src-0193657b55ee30944be9a334c208f917a181a910.tar.gz
small cleanup of acpi battery status setting and checking
This is based on the patch submitted by Yuri Skripachov. Overview of the changes: - clarify double-use of some ACPI_BATT_STAT_* definitions - clean up undefined/extended status bits returned by _BST - warn about charging+discharging bits being set at the same time PR: kern/124744 Submitted by: Yuri Skripachov <y.skripachov@gmail.com> Tested by: Yuri Skripachov <y.skripachov@gmail.com> MFC after: 2 weeks
Diffstat (limited to 'sys/dev/acpica/acpi_cmbat.c')
-rw-r--r--sys/dev/acpica/acpi_cmbat.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/acpica/acpi_cmbat.c b/sys/dev/acpica/acpi_cmbat.c
index dde3ad5..6c6525d 100644
--- a/sys/dev/acpica/acpi_cmbat.c
+++ b/sys/dev/acpica/acpi_cmbat.c
@@ -279,6 +279,12 @@ acpi_cmbat_get_bst(void *arg)
goto end;
acpi_cmbat_info_updated(&sc->bst_lastupdated);
+ /* Clear out undefined/extended bits that might be set by hardware. */
+ sc->bst.state &= ACPI_BATT_STAT_BST_MASK;
+ if ((sc->bst.state & ACPI_BATT_STAT_INVALID) == ACPI_BATT_STAT_INVALID)
+ ACPI_VPRINT(dev, acpi_device_get_parent_softc(dev),
+ "battery reports simultaneous charging and discharging\n");
+
/* XXX If all batteries are critical, perhaps we should suspend. */
if (sc->bst.state & ACPI_BATT_STAT_CRITICAL) {
if ((sc->flags & ACPI_BATT_STAT_CRITICAL) == 0) {
OpenPOWER on IntegriCloud