* [PATCH v5 0/3] Exynos Thermal code improvement
@ 2025-04-10 6:37 Anand Moon
2025-04-10 6:37 ` [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case Anand Moon
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Anand Moon @ 2025-04-10 6:37 UTC (permalink / raw)
To: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Daniel Lezcano, Zhang Rui, Lukasz Luba, Alim Akhtar,
Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
Cc: Anand Moon
Hi All,
This patch series is a rework of my previous patch series [1],
where the code changes were not adequately justified.
In this new series, I have improved the commit subject
and commit message to better explain the changes.
v5: Drop the guard mutex patch
v4: Tried to address Lukasz review comments.
Tested on Odroid U3 amd XU4 SoC boards.
Build with clang with W=1 enable.
[3] https://lore.kernel.org/all/20250310143450.8276-2-linux.amoon@gmail.com/
[2] https://lore.kernel.org/all/20250216195850.5352-2-linux.amoon@gmail.com/
[1] https://lore.kernel.org/all/20220515064126.1424-1-linux.amoon@gmail.com/
[0] https://lore.kernel.org/lkml/CANAwSgS=08fVsqn95WHzSF71WTTyD2-=K2C6-BEz0tY0t6A1-g@mail.gmail.com/T/#m77e57120d230d57f34c29e1422d7fc5f5587ac30
Thanks
-Anand
Anand Moon (3):
drivers/thermal/exynos: Refactor clk_sec initialization inside
SOC-specific case
drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec
clock
drivers/thermal/exymos: Fixed the efuse min max value for exynos5422
drivers/thermal/samsung/exynos_tmu.c | 62 ++++++++++++++++------------
1 file changed, 35 insertions(+), 27 deletions(-)
base-commit: 3b07108ada81a8ebcebf1fe61367b4e436c895bd
--
2.49.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case
2025-04-10 6:37 [PATCH v5 0/3] Exynos Thermal code improvement Anand Moon
@ 2025-04-10 6:37 ` Anand Moon
2025-04-15 8:47 ` Lukasz Luba
2025-04-18 8:06 ` Daniel Lezcano
2025-04-10 6:37 ` [PATCH v5 2/3] drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec clock Anand Moon
2025-04-10 6:37 ` [PATCH v5 3/3] drivers/thermal/exymos: Fixed the efuse min max value for exynos5422 Anand Moon
2 siblings, 2 replies; 13+ messages in thread
From: Anand Moon @ 2025-04-10 6:37 UTC (permalink / raw)
To: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Daniel Lezcano, Zhang Rui, Lukasz Luba, Alim Akhtar,
Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
Cc: Anand Moon
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 <linux.amoon@gmail.com>
---
v5: None
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 47a99b3c5395..3657920de000 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.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v5 2/3] drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec clock
2025-04-10 6:37 [PATCH v5 0/3] Exynos Thermal code improvement Anand Moon
2025-04-10 6:37 ` [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case Anand Moon
@ 2025-04-10 6:37 ` Anand Moon
2025-04-15 8:38 ` Lukasz Luba
2025-04-18 8:11 ` Daniel Lezcano
2025-04-10 6:37 ` [PATCH v5 3/3] drivers/thermal/exymos: Fixed the efuse min max value for exynos5422 Anand Moon
2 siblings, 2 replies; 13+ messages in thread
From: Anand Moon @ 2025-04-10 6:37 UTC (permalink / raw)
To: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Daniel Lezcano, Zhang Rui, Lukasz Luba, Alim Akhtar,
Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
Cc: Anand Moon
Remove unnecessary IS_ERR() checks for the clk_sec clock,
the clk_enable() and clk_disable() functions can handle NULL clock
pointers, so the additional checks are redundant and have been removed
to simplify the code.
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
---
v5: None
v4: drop IE_ERR() for clk_unprepare() as its handle in earlier code.
v3: improve the commit message.
---
drivers/thermal/samsung/exynos_tmu.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
index 3657920de000..ac3b9d2c900c 100644
--- a/drivers/thermal/samsung/exynos_tmu.c
+++ b/drivers/thermal/samsung/exynos_tmu.c
@@ -258,8 +258,7 @@ static int exynos_tmu_initialize(struct platform_device *pdev)
mutex_lock(&data->lock);
clk_enable(data->clk);
- if (!IS_ERR(data->clk_sec))
- clk_enable(data->clk_sec);
+ clk_enable(data->clk_sec);
status = readb(data->base + EXYNOS_TMU_REG_STATUS);
if (!status) {
@@ -269,8 +268,7 @@ static int exynos_tmu_initialize(struct platform_device *pdev)
data->tmu_clear_irqs(data);
}
- if (!IS_ERR(data->clk_sec))
- clk_disable(data->clk_sec);
+ clk_disable(data->clk_sec);
clk_disable(data->clk);
mutex_unlock(&data->lock);
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v5 3/3] drivers/thermal/exymos: Fixed the efuse min max value for exynos5422
2025-04-10 6:37 [PATCH v5 0/3] Exynos Thermal code improvement Anand Moon
2025-04-10 6:37 ` [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case Anand Moon
2025-04-10 6:37 ` [PATCH v5 2/3] drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec clock Anand Moon
@ 2025-04-10 6:37 ` Anand Moon
2025-04-15 8:36 ` Lukasz Luba
2025-04-18 8:19 ` Daniel Lezcano
2 siblings, 2 replies; 13+ messages in thread
From: Anand Moon @ 2025-04-10 6:37 UTC (permalink / raw)
To: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Daniel Lezcano, Zhang Rui, Lukasz Luba, Alim Akhtar,
Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
Cc: Anand Moon
As per Exynos5422 user manual e-Fuse range min~max range is 16~76.
if e-Fuse value is out of this range, then thermal sensor may not
sense thermal data properly. Refactors the efuse value
initialization logic within exynos_map_dt_data function by
replacing the nested if-else statements with a switch statement.
Ensures proper initialization of efuse values based on the SOC type.
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
---
v5: None
v4: None
v3: Improve the logic to convert if/else to switch
---
drivers/thermal/samsung/exynos_tmu.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
index ac3b9d2c900c..a71cde0a4b17 100644
--- a/drivers/thermal/samsung/exynos_tmu.c
+++ b/drivers/thermal/samsung/exynos_tmu.c
@@ -899,12 +899,23 @@ static int exynos_map_dt_data(struct platform_device *pdev)
data->gain = 8;
data->reference_voltage = 16;
data->efuse_value = 55;
- if (data->soc != SOC_ARCH_EXYNOS5420 &&
- data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO)
+ data->max_efuse_value = 100;
+ switch (data->soc) {
+ case SOC_ARCH_EXYNOS3250:
+ case SOC_ARCH_EXYNOS4412:
+ case SOC_ARCH_EXYNOS5250:
+ case SOC_ARCH_EXYNOS5260:
data->min_efuse_value = 40;
- else
+ break;
+ case SOC_ARCH_EXYNOS5420:
+ case SOC_ARCH_EXYNOS5420_TRIMINFO:
+ data->min_efuse_value = 16;
+ data->max_efuse_value = 76;
+ break;
+ default:
data->min_efuse_value = 0;
- data->max_efuse_value = 100;
+ break;
+ }
break;
case SOC_ARCH_EXYNOS5433:
data->tmu_set_low_temp = exynos5433_tmu_set_low_temp;
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v5 3/3] drivers/thermal/exymos: Fixed the efuse min max value for exynos5422
2025-04-10 6:37 ` [PATCH v5 3/3] drivers/thermal/exymos: Fixed the efuse min max value for exynos5422 Anand Moon
@ 2025-04-15 8:36 ` Lukasz Luba
2025-04-18 8:19 ` Daniel Lezcano
1 sibling, 0 replies; 13+ messages in thread
From: Lukasz Luba @ 2025-04-15 8:36 UTC (permalink / raw)
To: Anand Moon
Cc: Bartlomiej Zolnierkiewicz, open list:SAMSUNG THERMAL DRIVER,
Justin Stitt, Bill Wendling, Zhang Rui, Daniel Lezcano, open list,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b,
open list:SAMSUNG THERMAL DRIVER, Rafael J. Wysocki,
Krzysztof Kozlowski, Nick Desaulniers, Nathan Chancellor,
Alim Akhtar
On 4/10/25 07:37, Anand Moon wrote:
> As per Exynos5422 user manual e-Fuse range min~max range is 16~76.
> if e-Fuse value is out of this range, then thermal sensor may not
> sense thermal data properly. Refactors the efuse value
> initialization logic within exynos_map_dt_data function by
> replacing the nested if-else statements with a switch statement.
> Ensures proper initialization of efuse values based on the SOC type.
>
> Signed-off-by: Anand Moon <linux.amoon@gmail.com>
> ---
> v5: None
> v4: None
> v3: Improve the logic to convert if/else to switch
> ---
> drivers/thermal/samsung/exynos_tmu.c | 19 +++++++++++++++----
> 1 file changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
> index ac3b9d2c900c..a71cde0a4b17 100644
> --- a/drivers/thermal/samsung/exynos_tmu.c
> +++ b/drivers/thermal/samsung/exynos_tmu.c
> @@ -899,12 +899,23 @@ static int exynos_map_dt_data(struct platform_device *pdev)
> data->gain = 8;
> data->reference_voltage = 16;
> data->efuse_value = 55;
> - if (data->soc != SOC_ARCH_EXYNOS5420 &&
> - data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO)
> + data->max_efuse_value = 100;
> + switch (data->soc) {
> + case SOC_ARCH_EXYNOS3250:
> + case SOC_ARCH_EXYNOS4412:
> + case SOC_ARCH_EXYNOS5250:
> + case SOC_ARCH_EXYNOS5260:
> data->min_efuse_value = 40;
> - else
> + break;
> + case SOC_ARCH_EXYNOS5420:
> + case SOC_ARCH_EXYNOS5420_TRIMINFO:
> + data->min_efuse_value = 16;
> + data->max_efuse_value = 76;
> + break;
> + default:
> data->min_efuse_value = 0;
> - data->max_efuse_value = 100;
> + break;
> + }
> break;
> case SOC_ARCH_EXYNOS5433:
> data->tmu_set_low_temp = exynos5433_tmu_set_low_temp;
I should have added that in earlier version: LGTM,
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5 2/3] drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec clock
2025-04-10 6:37 ` [PATCH v5 2/3] drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec clock Anand Moon
@ 2025-04-15 8:38 ` Lukasz Luba
2025-04-18 8:11 ` Daniel Lezcano
1 sibling, 0 replies; 13+ messages in thread
From: Lukasz Luba @ 2025-04-15 8:38 UTC (permalink / raw)
To: Anand Moon
Cc: Bartlomiej Zolnierkiewicz, open list:SAMSUNG THERMAL DRIVER,
Justin Stitt, Bill Wendling, Nathan Chancellor, Alim Akhtar,
open list,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b,
open list:SAMSUNG THERMAL DRIVER, Zhang Rui, Daniel Lezcano,
Nick Desaulniers, Krzysztof Kozlowski, Rafael J. Wysocki
On 4/10/25 07:37, Anand Moon wrote:
> Remove unnecessary IS_ERR() checks for the clk_sec clock,
> the clk_enable() and clk_disable() functions can handle NULL clock
> pointers, so the additional checks are redundant and have been removed
> to simplify the code.
>
> Signed-off-by: Anand Moon <linux.amoon@gmail.com>
> ---
> v5: None
> v4: drop IE_ERR() for clk_unprepare() as its handle in earlier code.
> v3: improve the commit message.
> ---
> drivers/thermal/samsung/exynos_tmu.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
> index 3657920de000..ac3b9d2c900c 100644
> --- a/drivers/thermal/samsung/exynos_tmu.c
> +++ b/drivers/thermal/samsung/exynos_tmu.c
> @@ -258,8 +258,7 @@ static int exynos_tmu_initialize(struct platform_device *pdev)
>
> mutex_lock(&data->lock);
> clk_enable(data->clk);
> - if (!IS_ERR(data->clk_sec))
> - clk_enable(data->clk_sec);
> + clk_enable(data->clk_sec);
>
> status = readb(data->base + EXYNOS_TMU_REG_STATUS);
> if (!status) {
> @@ -269,8 +268,7 @@ static int exynos_tmu_initialize(struct platform_device *pdev)
> data->tmu_clear_irqs(data);
> }
>
> - if (!IS_ERR(data->clk_sec))
> - clk_disable(data->clk_sec);
> + clk_disable(data->clk_sec);
> clk_disable(data->clk);
> mutex_unlock(&data->lock);
>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case
2025-04-10 6:37 ` [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case Anand Moon
@ 2025-04-15 8:47 ` Lukasz Luba
2025-04-18 8:06 ` Daniel Lezcano
1 sibling, 0 replies; 13+ messages in thread
From: Lukasz Luba @ 2025-04-15 8:47 UTC (permalink / raw)
To: Anand Moon
Cc: open list, Justin Stitt, Bill Wendling, Alim Akhtar,
Krzysztof Kozlowski, Daniel Lezcano, Zhang Rui,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER, Rafael J. Wysocki,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
Nathan Chancellor, Nick Desaulniers, Bartlomiej Zolnierkiewicz
On 4/10/25 07:37, Anand Moon wrote:
> 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 <linux.amoon@gmail.com>
> ---
> v5: None
> 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 47a99b3c5395..3657920de000 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
It looks good. I've missed the v4 where you addressed my comments.
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case
2025-04-10 6:37 ` [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case Anand Moon
2025-04-15 8:47 ` Lukasz Luba
@ 2025-04-18 8:06 ` Daniel Lezcano
2025-04-18 13:31 ` Anand Moon
1 sibling, 1 reply; 13+ messages in thread
From: Daniel Lezcano @ 2025-04-18 8:06 UTC (permalink / raw)
To: Anand Moon
Cc: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Zhang Rui, Lukasz Luba, Alim Akhtar, Nathan Chancellor,
Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
On Thu, Apr 10, 2025 at 12:07:48PM +0530, Anand Moon wrote:
> 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 <linux.amoon@gmail.com>
> ---
> v5: None
> 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 47a99b3c5395..3657920de000 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");
As this branch returns, the else block can be removed.
if (IS_ERR(data->clk))
return dev_err_probe(dev, PTR_ERR(data->clk), "Failed to get clock\n");
ret = clk_prepare(data->clk);
if (ret) {
...
}
May be worth to group both calls with devm_clk_get_enabled()
> -
> - 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);
Same comment, devm_clk_get_enabled()
> + 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);
With devm_ variant those labels should go away
> 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.49.0
>
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5 2/3] drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec clock
2025-04-10 6:37 ` [PATCH v5 2/3] drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec clock Anand Moon
2025-04-15 8:38 ` Lukasz Luba
@ 2025-04-18 8:11 ` Daniel Lezcano
2025-04-18 13:31 ` Anand Moon
1 sibling, 1 reply; 13+ messages in thread
From: Daniel Lezcano @ 2025-04-18 8:11 UTC (permalink / raw)
To: Anand Moon
Cc: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Zhang Rui, Lukasz Luba, Alim Akhtar, Nathan Chancellor,
Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
On Thu, Apr 10, 2025 at 12:07:49PM +0530, Anand Moon wrote:
> Remove unnecessary IS_ERR() checks for the clk_sec clock,
> the clk_enable() and clk_disable() functions can handle NULL clock
> pointers, so the additional checks are redundant and have been removed
> to simplify the code.
>
> Signed-off-by: Anand Moon <linux.amoon@gmail.com>
Typo in the subject: s/exymos/exynos/
> ---
> v5: None
> v4: drop IE_ERR() for clk_unprepare() as its handle in earlier code.
> v3: improve the commit message.
> ---
> drivers/thermal/samsung/exynos_tmu.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
> index 3657920de000..ac3b9d2c900c 100644
> --- a/drivers/thermal/samsung/exynos_tmu.c
> +++ b/drivers/thermal/samsung/exynos_tmu.c
> @@ -258,8 +258,7 @@ static int exynos_tmu_initialize(struct platform_device *pdev)
>
> mutex_lock(&data->lock);
> clk_enable(data->clk);
> - if (!IS_ERR(data->clk_sec))
> - clk_enable(data->clk_sec);
> + clk_enable(data->clk_sec);
>
> status = readb(data->base + EXYNOS_TMU_REG_STATUS);
> if (!status) {
> @@ -269,8 +268,7 @@ static int exynos_tmu_initialize(struct platform_device *pdev)
> data->tmu_clear_irqs(data);
> }
>
> - if (!IS_ERR(data->clk_sec))
> - clk_disable(data->clk_sec);
> + clk_disable(data->clk_sec);
> clk_disable(data->clk);
> mutex_unlock(&data->lock);
To be replaced by devm_clk_get_enabled() ?
>
> --
> 2.49.0
>
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5 3/3] drivers/thermal/exymos: Fixed the efuse min max value for exynos5422
2025-04-10 6:37 ` [PATCH v5 3/3] drivers/thermal/exymos: Fixed the efuse min max value for exynos5422 Anand Moon
2025-04-15 8:36 ` Lukasz Luba
@ 2025-04-18 8:19 ` Daniel Lezcano
2025-04-18 13:32 ` Anand Moon
1 sibling, 1 reply; 13+ messages in thread
From: Daniel Lezcano @ 2025-04-18 8:19 UTC (permalink / raw)
To: Anand Moon
Cc: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Zhang Rui, Lukasz Luba, Alim Akhtar, Nathan Chancellor,
Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
On Thu, Apr 10, 2025 at 12:07:50PM +0530, Anand Moon wrote:
> As per Exynos5422 user manual e-Fuse range min~max range is 16~76.
> if e-Fuse value is out of this range, then thermal sensor may not
> sense thermal data properly. Refactors the efuse value
> initialization logic within exynos_map_dt_data function by
> replacing the nested if-else statements with a switch statement.
> Ensures proper initialization of efuse values based on the SOC type.
>
> Signed-off-by: Anand Moon <linux.amoon@gmail.com>
Same subject typo: s/exymos/exynos/
> ---
> v5: None
> v4: None
> v3: Improve the logic to convert if/else to switch
> ---
> drivers/thermal/samsung/exynos_tmu.c | 19 +++++++++++++++----
> 1 file changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
> index ac3b9d2c900c..a71cde0a4b17 100644
> --- a/drivers/thermal/samsung/exynos_tmu.c
> +++ b/drivers/thermal/samsung/exynos_tmu.c
> @@ -899,12 +899,23 @@ static int exynos_map_dt_data(struct platform_device *pdev)
> data->gain = 8;
> data->reference_voltage = 16;
> data->efuse_value = 55;
> - if (data->soc != SOC_ARCH_EXYNOS5420 &&
> - data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO)
> + data->max_efuse_value = 100;
> + switch (data->soc) {
> + case SOC_ARCH_EXYNOS3250:
> + case SOC_ARCH_EXYNOS4412:
> + case SOC_ARCH_EXYNOS5250:
> + case SOC_ARCH_EXYNOS5260:
> data->min_efuse_value = 40;
> - else
> + break;
> + case SOC_ARCH_EXYNOS5420:
> + case SOC_ARCH_EXYNOS5420_TRIMINFO:
> + data->min_efuse_value = 16;
> + data->max_efuse_value = 76;
> + break;
> + default:
> data->min_efuse_value = 0;
> - data->max_efuse_value = 100;
> + break;
> + }
> break;
> case SOC_ARCH_EXYNOS5433:
> data->tmu_set_low_temp = exynos5433_tmu_set_low_temp;
Thanks for taking care of cleaning up this portion of code. IMO, it would be
interesting to go a bit further in the house keeping by replacing this big
switch with a set of structures stored as __init sections. The initialization
finds the right structure and does a structure copy to 'data'.
It is up to you to do this change or not.
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case
2025-04-18 8:06 ` Daniel Lezcano
@ 2025-04-18 13:31 ` Anand Moon
0 siblings, 0 replies; 13+ messages in thread
From: Anand Moon @ 2025-04-18 13:31 UTC (permalink / raw)
To: Daniel Lezcano
Cc: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Zhang Rui, Lukasz Luba, Alim Akhtar, Nathan Chancellor,
Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
Hi Daniel,
On Fri, 18 Apr 2025 at 13:36, Daniel Lezcano <daniel.lezcano@linaro.org> wrote:
>
> On Thu, Apr 10, 2025 at 12:07:48PM +0530, Anand Moon wrote:
> > 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 <linux.amoon@gmail.com>
> > ---
> > v5: None
> > 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 47a99b3c5395..3657920de000 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");
>
> As this branch returns, the else block can be removed.
>
> if (IS_ERR(data->clk))
> return dev_err_probe(dev, PTR_ERR(data->clk), "Failed to get clock\n");
>
> ret = clk_prepare(data->clk);
> if (ret) {
> ...
> }
>
Earlier I got this review comment on this.
[0] https://patchwork.kernel.org/project/linux-samsung-soc/patch/20250216195850.5352-2-linux.amoon@gmail.com/
I will try to fix this in next vrsion.
> May be worth to group both calls with devm_clk_get_enabled()
Earlier, I attempted to change the clock ABI, but it didn't work.
[1] https://lore.kernel.org/all/20220515064126.1424-2-linux.amoon@gmail.com/
If you're okay with changing this, I'll update it in the next version.
> > -
> > - 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);
>
> Same comment, devm_clk_get_enabled()
If you're okay with changing this, I'll update it in the next version.
>
> > + 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);
>
> With devm_ variant those labels should go away
Correct.
Thanks
-Anand
>
> > 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.49.0
> >
>
> --
>
> <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
>
> Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
> <http://twitter.com/#!/linaroorg> Twitter |
> <http://www.linaro.org/linaro-blog/> Blog
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5 2/3] drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec clock
2025-04-18 8:11 ` Daniel Lezcano
@ 2025-04-18 13:31 ` Anand Moon
0 siblings, 0 replies; 13+ messages in thread
From: Anand Moon @ 2025-04-18 13:31 UTC (permalink / raw)
To: Daniel Lezcano
Cc: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Zhang Rui, Lukasz Luba, Alim Akhtar, Nathan Chancellor,
Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
Hi Daniel,
On Fri, 18 Apr 2025 at 13:41, Daniel Lezcano <daniel.lezcano@linaro.org> wrote:
>
> On Thu, Apr 10, 2025 at 12:07:49PM +0530, Anand Moon wrote:
> > Remove unnecessary IS_ERR() checks for the clk_sec clock,
> > the clk_enable() and clk_disable() functions can handle NULL clock
> > pointers, so the additional checks are redundant and have been removed
> > to simplify the code.
> >
> > Signed-off-by: Anand Moon <linux.amoon@gmail.com>
>
> Typo in the subject: s/exymos/exynos/
>
Thanks for your review comments.
Opps, I will fix this next version it got skipped.
Thanks
-Anand
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5 3/3] drivers/thermal/exymos: Fixed the efuse min max value for exynos5422
2025-04-18 8:19 ` Daniel Lezcano
@ 2025-04-18 13:32 ` Anand Moon
0 siblings, 0 replies; 13+ messages in thread
From: Anand Moon @ 2025-04-18 13:32 UTC (permalink / raw)
To: Daniel Lezcano
Cc: Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki,
Zhang Rui, Lukasz Luba, Alim Akhtar, Nathan Chancellor,
Nick Desaulniers, Bill Wendling, Justin Stitt,
open list:SAMSUNG THERMAL DRIVER,
open list:SAMSUNG THERMAL DRIVER,
moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES,
open list,
open list:CLANG/LLVM BUILD SUPPORT:Keyword:b(?i:clang|llvm)b
Hi Daniel,
On Fri, 18 Apr 2025 at 13:49, Daniel Lezcano <daniel.lezcano@linaro.org> wrote:
>
> On Thu, Apr 10, 2025 at 12:07:50PM +0530, Anand Moon wrote:
> > As per Exynos5422 user manual e-Fuse range min~max range is 16~76.
> > if e-Fuse value is out of this range, then thermal sensor may not
> > sense thermal data properly. Refactors the efuse value
> > initialization logic within exynos_map_dt_data function by
> > replacing the nested if-else statements with a switch statement.
> > Ensures proper initialization of efuse values based on the SOC type.
> >
> > Signed-off-by: Anand Moon <linux.amoon@gmail.com>
>
> Same subject typo: s/exymos/exynos/
Thanks for your review comments.
Opps, I will fix this next version it got skipped.
>
> > ---
> > v5: None
> > v4: None
> > v3: Improve the logic to convert if/else to switch
> > ---
> > drivers/thermal/samsung/exynos_tmu.c | 19 +++++++++++++++----
> > 1 file changed, 15 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
> > index ac3b9d2c900c..a71cde0a4b17 100644
> > --- a/drivers/thermal/samsung/exynos_tmu.c
> > +++ b/drivers/thermal/samsung/exynos_tmu.c
> > @@ -899,12 +899,23 @@ static int exynos_map_dt_data(struct platform_device *pdev)
> > data->gain = 8;
> > data->reference_voltage = 16;
> > data->efuse_value = 55;
> > - if (data->soc != SOC_ARCH_EXYNOS5420 &&
> > - data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO)
> > + data->max_efuse_value = 100;
> > + switch (data->soc) {
> > + case SOC_ARCH_EXYNOS3250:
> > + case SOC_ARCH_EXYNOS4412:
> > + case SOC_ARCH_EXYNOS5250:
> > + case SOC_ARCH_EXYNOS5260:
> > data->min_efuse_value = 40;
> > - else
> > + break;
> > + case SOC_ARCH_EXYNOS5420:
> > + case SOC_ARCH_EXYNOS5420_TRIMINFO:
> > + data->min_efuse_value = 16;
> > + data->max_efuse_value = 76;
> > + break;
> > + default:
> > data->min_efuse_value = 0;
> > - data->max_efuse_value = 100;
> > + break;
> > + }
> > break;
> > case SOC_ARCH_EXYNOS5433:
> > data->tmu_set_low_temp = exynos5433_tmu_set_low_temp;
>
> Thanks for taking care of cleaning up this portion of code. IMO, it would be
> interesting to go a bit further in the house keeping by replacing this big
> switch with a set of structures stored as __init sections. The initialization
> finds the right structure and does a structure copy to 'data'.
>
> It is up to you to do this change or not.
I'll be sure to check this out.
Thanks
-Anand
>
> --
>
> <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
>
> Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
> <http://twitter.com/#!/linaroorg> Twitter |
> <http://www.linaro.org/linaro-blog/> Blog
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-04-18 13:37 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-10 6:37 [PATCH v5 0/3] Exynos Thermal code improvement Anand Moon
2025-04-10 6:37 ` [PATCH v5 1/3] drivers/thermal/exynos: Refactor clk_sec initialization inside SOC-specific case Anand Moon
2025-04-15 8:47 ` Lukasz Luba
2025-04-18 8:06 ` Daniel Lezcano
2025-04-18 13:31 ` Anand Moon
2025-04-10 6:37 ` [PATCH v5 2/3] drivers/thermal/exymos: Remove redundant IS_ERR() checks for clk_sec clock Anand Moon
2025-04-15 8:38 ` Lukasz Luba
2025-04-18 8:11 ` Daniel Lezcano
2025-04-18 13:31 ` Anand Moon
2025-04-10 6:37 ` [PATCH v5 3/3] drivers/thermal/exymos: Fixed the efuse min max value for exynos5422 Anand Moon
2025-04-15 8:36 ` Lukasz Luba
2025-04-18 8:19 ` Daniel Lezcano
2025-04-18 13:32 ` Anand Moon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).