Skip to content

Commit 81da805

Browse files
Sam Protsenkoherbertx
authored andcommitted
hwrng: exynos - Use devm_clk_get_enabled() to get the clock
Use devm_clk_get_enabled() helper instead of calling devm_clk_get() and then clk_prepare_enable(). It simplifies the error handling and makes the code more compact. Also use dev_err_probe() to handle possible -EPROBE_DEFER errors if the clock is not available yet. Signed-off-by: Sam Protsenko <[email protected]> Reviewed-by: Krzysztof Kozlowski <[email protected]> Reviewed-by: Anand Moon <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
1 parent 76536ca commit 81da805

File tree

1 file changed

+4
-17
lines changed

1 file changed

+4
-17
lines changed

drivers/char/hw_random/exynos-trng.c

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -134,32 +134,23 @@ static int exynos_trng_probe(struct platform_device *pdev)
134134
goto err_pm_get;
135135
}
136136

137-
trng->clk = devm_clk_get(&pdev->dev, "secss");
137+
trng->clk = devm_clk_get_enabled(&pdev->dev, "secss");
138138
if (IS_ERR(trng->clk)) {
139-
ret = PTR_ERR(trng->clk);
140-
dev_err(&pdev->dev, "Could not get clock.\n");
141-
goto err_clock;
142-
}
143-
144-
ret = clk_prepare_enable(trng->clk);
145-
if (ret) {
146-
dev_err(&pdev->dev, "Could not enable the clk.\n");
139+
ret = dev_err_probe(&pdev->dev, PTR_ERR(trng->clk),
140+
"Could not get clock\n");
147141
goto err_clock;
148142
}
149143

150144
ret = devm_hwrng_register(&pdev->dev, &trng->rng);
151145
if (ret) {
152146
dev_err(&pdev->dev, "Could not register hwrng device.\n");
153-
goto err_register;
147+
goto err_clock;
154148
}
155149

156150
dev_info(&pdev->dev, "Exynos True Random Number Generator.\n");
157151

158152
return 0;
159153

160-
err_register:
161-
clk_disable_unprepare(trng->clk);
162-
163154
err_clock:
164155
pm_runtime_put_noidle(&pdev->dev);
165156

@@ -171,10 +162,6 @@ static int exynos_trng_probe(struct platform_device *pdev)
171162

172163
static void exynos_trng_remove(struct platform_device *pdev)
173164
{
174-
struct exynos_trng_dev *trng = platform_get_drvdata(pdev);
175-
176-
clk_disable_unprepare(trng->clk);
177-
178165
pm_runtime_put_sync(&pdev->dev);
179166
pm_runtime_disable(&pdev->dev);
180167
}

0 commit comments

Comments
 (0)