Skip to content

Commit 5d6976d

Browse files
metiulekmdlezcano
authored andcommitted
thermal/drivers/exynos: Simplify regulator (de)initialization
We rewrite the initialization to enable the regulator as part of devm, which allows us to not handle the struct instance manually. Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Link: https://lore.kernel.org/r/20231201095625.301884-6-m.majewski2@samsung.com
1 parent 52ef6f5 commit 5d6976d

File tree

1 file changed

+15
-34
lines changed

1 file changed

+15
-34
lines changed

drivers/thermal/samsung/exynos_tmu.c

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ enum soc_type {
157157
* @reference_voltage: reference voltage of amplifier
158158
* in the positive-TC generator block
159159
* 0 < reference_voltage <= 31
160-
* @regulator: pointer to the TMU regulator structure.
161160
* @tzd: pointer to thermal_zone_device structure
162161
* @ntrip: number of supported trip points.
163162
* @enabled: current status of TMU device
@@ -183,7 +182,6 @@ struct exynos_tmu_data {
183182
u16 temp_error1, temp_error2;
184183
u8 gain;
185184
u8 reference_voltage;
186-
struct regulator *regulator;
187185
struct thermal_zone_device *tzd;
188186
unsigned int ntrip;
189187
bool enabled;
@@ -994,50 +992,40 @@ static int exynos_tmu_probe(struct platform_device *pdev)
994992
* TODO: Add regulator as an SOC feature, so that regulator enable
995993
* is a compulsory call.
996994
*/
997-
data->regulator = devm_regulator_get_optional(&pdev->dev, "vtmu");
998-
if (!IS_ERR(data->regulator)) {
999-
ret = regulator_enable(data->regulator);
1000-
if (ret) {
1001-
dev_err(&pdev->dev, "failed to enable vtmu\n");
1002-
return ret;
1003-
}
1004-
} else {
1005-
ret = PTR_ERR(data->regulator);
1006-
switch (ret) {
1007-
case -ENODEV:
1008-
break;
1009-
case -EPROBE_DEFER:
1010-
return -EPROBE_DEFER;
1011-
default:
1012-
dev_err(&pdev->dev, "Failed to get regulator: %d\n",
1013-
ret);
1014-
return ret;
1015-
}
995+
ret = devm_regulator_get_enable_optional(&pdev->dev, "vtmu");
996+
switch (ret) {
997+
case 0:
998+
case -ENODEV:
999+
break;
1000+
case -EPROBE_DEFER:
1001+
return -EPROBE_DEFER;
1002+
default:
1003+
dev_err(&pdev->dev, "Failed to get enabled regulator: %d\n",
1004+
ret);
1005+
return ret;
10161006
}
10171007

10181008
ret = exynos_map_dt_data(pdev);
10191009
if (ret)
1020-
goto err_sensor;
1010+
return ret;
10211011

10221012
data->clk = devm_clk_get(&pdev->dev, "tmu_apbif");
10231013
if (IS_ERR(data->clk)) {
10241014
dev_err(&pdev->dev, "Failed to get clock\n");
1025-
ret = PTR_ERR(data->clk);
1026-
goto err_sensor;
1015+
return PTR_ERR(data->clk);
10271016
}
10281017

10291018
data->clk_sec = devm_clk_get(&pdev->dev, "tmu_triminfo_apbif");
10301019
if (IS_ERR(data->clk_sec)) {
10311020
if (data->soc == SOC_ARCH_EXYNOS5420_TRIMINFO) {
10321021
dev_err(&pdev->dev, "Failed to get triminfo clock\n");
1033-
ret = PTR_ERR(data->clk_sec);
1034-
goto err_sensor;
1022+
return PTR_ERR(data->clk_sec);
10351023
}
10361024
} else {
10371025
ret = clk_prepare(data->clk_sec);
10381026
if (ret) {
10391027
dev_err(&pdev->dev, "Failed to get clock\n");
1040-
goto err_sensor;
1028+
return ret;
10411029
}
10421030
}
10431031

@@ -1107,10 +1095,6 @@ static int exynos_tmu_probe(struct platform_device *pdev)
11071095
err_clk_sec:
11081096
if (!IS_ERR(data->clk_sec))
11091097
clk_unprepare(data->clk_sec);
1110-
err_sensor:
1111-
if (!IS_ERR(data->regulator))
1112-
regulator_disable(data->regulator);
1113-
11141098
return ret;
11151099
}
11161100

@@ -1124,9 +1108,6 @@ static void exynos_tmu_remove(struct platform_device *pdev)
11241108
clk_unprepare(data->clk);
11251109
if (!IS_ERR(data->clk_sec))
11261110
clk_unprepare(data->clk_sec);
1127-
1128-
if (!IS_ERR(data->regulator))
1129-
regulator_disable(data->regulator);
11301111
}
11311112

11321113
#ifdef CONFIG_PM_SLEEP

0 commit comments

Comments
 (0)