aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/battery.c22
1 files changed, 5 insertions, 17 deletions
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index b0de6312919a..eb00c4e3747a 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -796,13 +796,12 @@ static void acpi_battery_remove_fs(struct acpi_device *device)
796 Driver Interface 796 Driver Interface
797 -------------------------------------------------------------------------- */ 797 -------------------------------------------------------------------------- */
798 798
799static void acpi_battery_notify(acpi_handle handle, u32 event, void *data) 799static void acpi_battery_notify(struct acpi_device *device, u32 event)
800{ 800{
801 struct acpi_battery *battery = data; 801 struct acpi_battery *battery = acpi_driver_data(device);
802 struct acpi_device *device; 802
803 if (!battery) 803 if (!battery)
804 return; 804 return;
805 device = battery->device;
806 acpi_battery_update(battery); 805 acpi_battery_update(battery);
807 acpi_bus_generate_proc_event(device, event, 806 acpi_bus_generate_proc_event(device, event,
808 acpi_battery_present(battery)); 807 acpi_battery_present(battery));
@@ -819,7 +818,6 @@ static void acpi_battery_notify(acpi_handle handle, u32 event, void *data)
819static int acpi_battery_add(struct acpi_device *device) 818static int acpi_battery_add(struct acpi_device *device)
820{ 819{
821 int result = 0; 820 int result = 0;
822 acpi_status status = 0;
823 struct acpi_battery *battery = NULL; 821 struct acpi_battery *battery = NULL;
824 if (!device) 822 if (!device)
825 return -EINVAL; 823 return -EINVAL;
@@ -837,14 +835,6 @@ static int acpi_battery_add(struct acpi_device *device)
837 if (result) 835 if (result)
838 goto end; 836 goto end;
839#endif 837#endif
840 status = acpi_install_notify_handler(device->handle,
841 ACPI_ALL_NOTIFY,
842 acpi_battery_notify, battery);
843 if (ACPI_FAILURE(status)) {
844 ACPI_EXCEPTION((AE_INFO, status, "Installing notify handler"));
845 result = -ENODEV;
846 goto end;
847 }
848 printk(KERN_INFO PREFIX "%s Slot [%s] (battery %s)\n", 838 printk(KERN_INFO PREFIX "%s Slot [%s] (battery %s)\n",
849 ACPI_BATTERY_DEVICE_NAME, acpi_device_bid(device), 839 ACPI_BATTERY_DEVICE_NAME, acpi_device_bid(device),
850 device->status.battery_present ? "present" : "absent"); 840 device->status.battery_present ? "present" : "absent");
@@ -860,15 +850,11 @@ static int acpi_battery_add(struct acpi_device *device)
860 850
861static int acpi_battery_remove(struct acpi_device *device, int type) 851static int acpi_battery_remove(struct acpi_device *device, int type)
862{ 852{
863 acpi_status status = 0;
864 struct acpi_battery *battery = NULL; 853 struct acpi_battery *battery = NULL;
865 854
866 if (!device || !acpi_driver_data(device)) 855 if (!device || !acpi_driver_data(device))
867 return -EINVAL; 856 return -EINVAL;
868 battery = acpi_driver_data(device); 857 battery = acpi_driver_data(device);
869 status = acpi_remove_notify_handler(device->handle,
870 ACPI_ALL_NOTIFY,
871 acpi_battery_notify);
872#ifdef CONFIG_ACPI_PROCFS_POWER 858#ifdef CONFIG_ACPI_PROCFS_POWER
873 acpi_battery_remove_fs(device); 859 acpi_battery_remove_fs(device);
874#endif 860#endif
@@ -896,10 +882,12 @@ static struct acpi_driver acpi_battery_driver = {
896 .name = "battery", 882 .name = "battery",
897 .class = ACPI_BATTERY_CLASS, 883 .class = ACPI_BATTERY_CLASS,
898 .ids = battery_device_ids, 884 .ids = battery_device_ids,
885 .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS,
899 .ops = { 886 .ops = {
900 .add = acpi_battery_add, 887 .add = acpi_battery_add,
901 .resume = acpi_battery_resume, 888 .resume = acpi_battery_resume,
902 .remove = acpi_battery_remove, 889 .remove = acpi_battery_remove,
890 .notify = acpi_battery_notify,
903 }, 891 },
904}; 892};
905 893