aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/power/apm_power.c
diff options
context:
space:
mode:
authorAnton Vorontsov <cbou@mail.ru>2007-10-04 17:04:59 -0400
committerAnton Vorontsov <cbou@mail.ru>2007-10-04 17:04:59 -0400
commitcd1ebcc0ef620e8e7c5e399bf9e123135e4f24a4 (patch)
tree644ce92be6c29ec341fc1f8e44d32ab18c1fda82 /drivers/power/apm_power.c
parent804b3f9a16e446cb023417faec58b6506c834052 (diff)
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/apm_power.c')
-rw-r--r--drivers/power/apm_power.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/power/apm_power.c b/drivers/power/apm_power.c
index 39a90a6f0f80..32ebfd76722a 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)
200 info->units = APM_UNITS_MINS; 200 info->units = APM_UNITS_MINS;
201 201
202 if (status.intval == POWER_SUPPLY_STATUS_CHARGING) { 202 if (status.intval == POWER_SUPPLY_STATUS_CHARGING) {
203 if (MPSY_PROP(TIME_TO_FULL_AVG, &time_to_full)) { 203 if (!MPSY_PROP(TIME_TO_FULL_AVG, &time_to_full) ||
204 if (MPSY_PROP(TIME_TO_FULL_NOW, &time_to_full)) 204 !MPSY_PROP(TIME_TO_FULL_NOW, &time_to_full))
205 info->time = calculate_time(status.intval); 205 info->time = time_to_full.intval / 60;
206 else 206 else
207 info->time = time_to_full.intval / 60; 207 info->time = calculate_time(status.intval);
208 }
209 } else { 208 } else {
210 if (MPSY_PROP(TIME_TO_EMPTY_AVG, &time_to_empty)) { 209 if (!MPSY_PROP(TIME_TO_EMPTY_AVG, &time_to_empty) ||
211 if (MPSY_PROP(TIME_TO_EMPTY_NOW, &time_to_empty)) 210 !MPSY_PROP(TIME_TO_EMPTY_NOW, &time_to_empty))
212 info->time = calculate_time(status.intval); 211 info->time = time_to_empty.intval / 60;
213 else 212 else
214 info->time = time_to_empty.intval / 60; 213 info->time = calculate_time(status.intval);
215 }
216 } 214 }
217 215
218 up(&power_supply_class->sem); 216 up(&power_supply_class->sem);