|
@@ -218,7 +218,8 @@ 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,
|
|
|
- unsigned long *limits)
|
|
|
+ unsigned long *limits,
|
|
|
+ unsigned int weight)
|
|
|
{
|
|
|
int i, ret;
|
|
|
|
|
@@ -233,7 +234,8 @@ static void __bind(struct thermal_zone_device *tz, int mask,
|
|
|
upper = limits[i * 2 + 1];
|
|
|
}
|
|
|
ret = thermal_zone_bind_cooling_device(tz, i, cdev,
|
|
|
- upper, lower);
|
|
|
+ upper, lower,
|
|
|
+ weight);
|
|
|
if (ret)
|
|
|
print_bind_err_msg(tz, cdev, ret);
|
|
|
}
|
|
@@ -280,7 +282,8 @@ static void bind_cdev(struct thermal_cooling_device *cdev)
|
|
|
continue;
|
|
|
tzp->tbp[i].cdev = cdev;
|
|
|
__bind(pos, tzp->tbp[i].trip_mask, cdev,
|
|
|
- tzp->tbp[i].binding_limits);
|
|
|
+ tzp->tbp[i].binding_limits,
|
|
|
+ tzp->tbp[i].weight);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -319,7 +322,8 @@ static void bind_tz(struct thermal_zone_device *tz)
|
|
|
continue;
|
|
|
tzp->tbp[i].cdev = pos;
|
|
|
__bind(tz, tzp->tbp[i].trip_mask, pos,
|
|
|
- tzp->tbp[i].binding_limits);
|
|
|
+ tzp->tbp[i].binding_limits,
|
|
|
+ tzp->tbp[i].weight);
|
|
|
}
|
|
|
}
|
|
|
exit:
|
|
@@ -713,7 +717,8 @@ passive_store(struct device *dev, struct device_attribute *attr,
|
|
|
thermal_zone_bind_cooling_device(tz,
|
|
|
THERMAL_TRIPS_NONE, cdev,
|
|
|
THERMAL_NO_LIMIT,
|
|
|
- THERMAL_NO_LIMIT);
|
|
|
+ THERMAL_NO_LIMIT,
|
|
|
+ THERMAL_WEIGHT_DEFAULT);
|
|
|
}
|
|
|
mutex_unlock(&thermal_list_lock);
|
|
|
if (!tz->passive_delay)
|
|
@@ -931,6 +936,9 @@ static const struct attribute_group *cooling_device_attr_groups[] = {
|
|
|
* @lower: the Minimum cooling state can be used for this trip point.
|
|
|
* THERMAL_NO_LIMIT means no lower limit,
|
|
|
* and the cooling device can be in cooling state 0.
|
|
|
+ * @weight: The weight of the cooling device to be bound to the
|
|
|
+ * thermal zone. Use THERMAL_WEIGHT_DEFAULT for the
|
|
|
+ * default value
|
|
|
*
|
|
|
* This interface function bind a thermal cooling device to the certain trip
|
|
|
* point of a thermal zone device.
|
|
@@ -941,7 +949,8 @@ static const struct attribute_group *cooling_device_attr_groups[] = {
|
|
|
int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
|
|
|
int trip,
|
|
|
struct thermal_cooling_device *cdev,
|
|
|
- unsigned long upper, unsigned long lower)
|
|
|
+ unsigned long upper, unsigned long lower,
|
|
|
+ unsigned int weight)
|
|
|
{
|
|
|
struct thermal_instance *dev;
|
|
|
struct thermal_instance *pos;
|
|
@@ -986,6 +995,7 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
|
|
|
dev->upper = upper;
|
|
|
dev->lower = lower;
|
|
|
dev->target = THERMAL_NO_TARGET;
|
|
|
+ dev->weight = weight;
|
|
|
|
|
|
result = get_idr(&tz->idr, &tz->lock, &dev->id);
|
|
|
if (result)
|