
On Wed, 2022-05-25 at 07:26 -0500, Adam Ford wrote:
On Wed, May 25, 2022 at 7:24 AM Andrejs Cainikovs andrejs.cainikovs@toradex.com wrote:
Adam,
So you want me to rebase this patch to upstream, update according to your review, and send this one instead of yours?
Go ahead. Yours has all the requested improvements already applied. I'm still playing catch up from being away for 2 weeks.
Ok, will do. Thanks.
thanks
adam
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@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@toradex.com wrote:
Fixup thermal trips in Linux device tree according to SoC thermal grade.
Signed-off-by: Andrejs Cainikovs
andrejs.cainikovs@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@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