if (error)
                goto fail;
 
-       if (!(features->device_type & WACOM_DEVICETYPE_WL_MONITOR) &&
-            (features->quirks & WACOM_QUIRK_BATTERY)) {
-               error = wacom_initialize_battery(wacom);
-               if (error)
-                       goto fail;
-       }
-
        error = wacom_register_inputs(wacom);
        if (error)
                goto fail;
 
                strscpy(wacom_wac->name, wacom_wac1->name,
                        sizeof(wacom_wac->name));
-               error = wacom_initialize_battery(wacom);
-               if (error)
-                       goto fail;
        }
 
        return;
 
        bool bat_connected, bool ps_connected)
 {
        struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac);
+       bool bat_initialized = wacom->battery.battery;
+       bool has_quirk = wacom_wac->features.quirks & WACOM_QUIRK_BATTERY;
+
+       if (bat_initialized != has_quirk)
+               wacom_schedule_work(wacom_wac, WACOM_WORKER_BATTERY);
 
        __wacom_notify_battery(&wacom->battery, bat_status, bat_capacity,
                               bat_charging, bat_connected, ps_connected);
                int battery = (data[8] & 0x3f) * 100 / 31;
                bool charging = !!(data[8] & 0x80);
 
+               features->quirks |= WACOM_QUIRK_BATTERY;
                wacom_notify_battery(wacom_wac, WACOM_POWER_SUPPLY_STATUS_AUTO,
                                     battery, charging, battery || charging, 1);
-
-               if (!wacom->battery.battery &&
-                   !(features->quirks & WACOM_QUIRK_BATTERY)) {
-                       features->quirks |= WACOM_QUIRK_BATTERY;
-                       wacom_schedule_work(wacom_wac, WACOM_WORKER_BATTERY);
-               }
        }
        else if ((features->quirks & WACOM_QUIRK_BATTERY) &&
                 wacom->battery.battery) {
                features->quirks &= ~WACOM_QUIRK_BATTERY;
-               wacom_schedule_work(wacom_wac, WACOM_WORKER_BATTERY);
                wacom_notify_battery(wacom_wac, POWER_SUPPLY_STATUS_UNKNOWN, 0, 0, 0, 0);
        }
        return 0;