[U-Boot] [PATCH 6/8] imx8: cpu: get temperature when print cpu desc

Peng Fan
2019-04-25T13:46:09Z

Hi Stefano.

> Subject: Re: [PATCH 6/8] imx8: cpu: get temperature when print cpu desc
>
> Hi Peng,
>
> On 12/04/19 09:55, Peng Fan wrote:
> > Read the temperature when print cpu inforation.
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> > arch/arm/mach-imx/imx8/cpu.c | 35
> +++++++++++++++++++++++++++++++++--
> > 1 file changed, 33 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/arm/mach-imx/imx8/cpu.c
> > b/arch/arm/mach-imx/imx8/cpu.c index 4bbc956f9d..25b010489b 100644
> > --- a/arch/arm/mach-imx/imx8/cpu.c
> > +++ b/arch/arm/mach-imx/imx8/cpu.c
> > @@ -11,6 +11,7 @@
> > #include <dm/lists.h>
> > #include <dm/uclass.h>
> > #include <errno.h>
> > +#include <thermal.h>
> > #include <asm/arch/sci/sci.h>
> > #include <asm/arch/sys_proto.h>
> > #include <asm/arch-imx/cpu.h>
> > @@ -571,15 +572,45 @@ const char *get_core_name(void)
> > return "?";
> > }
> >
> > +#if defined(CONFIG_IMX_SCU_THERMAL)
> > +static int cpu_imx_get_temp(void)
> > +{
>
> This generates a warning when CONFIG_IMX_SCU_THERMAL is not set,
> because it is called later:
>
> > + struct udevice *thermal_dev;
> > + int cpu_tmp, ret;
> > +
> > + ret = uclass_get_device_by_name(UCLASS_THERMAL, "cpu-thermal0",
> > + &thermal_dev);
> > +
> > + if (!ret) {
> > + ret = thermal_get_temp(thermal_dev, &cpu_tmp);
> > + if (ret)
> > + return 0xdeadbeef;
> > + } else {
> > + return 0xdeadbeef;
> > + }
> > +
> > + return cpu_tmp;
> > +}
> > +#endif
> > +
> > int cpu_imx_get_desc(struct udevice *dev, char *buf, int size) {
> > struct cpu_imx_platdata *plat = dev_get_platdata(dev);
> > + int ret;
> >
> > if (size < 100)
> > return -ENOSPC;
> >
> > - snprintf(buf, size, "NXP i.MX8%s Rev%s %s at %u MHz\n",
> > - plat->type, plat->rev, plat->name, plat->freq_mhz);
> > + ret = snprintf(buf, size, "NXP i.MX8%s Rev%s %s at %u MHz",
> > + plat->type, plat->rev, plat->name, plat->freq_mhz);
> > +
> > + if (IS_ENABLED(CONFIG_IMX_SCU_THERMAL)) {
> > + buf = buf + ret;
> > + size = size - ret;
> > + ret = snprintf(buf, size, " at %dC", cpu_imx_get_temp());
> ^---

I not able to connect my PC to verify. But just thinking,
When CONFIG_IMX_SCU_THERMAL not enabled, the compiler
should optimize the if block? Because it is just "if (0)"

Regards,
Peng.

> here it is referenced.
>
> Regards,
> Stefano
>
> > + }
> > +
> > + snprintf(buf + ret, size - ret, "\n");
> >
> > return 0;
> > }
> >
>
>
> --
> ==============================================================
> =======
> 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
> ==============================================================
> =======