[PATCH] imx8m: fixup thermal trips

Andrejs Cainikovs andrejs.cainikovs at toradex.com
Wed May 25 14:24:24 CEST 2022


Adam,

So you want me to rebase this patch to upstream, update according to
your review, and send this one instead of yours?

Best regards,
Andrejs Cainikovs.

On Wed, 2022-05-25 at 07:21 -0500, Adam Ford wrote:
> On Wed, May 25, 2022 at 7:19 AM Andrejs Cainikovs
> <andrejs.cainikovs at toradex.com> wrote:
> > 
> > Hi Adam,
> > 
> > On Wed, 2022-05-25 at 06:41 -0500, Adam Ford wrote:
> > > On Thu, May 12, 2022 at 5:13 AM Andrejs Cainikovs
> > > <andrejs.cainikovs at toradex.com> wrote:
> > > > 
> > > > Fixup thermal trips in Linux device tree according to SoC
> > > > thermal
> > > > grade.
> > > > 
> > > > Signed-off-by: Andrejs Cainikovs
> > > > <andrejs.cainikovs at toradex.com>
> > > > ---
> > > >  arch/arm/mach-imx/imx8m/soc.c | 50
> > > > +++++++++++++++++++++++++++++++++++
> > > >  1 file changed, 50 insertions(+)
> > > > 
> > > > diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-
> > > > imx/imx8m/soc.c
> > > > index e93ecd2846..b451ece91f 100644
> > > > --- a/arch/arm/mach-imx/imx8m/soc.c
> > > > +++ b/arch/arm/mach-imx/imx8m/soc.c
> > > > @@ -1001,6 +1001,49 @@ static int disable_cpu_nodes(void *blob,
> > > > u32
> > > > disabled_cores)
> > > >         return 0;
> > > >  }
> > > > 
> > > > +int fixup_thermal_trips(void *blob, const char *name)
> > > 
> > > Is there any reason this function cannot be static?
> > 
> > No, this function should be static indeed.
> 
> With that change:
> 
> Tested-by: Adam Ford <aford173 at gmail.com>
> 
> > 
> > > 
> > > > +{
> > > > +       int minc, maxc;
> > > > +       int node, trip;
> > > > +
> > > > +       node = fdt_path_offset(blob, "/thermal-zones");
> > > > +       if (node < 0)
> > > > +               return node;
> > > > +
> > > > +       node = fdt_subnode_offset(blob, node, name);
> > > > +       if (node < 0)
> > > > +               return node;
> > > > +
> > > > +       node = fdt_subnode_offset(blob, node, "trips");
> > > > +       if (node < 0)
> > > > +               return node;
> > > > +
> > > > +       get_cpu_temp_grade(&minc, &maxc);
> > > > +
> > > > +       fdt_for_each_subnode(trip, blob, node) {
> > > > +               const char *type;
> > > > +               int temp, ret;
> > > > +
> > > > +               type = fdt_getprop(blob, trip, "type", NULL);
> > > > +               if (!type)
> > > > +                       continue;
> > > > +
> > > > +               temp = 0;
> > > > +               if (!strcmp(type, "critical")) {
> > > > +                       temp = 1000 * maxc;
> > > > +               } else if (!strcmp(type, "passive")) {
> > > > +                       temp = 1000 * (maxc - 10);
> > > > +               }
> > > > +               if (temp) {
> > > > +                       ret = fdt_setprop_u32(blob, trip,
> > > > "temperature", temp);
> > > > +                       if (ret)
> > > > +                               return ret;
> > > > +               }
> > > > +       }
> > > > +
> > > > +       return 0;
> > > > +}
> > > > +
> > > >  int ft_system_setup(void *blob, bd_t *bd)
> > > >  {
> > > >  #ifdef CONFIG_IMX8MQ
> > > > @@ -1128,6 +1171,13 @@ usb_modify_speed:
> > > >                 disable_cpu_nodes(blob, 2);
> > > >  #endif
> > > > 
> > > > +       if (fixup_thermal_trips(blob, "cpu-thermal"))
> > > > +               printf("Failed to update cpu-thermal trip(s)");
> > > > +#ifdef CONFIG_IMX8MP
> > > > +       if (fixup_thermal_trips(blob, "soc-thermal"))
> > > > +               printf("Failed to update soc-thermal trip(s)");
> > > > +#endif
> > > > +
> > > >         return ft_add_optee_node(blob, bd);
> > > >  }
> > > >  #endif
> > > > --
> > > > 2.34.1
> > > > 
> > > 
> > 
> 



More information about the U-Boot mailing list