summaryrefslogtreecommitdiff
path: root/drivers/thermal
diff options
context:
space:
mode:
authorTim Harvey <tharvey@gateworks.com>2015-05-21 08:40:06 -0700
committerStefano Babic <sbabic@denx.de>2015-05-26 14:21:25 +0200
commitbe56de6f332563ba5d4d70d720bf9e053efb7472 (patch)
tree124bbde1dd6c793f3481faa4c164ffda68b24792 /drivers/thermal
parent7254d92ebcedf9dc8dfe76a8d310faf46f46274f (diff)
thermal: imx_thermal: increase critical temperature threshold
The CPU temperature grade from OTP is now used to define the critical threshold at which point we busyloop until we are below, however this threshold is still too low. Instead of 20C below the max CPU temperature, change it to 5C defined now by TEMPERATURE_HOT_DETLA for clarity. Rename 'passive' to 'critical' as that better defines our use case here. Additionally change the output of the busyloop message to show the max CPU temperature as well as current. Before: CPU Temperature is 101 C, too hot to boot, waiting... CPU Temperature is 101 C, too hot to boot, waiting... After: CPU Temperature (101C) too close to max (105C) waiting... CPU Temperature (101C) too close to max (105C) waiting... Cc: Stefan Roese <sr@denx.de> Cc: Eric Nelson <eric.nelson@boundarydevices.com> Cc: Heiko Schocher <hs@denx.de> Cc: Nikita Kiryanov <nikita@compulab.co.il> Cc: Jon Nettleton <jon.nettleton@gmail.com> Cc: Jason Liu <r64343@freescale.com> Cc: Ye Li <b37916@freescale.com> Cc: Fabio Estevam <fabio.estevam@freescale.com> Cc: Christian Gmeiner <christian.gmeiner@gmail.com> Cc: Markus Niebel <Markus.Niebel@tq-group.com> Cc: Peng Fan <b51431@freescale.com> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Diffstat (limited to 'drivers/thermal')
-rw-r--r--drivers/thermal/imx_thermal.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c
index b5dab630ff9..0d893c9d067 100644
--- a/drivers/thermal/imx_thermal.c
+++ b/drivers/thermal/imx_thermal.c
@@ -19,6 +19,8 @@
#include <thermal.h>
#include <imx_thermal.h>
+/* board will busyloop until this many degrees C below CPU max temperature */
+#define TEMPERATURE_HOT_DELTA 5 /* CPU maxT - 5C */
#define FACTOR0 10000000
#define FACTOR1 15976
#define FACTOR2 4297157
@@ -34,7 +36,7 @@
struct thermal_data {
unsigned int fuse;
- int passive;
+ int critical;
int minc;
int maxc;
};
@@ -129,9 +131,10 @@ int imx_thermal_get_temp(struct udevice *dev, int *temp)
cpu_tmp = read_cpu_temperature(dev);
while (cpu_tmp > priv->minc && cpu_tmp < priv->maxc) {
- if (cpu_tmp >= priv->passive) {
- printf("CPU Temperature is %d C, too hot to boot, waiting...\n",
- cpu_tmp);
+ 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 {
@@ -164,9 +167,9 @@ static int imx_thermal_probe(struct udevice *dev)
return -EPERM;
}
- /* set passive cooling temp to max - 20C */
+ /* set critical cooling temp */
get_cpu_temp_grade(&priv->minc, &priv->maxc);
- priv->passive = priv->maxc - 20;
+ priv->critical = priv->maxc - TEMPERATURE_HOT_DELTA;
priv->fuse = fuse;
enable_thermal_clk();