thermal:imx_thermal: enter busywait cooling loop when over max CPU temp

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>
master
Tim Harvey 9 years ago committed by Stefano Babic
parent 1254ff97ab
commit 3b7ad216e2
  1. 16
      drivers/thermal/imx_thermal.c

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

Loading…
Cancel
Save