power: supply: tps65090: Use devm_power_supply_register() helper
authorAndrew Davis <afd@ti.com>
Tue, 23 Jan 2024 16:36:44 +0000 (10:36 -0600)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Sat, 27 Jan 2024 00:25:04 +0000 (01:25 +0100)
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.

Signed-off-by: Andrew Davis <afd@ti.com>
Link: https://lore.kernel.org/r/20240123163653.384385-13-afd@ti.com
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/tps65090-charger.c

index c59197d2aa87d9fc2be3099dbbb3590f47bb764b..d41595764caa52baeb731449661fba516c5de743 100644 (file)
@@ -262,7 +262,7 @@ static int tps65090_charger_probe(struct platform_device *pdev)
        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");
@@ -277,7 +277,7 @@ static int tps65090_charger_probe(struct platform_device *pdev)
        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 */
@@ -286,14 +286,14 @@ static int tps65090_charger_probe(struct platform_device *pdev)
        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);
@@ -306,7 +306,7 @@ static int tps65090_charger_probe(struct platform_device *pdev)
                        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,
@@ -316,16 +316,11 @@ static int tps65090_charger_probe(struct platform_device *pdev)
                        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)
@@ -334,7 +329,6 @@ 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[] = {