psy_cfg.of_node                 = pdev->dev.of_node;
        psy_cfg.drv_data                = cdata;
 
-       cdata->ac = power_supply_register(&pdev->dev, &tps65090_charger_desc,
+       cdata->ac = devm_power_supply_register(&pdev->dev, &tps65090_charger_desc,
                        &psy_cfg);
        if (IS_ERR(cdata->ac)) {
                dev_err(&pdev->dev, "failed: power supply register\n");
        ret = tps65090_config_charger(cdata);
        if (ret < 0) {
                dev_err(&pdev->dev, "charger config failed, err %d\n", ret);
-               goto fail_unregister_supply;
+               return ret;
        }
 
        /* Check for charger presence */
        if (ret < 0) {
                dev_err(cdata->dev, "%s(): Error in reading reg 0x%x", __func__,
                        TPS65090_REG_CG_STATUS1);
-               goto fail_unregister_supply;
+               return ret;
        }
 
        if (status1 != 0) {
                ret = tps65090_enable_charging(cdata);
                if (ret < 0) {
                        dev_err(cdata->dev, "error enabling charger\n");
-                       goto fail_unregister_supply;
+                       return ret;
                }
                cdata->ac_online = 1;
                power_supply_changed(cdata->ac);
                        dev_err(cdata->dev,
                                "Unable to register irq %d err %d\n", irq,
                                ret);
-                       goto fail_unregister_supply;
+                       return ret;
                }
        } else {
                cdata->poll_task = kthread_run(tps65090_charger_poll_task,
                        ret = PTR_ERR(cdata->poll_task);
                        dev_err(cdata->dev,
                                "Unable to run kthread err %d\n", ret);
-                       goto fail_unregister_supply;
+                       return ret;
                }
        }
 
        return 0;
-
-fail_unregister_supply:
-       power_supply_unregister(cdata->ac);
-
-       return ret;
 }
 
 static void tps65090_charger_remove(struct platform_device *pdev)
 
        if (cdata->irq == -ENXIO)
                kthread_stop(cdata->poll_task);
-       power_supply_unregister(cdata->ac);
 }
 
 static const struct of_device_id of_tps65090_charger_match[] = {