diff options
| author | Marek Szyprowski <[email protected]> | 2018-04-16 12:11:53 +0200 |
|---|---|---|
| committer | Eduardo Valentin <[email protected]> | 2018-05-06 13:45:12 -0700 |
| commit | 08d725cd93602312df2bc4208e4672a34c107d89 (patch) | |
| tree | 51c18fd06bb54374670a6db6a5b2dde3377793b1 | |
| parent | 0eb875d88aaa98ceb7134cb54638e49b35ab0946 (diff) | |
thermal: exynos: Propagate error value from tmu_read()
tmu_read() in case of Exynos4210 might return error for out of bound
values. Current code ignores such value, what leads to reporting critical
temperature value. Add proper error code propagation to exynos_get_temp()
function.
Signed-off-by: Marek Szyprowski <[email protected]>
CC: [email protected] # v4.6+
Signed-off-by: Bartlomiej Zolnierkiewicz <[email protected]>
Signed-off-by: Eduardo Valentin <[email protected]>
| -rw-r--r-- | drivers/thermal/samsung/exynos_tmu.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index 986cbd01aaaa..ac83f721db24 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c @@ -892,6 +892,7 @@ static void exynos7_tmu_control(struct platform_device *pdev, bool on) static int exynos_get_temp(void *p, int *temp) { struct exynos_tmu_data *data = p; + int value, ret = 0; if (!data || !data->tmu_read || !data->enabled) return -EINVAL; @@ -899,12 +900,16 @@ static int exynos_get_temp(void *p, int *temp) mutex_lock(&data->lock); clk_enable(data->clk); - *temp = code_to_temp(data, data->tmu_read(data)) * MCELSIUS; + value = data->tmu_read(data); + if (value < 0) + ret = value; + else + *temp = code_to_temp(data, value) * MCELSIUS; clk_disable(data->clk); mutex_unlock(&data->lock); - return 0; + return ret; } #ifdef CONFIG_THERMAL_EMULATION |