Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c8da6cde authored by Marek Szyprowski's avatar Marek Szyprowski Committed by Eduardo Valentin
Browse files

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: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
CC: stable@vger.kernel.org # v4.6+
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: default avatarEduardo Valentin <edubezval@gmail.com>
parent 88fc6f73
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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