diff options
author | marks <marks@FreeBSD.org> | 2004-07-14 19:31:31 +0000 |
---|---|---|
committer | marks <marks@FreeBSD.org> | 2004-07-14 19:31:31 +0000 |
commit | 7e3605cbad161878370bf11e7de47b56fa55ce00 (patch) | |
tree | 2b2e8e57c8c421564ffd9d7ae2aa9e3e7338efb9 | |
parent | 7b09b25ecb2d9e5be9c06e81ce89a7c5d347bb6f (diff) | |
download | FreeBSD-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
-rw-r--r-- | sys/dev/acpica/acpi_cmbat.c | 9 |
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) { |