|
@@ -798,132 +798,6 @@ int thermal_build_list_of_policies(char *buf)
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
-/* sys I/F for cooling device */
|
|
|
-static ssize_t
|
|
|
-thermal_cooling_device_type_show(struct device *dev,
|
|
|
- struct device_attribute *attr, char *buf)
|
|
|
-{
|
|
|
- struct thermal_cooling_device *cdev = to_cooling_device(dev);
|
|
|
-
|
|
|
- return sprintf(buf, "%s\n", cdev->type);
|
|
|
-}
|
|
|
-
|
|
|
-static ssize_t
|
|
|
-thermal_cooling_device_max_state_show(struct device *dev,
|
|
|
- struct device_attribute *attr, char *buf)
|
|
|
-{
|
|
|
- struct thermal_cooling_device *cdev = to_cooling_device(dev);
|
|
|
- unsigned long state;
|
|
|
- int ret;
|
|
|
-
|
|
|
- ret = cdev->ops->get_max_state(cdev, &state);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
- return sprintf(buf, "%ld\n", state);
|
|
|
-}
|
|
|
-
|
|
|
-static ssize_t
|
|
|
-thermal_cooling_device_cur_state_show(struct device *dev,
|
|
|
- struct device_attribute *attr, char *buf)
|
|
|
-{
|
|
|
- struct thermal_cooling_device *cdev = to_cooling_device(dev);
|
|
|
- unsigned long state;
|
|
|
- int ret;
|
|
|
-
|
|
|
- ret = cdev->ops->get_cur_state(cdev, &state);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
- return sprintf(buf, "%ld\n", state);
|
|
|
-}
|
|
|
-
|
|
|
-static ssize_t
|
|
|
-thermal_cooling_device_cur_state_store(struct device *dev,
|
|
|
- struct device_attribute *attr,
|
|
|
- const char *buf, size_t count)
|
|
|
-{
|
|
|
- struct thermal_cooling_device *cdev = to_cooling_device(dev);
|
|
|
- unsigned long state;
|
|
|
- int result;
|
|
|
-
|
|
|
- if (sscanf(buf, "%ld\n", &state) != 1)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- if ((long)state < 0)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
- result = cdev->ops->set_cur_state(cdev, state);
|
|
|
- if (result)
|
|
|
- return result;
|
|
|
- return count;
|
|
|
-}
|
|
|
-
|
|
|
-static struct device_attribute dev_attr_cdev_type =
|
|
|
-__ATTR(type, 0444, thermal_cooling_device_type_show, NULL);
|
|
|
-static DEVICE_ATTR(max_state, 0444,
|
|
|
- thermal_cooling_device_max_state_show, NULL);
|
|
|
-static DEVICE_ATTR(cur_state, 0644,
|
|
|
- thermal_cooling_device_cur_state_show,
|
|
|
- thermal_cooling_device_cur_state_store);
|
|
|
-
|
|
|
-static ssize_t
|
|
|
-thermal_cooling_device_trip_point_show(struct device *dev,
|
|
|
- struct device_attribute *attr, char *buf)
|
|
|
-{
|
|
|
- struct thermal_instance *instance;
|
|
|
-
|
|
|
- instance =
|
|
|
- container_of(attr, struct thermal_instance, attr);
|
|
|
-
|
|
|
- if (instance->trip == THERMAL_TRIPS_NONE)
|
|
|
- return sprintf(buf, "-1\n");
|
|
|
- else
|
|
|
- return sprintf(buf, "%d\n", instance->trip);
|
|
|
-}
|
|
|
-
|
|
|
-static struct attribute *cooling_device_attrs[] = {
|
|
|
- &dev_attr_cdev_type.attr,
|
|
|
- &dev_attr_max_state.attr,
|
|
|
- &dev_attr_cur_state.attr,
|
|
|
- NULL,
|
|
|
-};
|
|
|
-
|
|
|
-static const struct attribute_group cooling_device_attr_group = {
|
|
|
- .attrs = cooling_device_attrs,
|
|
|
-};
|
|
|
-
|
|
|
-static const struct attribute_group *cooling_device_attr_groups[] = {
|
|
|
- &cooling_device_attr_group,
|
|
|
- NULL,
|
|
|
-};
|
|
|
-
|
|
|
-static ssize_t
|
|
|
-thermal_cooling_device_weight_show(struct device *dev,
|
|
|
- struct device_attribute *attr, char *buf)
|
|
|
-{
|
|
|
- struct thermal_instance *instance;
|
|
|
-
|
|
|
- instance = container_of(attr, struct thermal_instance, weight_attr);
|
|
|
-
|
|
|
- return sprintf(buf, "%d\n", instance->weight);
|
|
|
-}
|
|
|
-
|
|
|
-static ssize_t
|
|
|
-thermal_cooling_device_weight_store(struct device *dev,
|
|
|
- struct device_attribute *attr,
|
|
|
- const char *buf, size_t count)
|
|
|
-{
|
|
|
- struct thermal_instance *instance;
|
|
|
- int ret, weight;
|
|
|
-
|
|
|
- ret = kstrtoint(buf, 0, &weight);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
-
|
|
|
- instance = container_of(attr, struct thermal_instance, weight_attr);
|
|
|
- instance->weight = weight;
|
|
|
-
|
|
|
- return count;
|
|
|
-}
|
|
|
/* Device management */
|
|
|
|
|
|
/**
|
|
@@ -1175,7 +1049,7 @@ __thermal_cooling_device_register(struct device_node *np,
|
|
|
cdev->ops = ops;
|
|
|
cdev->updated = false;
|
|
|
cdev->device.class = &thermal_class;
|
|
|
- cdev->device.groups = cooling_device_attr_groups;
|
|
|
+ thermal_cooling_device_setup_sysfs(cdev);
|
|
|
cdev->devdata = devdata;
|
|
|
dev_set_name(&cdev->device, "cooling_device%d", cdev->id);
|
|
|
result = device_register(&cdev->device);
|