diff options
Diffstat (limited to 'drivers/acpi/battery.c')
-rw-r--r-- | drivers/acpi/battery.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c index 2a31421e0d75..68bc227e7c4c 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c | |||
@@ -631,6 +631,17 @@ static int acpi_battery_update(struct acpi_battery *battery) | |||
631 | return result; | 631 | return result; |
632 | } | 632 | } |
633 | 633 | ||
634 | static void acpi_battery_refresh(struct acpi_battery *battery) | ||
635 | { | ||
636 | if (!battery->bat.dev) | ||
637 | return; | ||
638 | |||
639 | acpi_battery_get_info(battery); | ||
640 | /* The battery may have changed its reporting units. */ | ||
641 | sysfs_remove_battery(battery); | ||
642 | sysfs_add_battery(battery); | ||
643 | } | ||
644 | |||
634 | /* -------------------------------------------------------------------------- | 645 | /* -------------------------------------------------------------------------- |
635 | FS Interface (/proc) | 646 | FS Interface (/proc) |
636 | -------------------------------------------------------------------------- */ | 647 | -------------------------------------------------------------------------- */ |
@@ -916,6 +927,8 @@ static void acpi_battery_notify(struct acpi_device *device, u32 event) | |||
916 | if (!battery) | 927 | if (!battery) |
917 | return; | 928 | return; |
918 | old = battery->bat.dev; | 929 | old = battery->bat.dev; |
930 | if (event == ACPI_BATTERY_NOTIFY_INFO) | ||
931 | acpi_battery_refresh(battery); | ||
919 | acpi_battery_update(battery); | 932 | acpi_battery_update(battery); |
920 | acpi_bus_generate_proc_event(device, event, | 933 | acpi_bus_generate_proc_event(device, event, |
921 | acpi_battery_present(battery)); | 934 | acpi_battery_present(battery)); |
@@ -985,6 +998,7 @@ static int acpi_battery_resume(struct acpi_device *device) | |||
985 | if (!device) | 998 | if (!device) |
986 | return -EINVAL; | 999 | return -EINVAL; |
987 | battery = acpi_driver_data(device); | 1000 | battery = acpi_driver_data(device); |
1001 | acpi_battery_refresh(battery); | ||
988 | battery->update_time = 0; | 1002 | battery->update_time = 0; |
989 | acpi_battery_update(battery); | 1003 | acpi_battery_update(battery); |
990 | return 0; | 1004 | return 0; |