diff mbox series

power: supply: da9150-fg: Use devm_delayed_work_autocancel()

Message ID c4cf74b56258c679f69bbc6350179b8b500f5800.1644774892.git.christophe.jaillet@wanadoo.fr (mailing list archive)
State Handled Elsewhere, archived
Headers show
Series power: supply: da9150-fg: Use devm_delayed_work_autocancel() | expand

Commit Message

Christophe JAILLET Feb. 13, 2022, 5:55 p.m. UTC
This driver only uses managed resources, except for the delayed work, if
it is used.

Use devm_delayed_work_autocancel() to also manage the delayed work.
The error handling path of the probe and the remove function can both be
removed.

This saves a few lines of code.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/power/supply/da9150-fg.c | 31 ++++++++++---------------------
 1 file changed, 10 insertions(+), 21 deletions(-)

Comments

Adam Thomson Feb. 18, 2022, 1:13 p.m. UTC | #1
On 13 February 2022 17:55, Christophe JAILLET wrote:

> This driver only uses managed resources, except for the delayed work, if
> it is used.
> 
> Use devm_delayed_work_autocancel() to also manage the delayed work.
> The error handling path of the probe and the remove function can both be
> removed.
> 
> This saves a few lines of code.
> 
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Sebastian Reichel Feb. 24, 2022, 11:21 a.m. UTC | #2
Hi,

On Fri, Feb 18, 2022 at 01:13:10PM +0000, Adam Thomson wrote:
> On 13 February 2022 17:55, Christophe JAILLET wrote:
> 
> > This driver only uses managed resources, except for the delayed work, if
> > it is used.
> > 
> > Use devm_delayed_work_autocancel() to also manage the delayed work.
> > The error handling path of the probe and the remove function can both be
> > removed.
> > 
> > This saves a few lines of code.
> > 
> > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> 
> Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>

Thanks, queued.

-- Sebastian
diff mbox series

Patch

diff --git a/drivers/power/supply/da9150-fg.c b/drivers/power/supply/da9150-fg.c
index 6e367826aae9..e63fa62d1943 100644
--- a/drivers/power/supply/da9150-fg.c
+++ b/drivers/power/supply/da9150-fg.c
@@ -20,6 +20,7 @@ 
 #include <asm/div64.h>
 #include <linux/mfd/da9150/core.h>
 #include <linux/mfd/da9150/registers.h>
+#include <linux/devm-helpers.h>
 
 /* Core2Wire */
 #define DA9150_QIF_READ		(0x0 << 7)
@@ -506,7 +507,13 @@  static int da9150_fg_probe(struct platform_device *pdev)
 	 * work for reporting data updates.
 	 */
 	if (fg->interval) {
-		INIT_DELAYED_WORK(&fg->work, da9150_fg_work);
+		ret = devm_delayed_work_autocancel(dev, &fg->work,
+						   da9150_fg_work);
+		if (ret) {
+			dev_err(dev, "Failed to init work\n");
+			return ret;
+		}
+
 		schedule_delayed_work(&fg->work,
 				      msecs_to_jiffies(fg->interval));
 	}
@@ -515,34 +522,17 @@  static int da9150_fg_probe(struct platform_device *pdev)
 	irq = platform_get_irq_byname(pdev, "FG");
 	if (irq < 0) {
 		dev_err(dev, "Failed to get IRQ FG: %d\n", irq);
-		ret = irq;
-		goto irq_fail;
+		return irq;
 	}
 
 	ret = devm_request_threaded_irq(dev, irq, NULL, da9150_fg_irq,
 					IRQF_ONESHOT, "FG", fg);
 	if (ret) {
 		dev_err(dev, "Failed to request IRQ %d: %d\n", irq, ret);
-		goto irq_fail;
+		return ret;
 	}
 
 	return 0;
-
-irq_fail:
-	if (fg->interval)
-		cancel_delayed_work(&fg->work);
-
-	return ret;
-}
-
-static int da9150_fg_remove(struct platform_device *pdev)
-{
-	struct da9150_fg *fg = platform_get_drvdata(pdev);
-
-	if (fg->interval)
-		cancel_delayed_work(&fg->work);
-
-	return 0;
 }
 
 static int da9150_fg_resume(struct platform_device *pdev)
@@ -564,7 +554,6 @@  static struct platform_driver da9150_fg_driver = {
 		.name = "da9150-fuel-gauge",
 	},
 	.probe = da9150_fg_probe,
-	.remove = da9150_fg_remove,
 	.resume = da9150_fg_resume,
 };