summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica
diff options
context:
space:
mode:
authormarks <marks@FreeBSD.org>2004-07-14 19:31:31 +0000
committermarks <marks@FreeBSD.org>2004-07-14 19:31:31 +0000
commit7e3605cbad161878370bf11e7de47b56fa55ce00 (patch)
tree2b2e8e57c8c421564ffd9d7ae2aa9e3e7338efb9 /sys/dev/acpica
parent7b09b25ecb2d9e5be9c06e81ce89a7c5d347bb6f (diff)
downloadFreeBSD-src-7e3605cbad161878370bf11e7de47b56fa55ce00.zip
FreeBSD-src-7e3605cbad161878370bf11e7de47b56fa55ce00.tar.gz
Some laptops report the "design-capacity" instead of the "real-capacity"
when the battery is fully charged. That breaks some of the arithmetic in calculating the remaining capacity (ends up with more than 100%). This commit makes sure the max is 100. Approved by: njl
Diffstat (limited to 'sys/dev/acpica')
-rw-r--r--sys/dev/acpica/acpi_cmbat.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/acpica/acpi_cmbat.c b/sys/dev/acpica/acpi_cmbat.c
index ec6730e..bf859e8 100644
--- a/sys/dev/acpica/acpi_cmbat.c
+++ b/sys/dev/acpica/acpi_cmbat.c
@@ -519,6 +519,15 @@ acpi_cmbat_get_total_battinfo(struct acpi_battinfo *battinfo)
valid_units++;
bat[i]->cap = 100 * bat[i]->bst.cap / bat[i]->bif.lfcap;
+
+ /*
+ * Some laptops report the "design-capacity" instead of the
+ * "real-capacity" when the battery is fully charged.
+ * That breaks the above arithmetic as it needs to be 100% maximum.
+ */
+ if (bat[i]->cap > 100)
+ bat[i]->cap = 100;
+
batt_stat |= bat[i]->bst.state;
if (bat[i]->bst.rate > 0) {
OpenPOWER on IntegriCloud