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: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
de85193cff
commit
419c0e9d25
@ -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,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user