thermal:imx_thermal: enter busywait cooling loop when over max CPU temp
authorTim Harvey <tharvey@gateworks.com>
Tue, 9 Jun 2015 13:40:22 +0000 (06:40 -0700)
committerStefano Babic <sbabic@denx.de>
Fri, 10 Jul 2015 07:23:32 +0000 (09:23 +0200)
Remove the check for temperature being within the min/max range and enter the
busywait cooling loop whenever the CPU temperature is over the critical temp.
This fixes the issue where if a board was booted at a temp greater than
the CPU temperature max, it would skip the loop and never indicate or try
to address the overtemp issue.

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

index 0d893c9d0674e6bd4cca1be7aab94c3ee17031e6..42ca8d0b6b3de9ac51d7f33689c91a283857e844 100644 (file)
@@ -130,16 +130,12 @@ int imx_thermal_get_temp(struct udevice *dev, int *temp)
        int cpu_tmp = 0;
 
        cpu_tmp = read_cpu_temperature(dev);
-       while (cpu_tmp > priv->minc && cpu_tmp < priv->maxc) {
-               if (cpu_tmp >= priv->critical) {
-                       printf("CPU Temperature (%dC) too close to max (%dC)",
-                              cpu_tmp, priv->maxc);
-                       puts(" waiting...\n");
-                       udelay(5000000);
-                       cpu_tmp = read_cpu_temperature(dev);
-               } else {
-                       break;
-               }
+       while (cpu_tmp >= priv->critical) {
+               printf("CPU Temperature (%dC) too close to max (%dC)",
+                      cpu_tmp, priv->maxc);
+               puts(" waiting...\n");
+               udelay(5000000);
+               cpu_tmp = read_cpu_temperature(dev);
        }
 
        *temp = cpu_tmp;