reset: lpc18xx: simplify with devm_clk_get_enabled()

Use devm_clk_get_enabled() to drop clock prepare/unprepare parts and
make the code simpler.  Change to dev_err_probe() in handling
reset_controller_register() error to make it even simpler.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Acked-by: Vladimir Zapolskiy <vz@mleia.com>
Reviewed-by: Vladimir Zapolskiy <vz@mleia.com>
Link: https://lore.kernel.org/r/20240825-reset-cleanup-scoped-v1-5-03f6d834f8c0@linaro.org
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
This commit is contained in:
Krzysztof Kozlowski 2024-08-25 16:14:28 +02:00 committed by Philipp Zabel
parent ece222e91f
commit 0fa8ce76b7

View File

@ -150,28 +150,16 @@ static int lpc18xx_rgu_probe(struct platform_device *pdev)
if (IS_ERR(rc->base)) if (IS_ERR(rc->base))
return PTR_ERR(rc->base); return PTR_ERR(rc->base);
rc->clk_reg = devm_clk_get(&pdev->dev, "reg"); rc->clk_reg = devm_clk_get_enabled(&pdev->dev, "reg");
if (IS_ERR(rc->clk_reg)) if (IS_ERR(rc->clk_reg))
return dev_err_probe(&pdev->dev, PTR_ERR(rc->clk_reg), return dev_err_probe(&pdev->dev, PTR_ERR(rc->clk_reg),
"reg clock not found\n"); "reg clock not found\n");
rc->clk_delay = devm_clk_get(&pdev->dev, "delay"); rc->clk_delay = devm_clk_get_enabled(&pdev->dev, "delay");
if (IS_ERR(rc->clk_delay)) if (IS_ERR(rc->clk_delay))
return dev_err_probe(&pdev->dev, PTR_ERR(rc->clk_delay), return dev_err_probe(&pdev->dev, PTR_ERR(rc->clk_delay),
"delay clock not found\n"); "delay clock not found\n");
ret = clk_prepare_enable(rc->clk_reg);
if (ret) {
dev_err(&pdev->dev, "unable to enable reg clock\n");
return ret;
}
ret = clk_prepare_enable(rc->clk_delay);
if (ret) {
dev_err(&pdev->dev, "unable to enable delay clock\n");
goto dis_clk_reg;
}
fcclk = clk_get_rate(rc->clk_reg) / USEC_PER_SEC; fcclk = clk_get_rate(rc->clk_reg) / USEC_PER_SEC;
firc = clk_get_rate(rc->clk_delay) / USEC_PER_SEC; firc = clk_get_rate(rc->clk_delay) / USEC_PER_SEC;
if (fcclk == 0 || firc == 0) if (fcclk == 0 || firc == 0)
@ -187,10 +175,8 @@ static int lpc18xx_rgu_probe(struct platform_device *pdev)
rc->rcdev.of_node = pdev->dev.of_node; rc->rcdev.of_node = pdev->dev.of_node;
ret = reset_controller_register(&rc->rcdev); ret = reset_controller_register(&rc->rcdev);
if (ret) { if (ret)
dev_err(&pdev->dev, "unable to register device\n"); return dev_err_probe(&pdev->dev, ret, "unable to register device\n");
goto dis_clks;
}
rc->restart_nb.priority = 192, rc->restart_nb.priority = 192,
rc->restart_nb.notifier_call = lpc18xx_rgu_restart, rc->restart_nb.notifier_call = lpc18xx_rgu_restart,
@ -199,13 +185,6 @@ static int lpc18xx_rgu_probe(struct platform_device *pdev)
dev_warn(&pdev->dev, "failed to register restart handler\n"); dev_warn(&pdev->dev, "failed to register restart handler\n");
return 0; return 0;
dis_clks:
clk_disable_unprepare(rc->clk_delay);
dis_clk_reg:
clk_disable_unprepare(rc->clk_reg);
return ret;
} }
static const struct of_device_id lpc18xx_rgu_match[] = { static const struct of_device_id lpc18xx_rgu_match[] = {