Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 334200
b: refs/heads/master
c: 74051ba
h: refs/heads/master
v: v3
  • Loading branch information
Zhang Rui committed Sep 24, 2012
1 parent 71da070 commit 756efb1
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e3f25e6e5836c4790fbe395ff42e241f372d859d
refs/heads/master: 74051ba50583a5880d4536c1d9333e2493ddfd76
25 changes: 21 additions & 4 deletions trunk/drivers/thermal/thermal_sys.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,19 @@ MODULE_AUTHOR("Zhang Rui");
MODULE_DESCRIPTION("Generic thermal management sysfs support");
MODULE_LICENSE("GPL");

/*
* This structure is used to describe the behavior of
* a certain cooling device on a certain trip point
* in a certain thermal zone
*/
struct thermal_cooling_device_instance {
int id;
char name[THERMAL_NAME_LENGTH];
struct thermal_zone_device *tz;
struct thermal_cooling_device *cdev;
int trip;
unsigned long upper; /* Highest cooling state for this trip point */
unsigned long lower; /* Lowest cooling state for this trip point */
char attr_name[THERMAL_NAME_LENGTH];
struct device_attribute attr;
struct list_head node;
Expand Down Expand Up @@ -800,6 +807,7 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
struct thermal_cooling_device_instance *pos;
struct thermal_zone_device *pos1;
struct thermal_cooling_device *pos2;
unsigned long max_state;
int result;

if (trip >= tz->trips || (trip < 0 && trip != THERMAL_TRIPS_NONE))
Expand All @@ -824,6 +832,11 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
dev->tz = tz;
dev->cdev = cdev;
dev->trip = trip;

cdev->ops->get_max_state(cdev, &max_state);
dev->upper = max_state;
dev->lower = 0;

result = get_idr(&tz->idr, &tz->lock, &dev->id);
if (result)
goto free_mem;
Expand Down Expand Up @@ -1103,11 +1116,15 @@ void thermal_zone_device_update(struct thermal_zone_device *tz)
cdev->ops->get_max_state(cdev, &max_state);

if (temp >= trip_temp)
cur_state = cur_state < max_state ?
(cur_state + 1) : max_state;
cur_state =
cur_state < instance->upper ?
(cur_state + 1) :
instance->upper;
else
cur_state = cur_state > 0 ?
(cur_state - 1) : 0;
cur_state =
cur_state > instance->lower ?
(cur_state - 1) :
instance->lower;

cdev->ops->set_cur_state(cdev, cur_state);
}
Expand Down

0 comments on commit 756efb1

Please sign in to comment.