diff options
author | avg <avg@FreeBSD.org> | 2010-12-17 16:21:30 +0000 |
---|---|---|
committer | avg <avg@FreeBSD.org> | 2010-12-17 16:21:30 +0000 |
commit | 0193657b55ee30944be9a334c208f917a181a910 (patch) | |
tree | 78ff9bb29ee6571b135713d603493dfd5b97ba8f /sys/dev/acpica/acpi_cmbat.c | |
parent | ec7bafefbf6ca71e8d4b17f07256ae3b68e5c4ea (diff) | |
download | FreeBSD-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.c | 6 |
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) { |