Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: Andrew Davis <afd@ti.com>
Link: https://lore.kernel.org/r/20240123163653.384385-6-afd@ti.com
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>

authored by

Andrew Davis and committed by
Sebastian Reichel
3b4d07fd ada63f1e

+7 -28
+7 -28
drivers/power/supply/lp8727_charger.c
··· 453 453 psy_cfg.supplied_to = battery_supplied_to; 454 454 psy_cfg.num_supplicants = ARRAY_SIZE(battery_supplied_to); 455 455 456 - psy->ac = power_supply_register(pchg->dev, &lp8727_ac_desc, &psy_cfg); 456 + psy->ac = devm_power_supply_register(pchg->dev, &lp8727_ac_desc, &psy_cfg); 457 457 if (IS_ERR(psy->ac)) 458 - goto err_psy_ac; 458 + return -EPERM; 459 459 460 - psy->usb = power_supply_register(pchg->dev, &lp8727_usb_desc, 461 - &psy_cfg); 460 + psy->usb = devm_power_supply_register(pchg->dev, &lp8727_usb_desc, 461 + &psy_cfg); 462 462 if (IS_ERR(psy->usb)) 463 - goto err_psy_usb; 463 + return -EPERM; 464 464 465 - psy->batt = power_supply_register(pchg->dev, &lp8727_batt_desc, NULL); 465 + psy->batt = devm_power_supply_register(pchg->dev, &lp8727_batt_desc, NULL); 466 466 if (IS_ERR(psy->batt)) 467 - goto err_psy_batt; 467 + return -EPERM; 468 468 469 469 return 0; 470 - 471 - err_psy_batt: 472 - power_supply_unregister(psy->usb); 473 - err_psy_usb: 474 - power_supply_unregister(psy->ac); 475 - err_psy_ac: 476 - return -EPERM; 477 - } 478 - 479 - static void lp8727_unregister_psy(struct lp8727_chg *pchg) 480 - { 481 - struct lp8727_psy *psy = pchg->psy; 482 - 483 - if (!psy) 484 - return; 485 - 486 - power_supply_unregister(psy->ac); 487 - power_supply_unregister(psy->usb); 488 - power_supply_unregister(psy->batt); 489 470 } 490 471 491 472 #ifdef CONFIG_OF ··· 564 583 ret = lp8727_setup_irq(pchg); 565 584 if (ret) { 566 585 dev_err(pchg->dev, "irq handler err: %d", ret); 567 - lp8727_unregister_psy(pchg); 568 586 return ret; 569 587 } 570 588 ··· 575 595 struct lp8727_chg *pchg = i2c_get_clientdata(cl); 576 596 577 597 lp8727_release_irq(pchg); 578 - lp8727_unregister_psy(pchg); 579 598 } 580 599 581 600 static const struct of_device_id lp8727_dt_ids[] __maybe_unused = {