mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-28 09:39:00 +00:00
c36de2e73a
Backport almost 50 commits from upstream Linux to improve thermal drivers for MediaTek SoCs and add new LVTS driver for MT7988. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
101 lines
3.1 KiB
Diff
101 lines
3.1 KiB
Diff
From 227d1856924ec00a4f5bdf5afcf77bc7f3f04e86 Mon Sep 17 00:00:00 2001
|
|
From: Kang Chen <void0red@hust.edu.cn>
|
|
Date: Wed, 19 Apr 2023 10:07:49 +0800
|
|
Subject: [PATCH 19/42] thermal/drivers/mediatek: Change clk_prepare_enable to
|
|
devm_clk_get_enabled in mtk_thermal_probe
|
|
|
|
Use devm_clk_get_enabled to do automatic resource management.
|
|
Meanwhile, remove error handling labels in the probe function and
|
|
the whole remove function.
|
|
|
|
Signed-off-by: Kang Chen <void0red@hust.edu.cn>
|
|
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
|
|
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
|
|
Link: https://lore.kernel.org/r/20230419020749.621257-2-void0red@hust.edu.cn
|
|
---
|
|
drivers/thermal/mediatek/auxadc_thermal.c | 44 +++++------------------
|
|
1 file changed, 9 insertions(+), 35 deletions(-)
|
|
|
|
--- a/drivers/thermal/mediatek/auxadc_thermal.c
|
|
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
|
|
@@ -1206,14 +1206,6 @@ static int mtk_thermal_probe(struct plat
|
|
|
|
mt->conf = of_device_get_match_data(&pdev->dev);
|
|
|
|
- mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
|
|
- if (IS_ERR(mt->clk_peri_therm))
|
|
- return PTR_ERR(mt->clk_peri_therm);
|
|
-
|
|
- mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
|
|
- if (IS_ERR(mt->clk_auxadc))
|
|
- return PTR_ERR(mt->clk_auxadc);
|
|
-
|
|
mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
|
|
if (IS_ERR(mt->thermal_base))
|
|
return PTR_ERR(mt->thermal_base);
|
|
@@ -1272,16 +1264,18 @@ static int mtk_thermal_probe(struct plat
|
|
if (ret)
|
|
return ret;
|
|
|
|
- ret = clk_prepare_enable(mt->clk_auxadc);
|
|
- if (ret) {
|
|
+ mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
|
|
+ if (IS_ERR(mt->clk_auxadc)) {
|
|
+ ret = PTR_ERR(mt->clk_auxadc);
|
|
dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
|
|
return ret;
|
|
}
|
|
|
|
- ret = clk_prepare_enable(mt->clk_peri_therm);
|
|
- if (ret) {
|
|
+ mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
|
|
+ if (IS_ERR(mt->clk_peri_therm)) {
|
|
+ ret = PTR_ERR(mt->clk_peri_therm);
|
|
dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
|
|
- goto err_disable_clk_auxadc;
|
|
+ return ret;
|
|
}
|
|
|
|
mtk_thermal_turn_on_buffer(mt, apmixed_base);
|
|
@@ -1305,38 +1299,18 @@ static int mtk_thermal_probe(struct plat
|
|
|
|
tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
|
|
&mtk_thermal_ops);
|
|
- if (IS_ERR(tzdev)) {
|
|
- ret = PTR_ERR(tzdev);
|
|
- goto err_disable_clk_peri_therm;
|
|
- }
|
|
+ if (IS_ERR(tzdev))
|
|
+ return PTR_ERR(tzdev);
|
|
|
|
ret = devm_thermal_add_hwmon_sysfs(&pdev->dev, tzdev);
|
|
if (ret)
|
|
dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
|
|
|
|
return 0;
|
|
-
|
|
-err_disable_clk_peri_therm:
|
|
- clk_disable_unprepare(mt->clk_peri_therm);
|
|
-err_disable_clk_auxadc:
|
|
- clk_disable_unprepare(mt->clk_auxadc);
|
|
-
|
|
- return ret;
|
|
-}
|
|
-
|
|
-static int mtk_thermal_remove(struct platform_device *pdev)
|
|
-{
|
|
- struct mtk_thermal *mt = platform_get_drvdata(pdev);
|
|
-
|
|
- clk_disable_unprepare(mt->clk_peri_therm);
|
|
- clk_disable_unprepare(mt->clk_auxadc);
|
|
-
|
|
- return 0;
|
|
}
|
|
|
|
static struct platform_driver mtk_thermal_driver = {
|
|
.probe = mtk_thermal_probe,
|
|
- .remove = mtk_thermal_remove,
|
|
.driver = {
|
|
.name = "mtk-thermal",
|
|
.of_match_table = mtk_thermal_of_match,
|