Skip to content

Commit

Permalink
Thermal: Introduce multiple cooling states support
Browse files Browse the repository at this point in the history
This is because general active cooling devices, like fans,
may have multiple speeds, which can be mapped to different cooling states.

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Reviewed-by: Rafael J. Wysocki <rjw@sisk.pl>
Reviewed-by: Valentin, Eduardo <eduardo.valentin@ti.com>
  • Loading branch information
Zhang Rui committed Sep 24, 2012
1 parent 0d7614f commit e3f25e6
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions drivers/thermal/thermal_sys.c
Original file line number Diff line number Diff line change
Expand Up @@ -1059,6 +1059,7 @@ void thermal_zone_device_update(struct thermal_zone_device *tz)
enum thermal_trip_type trip_type;
struct thermal_cooling_device_instance *instance;
struct thermal_cooling_device *cdev;
unsigned long cur_state, max_state;

mutex_lock(&tz->lock);

Expand Down Expand Up @@ -1098,10 +1099,17 @@ void thermal_zone_device_update(struct thermal_zone_device *tz)

cdev = instance->cdev;

cdev->ops->get_cur_state(cdev, &cur_state);
cdev->ops->get_max_state(cdev, &max_state);

if (temp >= trip_temp)
cdev->ops->set_cur_state(cdev, 1);
cur_state = cur_state < max_state ?
(cur_state + 1) : max_state;
else
cdev->ops->set_cur_state(cdev, 0);
cur_state = cur_state > 0 ?
(cur_state - 1) : 0;

cdev->ops->set_cur_state(cdev, cur_state);
}
break;
case THERMAL_TRIP_PASSIVE:
Expand Down

0 comments on commit e3f25e6

Please sign in to comment.