mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-14 19:26:58 +02:00
imx: imx9: fixup thermal trips from fuses
Read i.MX9 CPU temp grade from fuses and fixup thermal trips in Linux
device-tree accordingly.
Based on commit 0543a1ed27
("imx8m: fixup thermal trips")
Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
This commit is contained in:
parent
0e00632a83
commit
3233349fa6
@ -507,8 +507,53 @@ int print_cpuinfo(void)
|
|||||||
return 0;
|
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 - 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;
|
||||||
|
}
|
||||||
|
|
||||||
int ft_system_setup(void *blob, struct bd_info *bd)
|
int ft_system_setup(void *blob, struct bd_info *bd)
|
||||||
{
|
{
|
||||||
|
if (fixup_thermal_trips(blob, "cpu-thermal"))
|
||||||
|
printf("Failed to update cpu-thermal trip(s)");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user