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>
This commit is contained in:
parent
1254ff97ab
commit
3b7ad216e2
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue