diff options
author | Anton Vorontsov <cbou@mail.ru> | 2007-10-04 17:04:59 -0400 |
---|---|---|
committer | Anton Vorontsov <cbou@mail.ru> | 2007-10-04 17:04:59 -0400 |
commit | cd1ebcc0ef620e8e7c5e399bf9e123135e4f24a4 (patch) | |
tree | 644ce92be6c29ec341fc1f8e44d32ab18c1fda82 /drivers/power | |
parent | 804b3f9a16e446cb023417faec58b6506c834052 (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')
-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 39a90a6f0f8..32ebfd76722 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); |