diff options
author | Anton Vorontsov <cbou@mail.ru> | 2007-10-05 01:04:59 +0400 |
---|---|---|
committer | Anton Vorontsov <cbou@mail.ru> | 2007-10-05 01:04:59 +0400 |
commit | cd1ebcc0ef620e8e7c5e399bf9e123135e4f24a4 (patch) | |
tree | 644ce92be6c29ec341fc1f8e44d32ab18c1fda82 /drivers/power | |
parent | 804b3f9a16e446cb023417faec58b6506c834052 (diff) | |
download | op-kernel-dev-cd1ebcc0ef620e8e7c5e399bf9e123135e4f24a4.zip op-kernel-dev-cd1ebcc0ef620e8e7c5e399bf9e123135e4f24a4.tar.gz |
apm_power: fix obviously wrong logic for time reporting
Prior to this patch, apm_power was unable to report "to empty"/"to full"
time for batteries that hardware-report these values, such as
Apple PMU batteries.
Signed-off-by: Anton Vorontsov <cbou@mail.ru>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/apm_power.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/power/apm_power.c b/drivers/power/apm_power.c index 39a90a6..32ebfd7 100644 --- a/drivers/power/apm_power.c +++ b/drivers/power/apm_power.c @@ -200,19 +200,17 @@ static void apm_battery_apm_get_power_status(struct apm_power_info *info) info->units = APM_UNITS_MINS; if (status.intval == POWER_SUPPLY_STATUS_CHARGING) { - if (MPSY_PROP(TIME_TO_FULL_AVG, &time_to_full)) { - if (MPSY_PROP(TIME_TO_FULL_NOW, &time_to_full)) - info->time = calculate_time(status.intval); - else - info->time = time_to_full.intval / 60; - } + if (!MPSY_PROP(TIME_TO_FULL_AVG, &time_to_full) || + !MPSY_PROP(TIME_TO_FULL_NOW, &time_to_full)) + info->time = time_to_full.intval / 60; + else + info->time = calculate_time(status.intval); } else { - if (MPSY_PROP(TIME_TO_EMPTY_AVG, &time_to_empty)) { - if (MPSY_PROP(TIME_TO_EMPTY_NOW, &time_to_empty)) - info->time = calculate_time(status.intval); - else - info->time = time_to_empty.intval / 60; - } + if (!MPSY_PROP(TIME_TO_EMPTY_AVG, &time_to_empty) || + !MPSY_PROP(TIME_TO_EMPTY_NOW, &time_to_empty)) + info->time = time_to_empty.intval / 60; + else + info->time = calculate_time(status.intval); } up(&power_supply_class->sem); |