summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Whitcroft <apw@canonical.com>2012-05-03 14:48:26 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-06-10 00:33:05 +0900
commitb8d3d5a553b423ab3676554aeddf30dc6ededbcb (patch)
tree0b556918adab98eac900b7a9c33bb7c742c195e4
parent284cbb43179add9bf88083535bc39f43d16e6668 (diff)
downloadlwn-b8d3d5a553b423ab3676554aeddf30dc6ededbcb.tar.gz
lwn-b8d3d5a553b423ab3676554aeddf30dc6ededbcb.zip
ACPI battery: only refresh the sysfs files when pertinent information changes
commit c5971456964290da7e98222892797b71ef793e62 upstream. We only need to regenerate the sysfs files when the capacity units change, avoid the update otherwise. The origin of this issue is dates way back to 2.6.38: da8aeb92d4853f37e281f11fddf61f9c7d84c3cd (ACPI / Battery: Update information on info notification and resume) Signed-off-by: Andy Whitcroft <apw@canonical.com> Tested-by: Ralf Jung <post@ralfj.de> Signed-off-by: Len Brown <len.brown@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/acpi/battery.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index fcc13ac0aa18..d77c97de9e73 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -635,11 +635,19 @@ static int acpi_battery_update(struct acpi_battery *battery)
static void acpi_battery_refresh(struct acpi_battery *battery)
{
+ int power_unit;
+
if (!battery->bat.dev)
return;
+ power_unit = battery->power_unit;
+
acpi_battery_get_info(battery);
- /* The battery may have changed its reporting units. */
+
+ if (power_unit == battery->power_unit)
+ return;
+
+ /* The battery has changed its reporting units. */
sysfs_remove_battery(battery);
sysfs_add_battery(battery);
}