[U-Boot] [PATCH] thermal: imx_thermal: increase critical temperature threshold
Stefano Babic
sbabic at denx.de
Tue May 26 14:23:10 CEST 2015
On 21/05/2015 17:40, Tim Harvey wrote:
> 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 at denx.de>
> Cc: Eric Nelson <eric.nelson at boundarydevices.com>
> Cc: Heiko Schocher <hs at denx.de>
> Cc: Nikita Kiryanov <nikita at compulab.co.il>
> Cc: Jon Nettleton <jon.nettleton at gmail.com>
> Cc: Jason Liu <r64343 at freescale.com>
> Cc: Ye Li <b37916 at freescale.com>
> Cc: Fabio Estevam <fabio.estevam at freescale.com>
> Cc: Christian Gmeiner <christian.gmeiner at gmail.com>
> Cc: Markus Niebel <Markus.Niebel at tq-group.com>
> Cc: Peng Fan <b51431 at freescale.com>
> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
> ---
> drivers/thermal/imx_thermal.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c
> index b5dab63..0d893c9 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();
>
Applied to u-boot-imx, thanks!
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
More information about the U-Boot
mailing list