]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
imx: Generalize fixup_thermal_trips
authorPeng Fan <peng.fan@nxp.com>
Thu, 19 Sep 2024 04:01:34 +0000 (12:01 +0800)
committerFabio Estevam <festevam@gmail.com>
Thu, 19 Sep 2024 03:12:41 +0000 (00:12 -0300)
i.MX8M and i.MX9 have duplicated fixup_thermal_trips, so move it
to arch/arm/mach-imx/fdt.c to avoid duplicated code.

The critial temperature point for i.MX9 set to "maxc - 5" back to give
some margin.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
arch/arm/include/asm/mach-imx/sys_proto.h
arch/arm/mach-imx/fdt.c
arch/arm/mach-imx/imx8m/soc.c
arch/arm/mach-imx/imx9/soc.c

index c146a223b715452ed304c30a4c05697f25e71fbf..31ace977d2bd9264fd0f0a43e0c79e18d5a65673 100644 (file)
@@ -280,4 +280,5 @@ enum boot_device get_boot_device(void);
 
 int disable_cpu_nodes(void *blob, const char * const *nodes_path,
                      u32 num_disabled_cores, u32 max_cores);
+int fixup_thermal_trips(void *blob, const char *name);
 #endif
index df6fbf51dbaeb25c79c7cb0d5e747d55d7b67528..ac782e3ee636684efbaeb0bc1b295ab7f9d4974f 100644 (file)
@@ -85,3 +85,45 @@ int disable_cpu_nodes(void *blob, const char * const *nodes_path, u32 num_disabl
 
        return 0;
 }
+
+int fixup_thermal_trips(void *blob, const char *name)
+{
+       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 - 5);
+               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;
+}
index b8a026fb8403c9856f3e177cb77abfe3c559b2d9..46974bf0618d53886a9c629f7993b329d852fd2f 100644 (file)
@@ -1215,48 +1215,6 @@ static int cleanup_nodes_for_efi(void *blob)
        return 0;
 }
 
-static int fixup_thermal_trips(void *blob, const char *name)
-{
-       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;
-}
-
 #define OPTEE_SHM_SIZE 0x00400000
 static int ft_add_optee_node(void *fdt, struct bd_info *bd)
 {
index 6364709278234cb8446bc068247188bbbc81164d..04b21207a28716bf736d15426edfa888d8f18933 100644 (file)
@@ -538,48 +538,6 @@ int print_cpuinfo(void)
        return 0;
 }
 
-static int fixup_thermal_trips(void *blob, const char *name)
-{
-       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;
-}
-
 void build_info(void)
 {
        u32 fw_version, sha1, res, status;