Thermal/step_wise: Fix that hysteresis takes no effect
Test command nsh> cat /proc/thermal/cpu-thermal Trips /* Copy from drivers/thermal/thermal_dummy.c */ {.name = "cpu_crit", .temp = 90, .hyst = 5, .type = THERMAL_CRITICAL}, {.name = "cpu_alert1", .temp = 70, .hyst = 5, .type = THERMAL_HOT}, {.name = "cpu_alert0", .temp = 60, .hyst = 5, .type = THERMAL_NORMAL}, Without this patch # Error occured when temperature jump to 69. z:cpu-thermal t:67 t:1 h:16 l:0 c:fan0 s:0|(invalid) z:cpu-thermal t:72 t:1 h:16 l:0 c:fan0 s:1|1 z:cpu-thermal t:69 t:1 h:16 l:0 c:fan0 s:0|0 z:cpu-thermal t:74 t:1 h:16 l:0 c:fan0 s:1|1 With this patch z:cpu-thermal t:67 t:1 h:16 l:0 c:fan0 s:0|(invalid) z:cpu-thermal t:72 t:1 h:16 l:0 c:fan0 s:1|1 z:cpu-thermal t:69 t:1 h:16 l:0 c:fan0 s:1|1 z:cpu-thermal t:74 t:1 h:16 l:0 c:fan0 s:2|2 Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
This commit is contained in:
parent
9899acf20b
commit
c6c89ac262
1 changed files with 6 additions and 0 deletions
|
@ -152,8 +152,10 @@ static int step_wise_throttle(FAR struct thermal_zone_device_s *zdev,
|
|||
enum thermal_trend_e trend;
|
||||
unsigned int next_state;
|
||||
bool throttle = false;
|
||||
int hyst_temp;
|
||||
int trip_temp;
|
||||
|
||||
thermal_zone_get_trip_hyst(zdev, trip, &hyst_temp);
|
||||
thermal_zone_get_trip_temp(zdev, trip, &trip_temp);
|
||||
|
||||
trend = thermal_zone_get_trend(zdev);
|
||||
|
@ -162,6 +164,10 @@ static int step_wise_throttle(FAR struct thermal_zone_device_s *zdev,
|
|||
{
|
||||
throttle = true;
|
||||
}
|
||||
else if (zdev->temperature > trip_temp - hyst_temp)
|
||||
{
|
||||
return OK;
|
||||
}
|
||||
|
||||
list_for_every_entry(&zdev->instance_list, instance,
|
||||
struct thermal_instance_s, zdev_node)
|
||||
|
|
Loading…
Reference in a new issue