From: Tim Harvey <tharvey@gateworks.com>
Date: Wed, 8 Jul 2015 22:49:43 +0000 (-0700)
Subject: thermal: imx_thermal: fix busywait if IMX6 temp <0C
X-Git-Tag: v2025.01-rc5-pxa1908~12416^2~55
X-Git-Url: http://git.dujemihanovic.xyz/img/static/html/index.html?a=commitdiff_plain;h=425640256a7c5e9259f7583ee4eca1f3b70f8032;p=u-boot.git

thermal: imx_thermal: fix busywait if IMX6 temp <0C

The temperature calculation must be typecasted to keep the compiler
from sign extending a negative value prior to division.

This fixes an issue where if the CPU temperature is <0C it will get stuck
in the busywait loop until the CPU heats up to 0C.

Cc: Ye Li <b37916@freescale.com>
Cc: Jason Liu <r64343@freescale.com>
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
---

diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c
index 42ca8d0b6b..3c6c9679f9 100644
--- a/drivers/thermal/imx_thermal.c
+++ b/drivers/thermal/imx_thermal.c
@@ -115,7 +115,7 @@ static int read_cpu_temperature(struct udevice *dev)
 	writel(TEMPSENSE0_FINISHED, &anatop->tempsense0_clr);
 
 	/* milli_Tmeas = c2 - Nmeas * c1 */
-	temperature = (c2 - n_meas * c1)/1000;
+	temperature = (long)(c2 - n_meas * c1)/1000;
 
 	/* power down anatop thermal sensor */
 	writel(TEMPSENSE0_POWER_DOWN, &anatop->tempsense0_set);