if (current_accum)
                ds2760_battery_set_current_accum(di, current_accum);
 
-       di->bat = power_supply_register(dev, &di->bat_desc, &psy_cfg);
+       di->bat = devm_power_supply_register(dev, &di->bat_desc, &psy_cfg);
        if (IS_ERR(di->bat)) {
                dev_err(di->dev, "failed to register battery\n");
                retval = PTR_ERR(di->bat);
        goto success;
 
 workqueue_failed:
-       power_supply_unregister(di->bat);
 batt_failed:
 di_alloc_failed:
 success:
        cancel_delayed_work_sync(&di->monitor_work);
        cancel_delayed_work_sync(&di->set_charged_work);
        destroy_workqueue(di->monitor_wqueue);
-       power_supply_unregister(di->bat);
 }
 
 #ifdef CONFIG_OF