Commit 18dfb0e4 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

thermal: sysfs: Rework the reading of trip point attributes



Rework the _show() callback functions for the trip point temperature,
hysteresis and type attributes to avoid copying the values of struct
thermal_trip fields that they do not use and make them carry out the
same validation checks as the corresponding _store() callback functions.

No intentional functional impact.

Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent be0a3600
Loading
Loading
Loading
Loading
+25 −27
Original line number Diff line number Diff line
@@ -83,25 +83,24 @@ trip_point_type_show(struct device *dev, struct device_attribute *attr,
		     char *buf)
{
	struct thermal_zone_device *tz = to_thermal_zone(dev);
	struct thermal_trip trip;
	int trip_id, result;
	enum thermal_trip_type type;
	int trip_id;

	if (sscanf(attr->attr.name, "trip_point_%d_type", &trip_id) != 1)
		return -EINVAL;

	mutex_lock(&tz->lock);

	if (device_is_registered(dev))
		result = __thermal_zone_get_trip(tz, trip_id, &trip);
	else
		result = -ENODEV;

	if (!device_is_registered(dev)) {
		mutex_unlock(&tz->lock);
		return -ENODEV;
	}

	if (result)
		return result;
	type = tz->trips[trip_id].type;

	switch (trip.type) {
	mutex_unlock(&tz->lock);

	switch (type) {
	case THERMAL_TRIP_CRITICAL:
		return sprintf(buf, "critical\n");
	case THERMAL_TRIP_HOT:
@@ -163,25 +162,23 @@ trip_point_temp_show(struct device *dev, struct device_attribute *attr,
		     char *buf)
{
	struct thermal_zone_device *tz = to_thermal_zone(dev);
	struct thermal_trip trip;
	int trip_id, ret;
	int trip_id, temp;

	if (sscanf(attr->attr.name, "trip_point_%d_temp", &trip_id) != 1)
		return -EINVAL;

	mutex_lock(&tz->lock);

	if (device_is_registered(dev))
		ret = __thermal_zone_get_trip(tz, trip_id, &trip);
	else
		ret = -ENODEV;

	if (!device_is_registered(dev)) {
		mutex_unlock(&tz->lock);
		return -ENODEV;
	}

	if (ret)
		return ret;
	temp = tz->trips[trip_id].temperature;

	return sprintf(buf, "%d\n", trip.temperature);
	mutex_unlock(&tz->lock);

	return sprintf(buf, "%d\n", temp);
}

static ssize_t
@@ -232,22 +229,23 @@ trip_point_hyst_show(struct device *dev, struct device_attribute *attr,
		     char *buf)
{
	struct thermal_zone_device *tz = to_thermal_zone(dev);
	struct thermal_trip trip;
	int trip_id, ret;
	int trip_id, hyst;

	if (sscanf(attr->attr.name, "trip_point_%d_hyst", &trip_id) != 1)
		return -EINVAL;

	mutex_lock(&tz->lock);

	if (device_is_registered(dev))
		ret = __thermal_zone_get_trip(tz, trip_id, &trip);
	else
		ret = -ENODEV;
	if (!device_is_registered(dev)) {
		mutex_unlock(&tz->lock);
		return -ENODEV;
	}

	hyst = tz->trips[trip_id].hysteresis;

	mutex_unlock(&tz->lock);

	return ret ? ret : sprintf(buf, "%d\n", trip.hysteresis);
	return sprintf(buf, "%d\n", hyst);
}

static ssize_t