Messages in this thread | | | Subject | Re: [PATCH 1/2] thermal: qoriq: Use devm_add_action_or_reset() to handle all cleanups | From | Daniel Lezcano <> | Date | Thu, 12 Mar 2020 12:24:12 +0100 |
| |
On 11/03/2020 06:07, Anson Huang wrote: > Use devm_add_action_or_reset() to handle all cleanups of failure in > .probe and .remove, then .remove callback can be dropped.
Is this change compatible with the tristate?
> Signed-off-by: Anson Huang <Anson.Huang@nxp.com> > --- > drivers/thermal/qoriq_thermal.c | 35 ++++++++++++++--------------------- > 1 file changed, 14 insertions(+), 21 deletions(-) > > diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c > index 874bc46..67a8d84 100644 > --- a/drivers/thermal/qoriq_thermal.c > +++ b/drivers/thermal/qoriq_thermal.c > @@ -228,6 +228,14 @@ static const struct regmap_access_table qoriq_rd_table = { > .n_yes_ranges = ARRAY_SIZE(qoriq_yes_ranges), > }; > > +static void qoriq_tmu_action(void *p) > +{ > + struct qoriq_tmu_data *data = p; > + > + regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); > + clk_disable_unprepare(data->clk); > +} > + > static int qoriq_tmu_probe(struct platform_device *pdev) > { > int ret; > @@ -278,6 +286,10 @@ static int qoriq_tmu_probe(struct platform_device *pdev) > return ret; > } > > + ret = devm_add_action_or_reset(dev, qoriq_tmu_action, data); > + if (ret) > + return ret; > + > /* version register offset at: 0xbf8 on both v1 and v2 */ > ret = regmap_read(data->regmap, REGS_IPBRR(0), &ver); > if (ret) { > @@ -290,35 +302,17 @@ static int qoriq_tmu_probe(struct platform_device *pdev) > > ret = qoriq_tmu_calibration(dev, data); /* TMU calibration */ > if (ret < 0) > - goto err; > + return ret; > > ret = qoriq_tmu_register_tmu_zone(dev, data); > if (ret < 0) { > dev_err(dev, "Failed to register sensors\n"); > - ret = -ENODEV; > - goto err; > + return ret; > } > > platform_set_drvdata(pdev, data); > > return 0; > - > -err: > - clk_disable_unprepare(data->clk); > - > - return ret; > -} > - > -static int qoriq_tmu_remove(struct platform_device *pdev) > -{ > - struct qoriq_tmu_data *data = platform_get_drvdata(pdev); > - > - /* Disable monitoring */ > - regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); > - > - clk_disable_unprepare(data->clk); > - > - return 0; > } > > static int __maybe_unused qoriq_tmu_suspend(struct device *dev) > @@ -365,7 +359,6 @@ static struct platform_driver qoriq_tmu = { > .of_match_table = qoriq_tmu_match, > }, > .probe = qoriq_tmu_probe, > - .remove = qoriq_tmu_remove, > }; > module_platform_driver(qoriq_tmu); > >
-- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog
| |