mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 18:04:48 +00:00
imx: Generalize fixup_thermal_trips
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>
This commit is contained in:
parent
5ee773e60b
commit
d0fe80890a
4 changed files with 43 additions and 84 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue