Message ID | 20250410063754.5483-4-linux.amoon@gmail.com |
---|---|
State | New |
Headers | show |
Series | Exynos Thermal code improvement | expand |
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>
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.
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
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;
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(-)