* due to bad math.
*/
ACPI_BATTERY_QUIRK_SIGNED16_CURRENT,
- ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY,
};
struct acpi_battery {
result = extract_package(battery, buffer.pointer,
info_offsets, ARRAY_SIZE(info_offsets));
kfree(buffer.pointer);
- if (test_bit(ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, &battery->flags))
- battery->full_charge_capacity = battery->design_capacity;
return result;
}
battery->rate_now != -1)
battery->rate_now = abs((s16)battery->rate_now);
- if (test_bit(ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, &battery->flags)
- && battery->capacity_now >= 0 && battery->capacity_now <= 100)
- battery->capacity_now = (battery->capacity_now *
- battery->full_charge_capacity) / 100;
return result;
}
}
}
-/*
- * According to the ACPI spec, some kinds of primary batteries can
- * report percentage battery remaining capacity directly to OS.
- * In this case, it reports the Last Full Charged Capacity == 100
- * and BatteryPresentRate == 0xFFFFFFFF.
- *
- * Now we found some battery reports percentage remaining capacity
- * even if it's rechargeable.
- * https://bugzilla.kernel.org/show_bug.cgi?id=15979
- *
- * Handle this correctly so that they won't break userspace.
- */
-static void acpi_battery_quirks2(struct acpi_battery *battery)
-{
- if (test_bit(ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, &battery->flags))
- return ;
-
- if (battery->full_charge_capacity == 100 &&
- battery->rate_now == ACPI_BATTERY_VALUE_UNKNOWN &&
- battery->capacity_now >=0 && battery->capacity_now <= 100) {
- set_bit(ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, &battery->flags);
- battery->full_charge_capacity = battery->design_capacity;
- battery->capacity_now = (battery->capacity_now *
- battery->full_charge_capacity) / 100;
- }
-}
-
static int acpi_battery_update(struct acpi_battery *battery)
{
int result, old_present = acpi_battery_present(battery);
if (!battery->bat.dev)
sysfs_add_battery(battery);
#endif
- result = acpi_battery_get_state(battery);
- acpi_battery_quirks2(battery);
- return result;
+ return acpi_battery_get_state(battery);
}
/* --------------------------------------------------------------------------