|
@@ -101,6 +101,17 @@ static int of_thermal_get_temp(struct thermal_zone_device *tz,
|
|
|
return data->ops->get_temp(data->sensor_data, temp);
|
|
|
}
|
|
|
|
|
|
+static int of_thermal_set_trips(struct thermal_zone_device *tz,
|
|
|
+ int low, int high)
|
|
|
+{
|
|
|
+ struct __thermal_zone *data = tz->devdata;
|
|
|
+
|
|
|
+ if (!data->ops || !data->ops->set_trips)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ return data->ops->set_trips(data->sensor_data, low, high);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* of_thermal_get_ntrips - function to export number of available trip
|
|
|
* points.
|
|
@@ -427,6 +438,14 @@ thermal_zone_of_add_sensor(struct device_node *zone,
|
|
|
|
|
|
tzd->ops->get_temp = of_thermal_get_temp;
|
|
|
tzd->ops->get_trend = of_thermal_get_trend;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * The thermal zone core will calculate the window if they have set the
|
|
|
+ * optional set_trips pointer.
|
|
|
+ */
|
|
|
+ if (ops->set_trips)
|
|
|
+ tzd->ops->set_trips = of_thermal_set_trips;
|
|
|
+
|
|
|
tzd->ops->set_emul_temp = of_thermal_set_emul_temp;
|
|
|
mutex_unlock(&tzd->lock);
|
|
|
|