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. Additionally, refactors the efuse initialization logic in exynos_map_dt_data() by replacing nested if-else blocks with a switch statement for better readability and maintainability. Ensures correct efuse setup based on SoC type. Signed-off-by: Anand Moon <linux.amoon@xxxxxxxxx> --- v7: drop the Rb Llukasz, as we dropped the nested switch to set efuse. v6: Add Rb Lukasz and fix typo in subject v5: None V4: None --- drivers/thermal/samsung/exynos_tmu.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index 5f017a78f437..3d12e95703bf 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c @@ -884,6 +884,22 @@ static int exynos_map_dt_data(struct platform_device *pdev) case SOC_ARCH_EXYNOS4412: case SOC_ARCH_EXYNOS5250: case SOC_ARCH_EXYNOS5260: + data->tmu_set_low_temp = exynos4412_tmu_set_low_temp; + data->tmu_set_high_temp = exynos4412_tmu_set_high_temp; + data->tmu_disable_low = exynos4412_tmu_disable_low; + data->tmu_disable_high = exynos4210_tmu_disable_high; + data->tmu_set_crit_temp = exynos4412_tmu_set_crit_temp; + data->tmu_initialize = exynos4412_tmu_initialize; + data->tmu_control = exynos4210_tmu_control; + data->tmu_read = exynos4412_tmu_read; + data->tmu_set_emulation = exynos4412_tmu_set_emulation; + data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; + data->gain = 8; + data->reference_voltage = 16; + data->efuse_value = 55; + data->min_efuse_value = 0; + data->max_efuse_value = 100; + break; case SOC_ARCH_EXYNOS5420: case SOC_ARCH_EXYNOS5420_TRIMINFO: data->tmu_set_low_temp = exynos4412_tmu_set_low_temp; @@ -899,12 +915,8 @@ 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->min_efuse_value = 40; - else - data->min_efuse_value = 0; - data->max_efuse_value = 100; + data->min_efuse_value = 16; + data->max_efuse_value = 76; break; case SOC_ARCH_EXYNOS5433: data->tmu_set_low_temp = exynos5433_tmu_set_low_temp; -- 2.50.1