Message ID | 20230824135514.2661364-4-ruanjinjie@huawei.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | watchdog: Use the devm_clk_get_enabled() helper function | expand |
On Thu, Aug 24, 2023 at 09:55:14PM +0800, Jinjie Ruan wrote: > watchdog: ath79_wdt: Use the devm_clk_get_enabled() helper function > > The devm_clk_get_enabled() helper: > - calls devm_clk_get() > - calls clk_prepare_enable() and registers what is needed in order to > call clk_disable_unprepare() when needed, as a managed resource. > > This simplifies the code and avoids the need of a dedicated function used > with devm_add_action_or_reset(). > > Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > drivers/watchdog/sunplus_wdt.c | 17 ++--------------- > 1 file changed, 2 insertions(+), 15 deletions(-) > > diff --git a/drivers/watchdog/sunplus_wdt.c b/drivers/watchdog/sunplus_wdt.c > index e2d8c532bcb1..9d3ca848e8b6 100644 > --- a/drivers/watchdog/sunplus_wdt.c > +++ b/drivers/watchdog/sunplus_wdt.c > @@ -136,11 +136,6 @@ static const struct watchdog_ops sp_wdt_ops = { > .restart = sp_wdt_restart, > }; > > -static void sp_clk_disable_unprepare(void *data) > -{ > - clk_disable_unprepare(data); > -} > - > static void sp_reset_control_assert(void *data) > { > reset_control_assert(data); > @@ -156,17 +151,9 @@ static int sp_wdt_probe(struct platform_device *pdev) > if (!priv) > return -ENOMEM; > > - priv->clk = devm_clk_get(dev, NULL); > + priv->clk = devm_clk_get_enabled(dev, NULL); > if (IS_ERR(priv->clk)) > - return dev_err_probe(dev, PTR_ERR(priv->clk), "Failed to get clock\n"); > - > - ret = clk_prepare_enable(priv->clk); > - if (ret) > - return dev_err_probe(dev, ret, "Failed to enable clock\n"); > - > - ret = devm_add_action_or_reset(dev, sp_clk_disable_unprepare, priv->clk); > - if (ret) > - return ret; > + return dev_err_probe(dev, PTR_ERR(priv->clk), "Failed to enable clock\n"); > > /* The timer and watchdog shared the STC reset */ > priv->rstc = devm_reset_control_get_shared(dev, NULL); > -- > 2.34.1 >
diff --git a/drivers/watchdog/sunplus_wdt.c b/drivers/watchdog/sunplus_wdt.c index e2d8c532bcb1..9d3ca848e8b6 100644 --- a/drivers/watchdog/sunplus_wdt.c +++ b/drivers/watchdog/sunplus_wdt.c @@ -136,11 +136,6 @@ static const struct watchdog_ops sp_wdt_ops = { .restart = sp_wdt_restart, }; -static void sp_clk_disable_unprepare(void *data) -{ - clk_disable_unprepare(data); -} - static void sp_reset_control_assert(void *data) { reset_control_assert(data); @@ -156,17 +151,9 @@ static int sp_wdt_probe(struct platform_device *pdev) if (!priv) return -ENOMEM; - priv->clk = devm_clk_get(dev, NULL); + priv->clk = devm_clk_get_enabled(dev, NULL); if (IS_ERR(priv->clk)) - return dev_err_probe(dev, PTR_ERR(priv->clk), "Failed to get clock\n"); - - ret = clk_prepare_enable(priv->clk); - if (ret) - return dev_err_probe(dev, ret, "Failed to enable clock\n"); - - ret = devm_add_action_or_reset(dev, sp_clk_disable_unprepare, priv->clk); - if (ret) - return ret; + return dev_err_probe(dev, PTR_ERR(priv->clk), "Failed to enable clock\n"); /* The timer and watchdog shared the STC reset */ priv->rstc = devm_reset_control_get_shared(dev, NULL);
watchdog: ath79_wdt: Use the devm_clk_get_enabled() helper function The devm_clk_get_enabled() helper: - calls devm_clk_get() - calls clk_prepare_enable() and registers what is needed in order to call clk_disable_unprepare() when needed, as a managed resource. This simplifies the code and avoids the need of a dedicated function used with devm_add_action_or_reset(). Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com> --- drivers/watchdog/sunplus_wdt.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-)