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

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

authored by

Andrew Davis and committed by
Sebastian Reichel
f2a7667c aa0c8959

+9 -15
+9 -15
drivers/power/supply/wm831x_power.c
··· 570 570 power->wall_desc.properties = wm831x_wall_props; 571 571 power->wall_desc.num_properties = ARRAY_SIZE(wm831x_wall_props); 572 572 power->wall_desc.get_property = wm831x_wall_get_prop; 573 - power->wall = power_supply_register(&pdev->dev, &power->wall_desc, 574 - NULL); 573 + power->wall = devm_power_supply_register(&pdev->dev, 574 + &power->wall_desc, 575 + NULL); 575 576 if (IS_ERR(power->wall)) { 576 577 ret = PTR_ERR(power->wall); 577 578 goto err; ··· 583 582 power->usb_desc.properties = wm831x_usb_props; 584 583 power->usb_desc.num_properties = ARRAY_SIZE(wm831x_usb_props); 585 584 power->usb_desc.get_property = wm831x_usb_get_prop; 586 - power->usb = power_supply_register(&pdev->dev, &power->usb_desc, NULL); 585 + power->usb = devm_power_supply_register(&pdev->dev, 586 + &power->usb_desc, 587 + NULL); 587 588 if (IS_ERR(power->usb)) { 588 589 ret = PTR_ERR(power->usb); 589 590 goto err_wall; ··· 602 599 power->battery_desc.num_properties = ARRAY_SIZE(wm831x_bat_props); 603 600 power->battery_desc.get_property = wm831x_bat_get_prop; 604 601 power->battery_desc.use_for_apm = 1; 605 - power->battery = power_supply_register(&pdev->dev, 606 - &power->battery_desc, 607 - NULL); 602 + power->battery = devm_power_supply_register(&pdev->dev, 603 + &power->battery_desc, 604 + NULL); 608 605 if (IS_ERR(power->battery)) { 609 606 ret = PTR_ERR(power->battery); 610 607 goto err_usb; ··· 687 684 irq = wm831x_irq(wm831x, platform_get_irq_byname(pdev, "SYSLO")); 688 685 free_irq(irq, power); 689 686 err_battery: 690 - if (power->have_battery) 691 - power_supply_unregister(power->battery); 692 687 err_usb: 693 - power_supply_unregister(power->usb); 694 688 err_wall: 695 - power_supply_unregister(power->wall); 696 689 err: 697 690 return ret; 698 691 } ··· 716 717 717 718 irq = wm831x_irq(wm831x, platform_get_irq_byname(pdev, "SYSLO")); 718 719 free_irq(irq, wm831x_power); 719 - 720 - if (wm831x_power->have_battery) 721 - power_supply_unregister(wm831x_power->battery); 722 - power_supply_unregister(wm831x_power->wall); 723 - power_supply_unregister(wm831x_power->usb); 724 720 } 725 721 726 722 static struct platform_driver wm831x_power_driver = {