summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Whitcroft2012-05-03 15:48:26 +0200
committerLen Brown2012-05-08 07:49:57 +0200
commitc5971456964290da7e98222892797b71ef793e62 (patch)
tree6fc98ba750ce3542024f64f2de1a44ae7fe12e06
parentIA32 emulation: Fix build problem for modular ia32 a.out support (diff)
downloadkernel-qcow2-linux-c5971456964290da7e98222892797b71ef793e62.tar.gz
kernel-qcow2-linux-c5971456964290da7e98222892797b71ef793e62.tar.xz
kernel-qcow2-linux-c5971456964290da7e98222892797b71ef793e62.zip
ACPI battery: only refresh the sysfs files when pertinent information changes
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) cc: <stable@vger.kernel.org> Signed-off-by: Andy Whitcroft <apw@canonical.com> Tested-by: Ralf Jung <post@ralfj.de> Signed-off-by: Len Brown <len.brown@intel.com>
-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 86933ca8b472..7dd3f9fb9f3f 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -643,11 +643,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);
}