|
@@ -202,14 +202,23 @@ static void print_bind_err_msg(struct thermal_zone_device *tz,
|
|
|
}
|
|
|
|
|
|
static void __bind(struct thermal_zone_device *tz, int mask,
|
|
|
- struct thermal_cooling_device *cdev)
|
|
|
+ struct thermal_cooling_device *cdev,
|
|
|
+ unsigned long *limits)
|
|
|
{
|
|
|
int i, ret;
|
|
|
|
|
|
for (i = 0; i < tz->trips; i++) {
|
|
|
if (mask & (1 << i)) {
|
|
|
+ unsigned long upper, lower;
|
|
|
+
|
|
|
+ upper = THERMAL_NO_LIMIT;
|
|
|
+ lower = THERMAL_NO_LIMIT;
|
|
|
+ if (limits) {
|
|
|
+ lower = limits[i * 2];
|
|
|
+ upper = limits[i * 2 + 1];
|
|
|
+ }
|
|
|
ret = thermal_zone_bind_cooling_device(tz, i, cdev,
|
|
|
- THERMAL_NO_LIMIT, THERMAL_NO_LIMIT);
|
|
|
+ upper, lower);
|
|
|
if (ret)
|
|
|
print_bind_err_msg(tz, cdev, ret);
|
|
|
}
|
|
@@ -254,7 +263,8 @@ static void bind_cdev(struct thermal_cooling_device *cdev)
|
|
|
if (tzp->tbp[i].match(pos, cdev))
|
|
|
continue;
|
|
|
tzp->tbp[i].cdev = cdev;
|
|
|
- __bind(pos, tzp->tbp[i].trip_mask, cdev);
|
|
|
+ __bind(pos, tzp->tbp[i].trip_mask, cdev,
|
|
|
+ tzp->tbp[i].binding_limits);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -292,7 +302,8 @@ static void bind_tz(struct thermal_zone_device *tz)
|
|
|
if (tzp->tbp[i].match(tz, pos))
|
|
|
continue;
|
|
|
tzp->tbp[i].cdev = pos;
|
|
|
- __bind(tz, tzp->tbp[i].trip_mask, pos);
|
|
|
+ __bind(tz, tzp->tbp[i].trip_mask, pos,
|
|
|
+ tzp->tbp[i].binding_limits);
|
|
|
}
|
|
|
}
|
|
|
exit:
|