Commit 3b4d07fd authored by Andrew Davis's avatar Andrew Davis Committed by Sebastian Reichel

power: supply: lp8727: Use devm_power_supply_register() helper

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: default avatarAndrew Davis <afd@ti.com>
Link: https://lore.kernel.org/r/20240123163653.384385-6-afd@ti.comSigned-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent ada63f1e
...@@ -453,39 +453,20 @@ static int lp8727_register_psy(struct lp8727_chg *pchg) ...@@ -453,39 +453,20 @@ static int lp8727_register_psy(struct lp8727_chg *pchg)
psy_cfg.supplied_to = battery_supplied_to; psy_cfg.supplied_to = battery_supplied_to;
psy_cfg.num_supplicants = ARRAY_SIZE(battery_supplied_to); psy_cfg.num_supplicants = ARRAY_SIZE(battery_supplied_to);
psy->ac = power_supply_register(pchg->dev, &lp8727_ac_desc, &psy_cfg); psy->ac = devm_power_supply_register(pchg->dev, &lp8727_ac_desc, &psy_cfg);
if (IS_ERR(psy->ac)) if (IS_ERR(psy->ac))
goto err_psy_ac; return -EPERM;
psy->usb = power_supply_register(pchg->dev, &lp8727_usb_desc, psy->usb = devm_power_supply_register(pchg->dev, &lp8727_usb_desc,
&psy_cfg); &psy_cfg);
if (IS_ERR(psy->usb)) if (IS_ERR(psy->usb))
goto err_psy_usb; return -EPERM;
psy->batt = power_supply_register(pchg->dev, &lp8727_batt_desc, NULL); psy->batt = devm_power_supply_register(pchg->dev, &lp8727_batt_desc, NULL);
if (IS_ERR(psy->batt)) if (IS_ERR(psy->batt))
goto err_psy_batt; return -EPERM;
return 0; return 0;
err_psy_batt:
power_supply_unregister(psy->usb);
err_psy_usb:
power_supply_unregister(psy->ac);
err_psy_ac:
return -EPERM;
}
static void lp8727_unregister_psy(struct lp8727_chg *pchg)
{
struct lp8727_psy *psy = pchg->psy;
if (!psy)
return;
power_supply_unregister(psy->ac);
power_supply_unregister(psy->usb);
power_supply_unregister(psy->batt);
} }
#ifdef CONFIG_OF #ifdef CONFIG_OF
...@@ -583,7 +564,6 @@ static int lp8727_probe(struct i2c_client *cl) ...@@ -583,7 +564,6 @@ static int lp8727_probe(struct i2c_client *cl)
ret = lp8727_setup_irq(pchg); ret = lp8727_setup_irq(pchg);
if (ret) { if (ret) {
dev_err(pchg->dev, "irq handler err: %d", ret); dev_err(pchg->dev, "irq handler err: %d", ret);
lp8727_unregister_psy(pchg);
return ret; return ret;
} }
...@@ -595,7 +575,6 @@ static void lp8727_remove(struct i2c_client *cl) ...@@ -595,7 +575,6 @@ static void lp8727_remove(struct i2c_client *cl)
struct lp8727_chg *pchg = i2c_get_clientdata(cl); struct lp8727_chg *pchg = i2c_get_clientdata(cl);
lp8727_release_irq(pchg); lp8727_release_irq(pchg);
lp8727_unregister_psy(pchg);
} }
static const struct of_device_id lp8727_dt_ids[] __maybe_unused = { static const struct of_device_id lp8727_dt_ids[] __maybe_unused = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment