Commit 419c0e9d authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Sebastian Reichel
Browse files

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



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: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: default avatarAdam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent de85193c
Loading
Loading
Loading
Loading
+10 −21
Original line number Diff line number Diff line
@@ -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,33 +522,16 @@ 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 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;
}

@@ -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,
};