[PATCH v4 1/4] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case
From: Anand Moon <hidden>
Date: 2025-03-10 14:35:11
Also in:
linux-pm, linux-samsung-soc, lkml
Subsystem:
samsung thermal driver, the rest, thermal · Maintainers:
Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Linus Torvalds, Rafael J. Wysocki, Daniel Lezcano
Refactor the initialization of the clk_sec clock to be inside the
SOC_ARCH_EXYNOS5420_TRIMINFO case. It ensures that the clk_sec clock
is only initialized for the specified SOC and not for other SOCs,
thereby simplifying the code. The clk_sec clock is used by the TMU
for GPU on the Exynos 542x platform.
Removed redundant IS_ERR() checks for the clk_sec clock since error
handling is already managed internally by clk_unprepare() functions.
Signed-off-by: Anand Moon <redacted>
---
v4: Fix the aligment of code clk for clk_prepare in proper if/else block.
update the commit for clk_sec used.
checked to goto clean up all the clks are proper.
drop IS_ERR() check for clk_sec.
v3: improve the commit message.
---
drivers/thermal/samsung/exynos_tmu.c | 37 ++++++++++++++--------------
1 file changed, 18 insertions(+), 19 deletions(-)
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
index 47a99b3c53958..3657920de0004 100644
--- a/drivers/thermal/samsung/exynos_tmu.c
+++ b/drivers/thermal/samsung/exynos_tmu.c@@ -1037,29 +1037,30 @@ static int exynos_tmu_probe(struct platform_device *pdev) return ret; data->clk = devm_clk_get(dev, "tmu_apbif"); - if (IS_ERR(data->clk)) + if (IS_ERR(data->clk)) { return dev_err_probe(dev, PTR_ERR(data->clk), "Failed to get clock\n"); - - data->clk_sec = devm_clk_get(dev, "tmu_triminfo_apbif"); - if (IS_ERR(data->clk_sec)) { - if (data->soc == SOC_ARCH_EXYNOS5420_TRIMINFO) - return dev_err_probe(dev, PTR_ERR(data->clk_sec), - "Failed to get triminfo clock\n"); } else { - ret = clk_prepare(data->clk_sec); + ret = clk_prepare(data->clk); if (ret) { dev_err(dev, "Failed to get clock\n"); return ret; } } - ret = clk_prepare(data->clk); - if (ret) { - dev_err(dev, "Failed to get clock\n"); - goto err_clk_sec; - } - switch (data->soc) { + case SOC_ARCH_EXYNOS5420_TRIMINFO: + data->clk_sec = devm_clk_get(dev, "tmu_triminfo_apbif"); + if (IS_ERR(data->clk_sec)) { + ret = dev_err_probe(dev, PTR_ERR(data->clk_sec), + "Failed to get clk_sec clock\n"); + goto err_clk; + } + ret = clk_prepare(data->clk_sec); + if (ret) { + dev_err(dev, "Failed to prepare clk_sec clock\n"); + goto err_clk_sec; + } + break; case SOC_ARCH_EXYNOS5433: case SOC_ARCH_EXYNOS7: data->sclk = devm_clk_get(dev, "tmu_sclk");
@@ -1112,11 +1113,10 @@ static int exynos_tmu_probe(struct platform_device *pdev) err_sclk: clk_disable_unprepare(data->sclk); +err_clk_sec: + clk_unprepare(data->clk_sec); err_clk: clk_unprepare(data->clk); -err_clk_sec: - if (!IS_ERR(data->clk_sec)) - clk_unprepare(data->clk_sec); return ret; }
@@ -1128,8 +1128,7 @@ static void exynos_tmu_remove(struct platform_device *pdev) clk_disable_unprepare(data->sclk); clk_unprepare(data->clk); - if (!IS_ERR(data->clk_sec)) - clk_unprepare(data->clk_sec); + clk_unprepare(data->clk_sec); } #ifdef CONFIG_PM_SLEEP
--
2.48.1