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 | |
| 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')
| -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 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); |
