struct acpi_battery {
        acpi_handle handle;
+       struct acpi_device * device;
        struct acpi_battery_flags flags;
        struct acpi_battery_trips trips;
        unsigned long alarm;
        if (!battery)
                return -EINVAL;
 
-       result = acpi_bus_get_device(battery->handle, &device);
-       if (result)
-               return result;
+       device = battery->device;
 
        result = acpi_bus_get_status(device);
        if (result)
        if (!battery)
                return;
 
-       if (acpi_bus_get_device(handle, &device))
-               return;
+       device = battery->device;
 
        switch (event) {
        case ACPI_BATTERY_NOTIFY_STATUS:
        memset(battery, 0, sizeof(struct acpi_battery));
 
        battery->handle = device->handle;
+       battery->device = device;
        strcpy(acpi_device_name(device), ACPI_BATTERY_DEVICE_NAME);
        strcpy(acpi_device_class(device), ACPI_BATTERY_CLASS);
        acpi_driver_data(device) = battery;