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

power: supply: wm8350: 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/20240129190246.73067-5-afd@ti.com
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>

authored by

Andrew Davis and committed by
Sebastian Reichel
cad1e6df 478a253e

+7 -23
+7 -23
drivers/power/supply/wm8350_power.c
··· 540 540 struct wm8350_charger_policy *policy = power->policy; 541 541 int ret; 542 542 543 - power->ac = power_supply_register(&pdev->dev, &wm8350_ac_desc, NULL); 543 + power->ac = devm_power_supply_register(&pdev->dev, &wm8350_ac_desc, NULL); 544 544 if (IS_ERR(power->ac)) 545 545 return PTR_ERR(power->ac); 546 546 547 - power->battery = power_supply_register(&pdev->dev, &wm8350_battery_desc, 548 - NULL); 549 - if (IS_ERR(power->battery)) { 550 - ret = PTR_ERR(power->battery); 551 - goto battery_failed; 552 - } 547 + power->battery = devm_power_supply_register(&pdev->dev, &wm8350_battery_desc, NULL); 548 + if (IS_ERR(power->battery)) 549 + return PTR_ERR(power->battery); 553 550 554 - power->usb = power_supply_register(&pdev->dev, &wm8350_usb_desc, NULL); 555 - if (IS_ERR(power->usb)) { 556 - ret = PTR_ERR(power->usb); 557 - goto usb_failed; 558 - } 551 + power->usb = devm_power_supply_register(&pdev->dev, &wm8350_usb_desc, NULL); 552 + if (IS_ERR(power->usb)) 553 + return PTR_ERR(power->usb); 559 554 560 555 ret = device_create_file(&pdev->dev, &dev_attr_charger_state); 561 556 if (ret < 0) ··· 565 570 } 566 571 567 572 return ret; 568 - 569 - usb_failed: 570 - power_supply_unregister(power->battery); 571 - battery_failed: 572 - power_supply_unregister(power->ac); 573 - 574 - return ret; 575 573 } 576 574 577 575 static void wm8350_power_remove(struct platform_device *pdev) 578 576 { 579 577 struct wm8350 *wm8350 = platform_get_drvdata(pdev); 580 - struct wm8350_power *power = &wm8350->power; 581 578 582 579 free_charger_irq(wm8350); 583 580 device_remove_file(&pdev->dev, &dev_attr_charger_state); 584 - power_supply_unregister(power->battery); 585 - power_supply_unregister(power->ac); 586 - power_supply_unregister(power->usb); 587 581 } 588 582 589 583 static struct platform_driver wm8350_power_driver = {