Message ID | 20200520082153.20765-1-agust@denx.de |
---|---|
State | Accepted |
Commit | 4e7413a998ba5666aa4ee0b4f49789f52b1281b1 |
Headers | show |
Series | thermal: imx_scu_thermal: prevent boot hang with zero pdata | expand |
On Wed, 20 May 2020 10:21:53 +0200 Anatolij Gustschin agust at denx.de wrote: > Should initialization of pdata values have failed for some reason, > we end up in endless loop when getting the CPU temperature value > and can not boot. Check alert value in pdata and only retry reading > temperature if alert value is not zero. Also shorten the temperature > info string. > > Signed-off-by: Anatolij Gustschin <agust at denx.de> > --- > drivers/thermal/imx_scu_thermal.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) Applied. -- Anatolij
diff --git a/drivers/thermal/imx_scu_thermal.c b/drivers/thermal/imx_scu_thermal.c index 321f905e3a..83ec753802 100644 --- a/drivers/thermal/imx_scu_thermal.c +++ b/drivers/thermal/imx_scu_thermal.c @@ -61,13 +61,15 @@ int imx_sc_thermal_get_temp(struct udevice *dev, int *temp) return ret; while (cpu_temp >= pdata->alert) { - printf("CPU Temperature (%dC) has beyond alert (%dC), close to critical (%dC)", + printf("CPU Temperature (%dC) beyond alert (%dC), close to critical (%dC)", cpu_temp, pdata->alert, pdata->critical); puts(" waiting...\n"); mdelay(pdata->polling_delay); ret = read_temperature(dev, &cpu_temp); if (ret) return ret; + if (cpu_temp >= pdata->alert && !pdata->alert) + break; } *temp = cpu_temp / 1000;
Should initialization of pdata values have failed for some reason, we end up in endless loop when getting the CPU temperature value and can not boot. Check alert value in pdata and only retry reading temperature if alert value is not zero. Also shorten the temperature info string. Signed-off-by: Anatolij Gustschin <agust at denx.de> --- drivers/thermal/imx_scu_thermal.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)