On Mon, Apr 25, 2016 at 11:02:45AM +0800, Caesar Wang wrote: > From: Sascha Hauer <s.hauer at pengutronix.de> > > Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de> > Signed-off-by: Caesar Wang <wxt at rock-chips.com> > Cc: Zhang Rui <rui.zhang at intel.com> > Cc: Eduardo Valentin <edubezval at gmail.com> > Cc: linux-pm at vger.kernel.org > --- > > drivers/thermal/of-thermal.c | 12 ++++++++++++ > include/linux/thermal.h | 4 ++++ > 2 files changed, 16 insertions(+) > > diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c > index b8e509c..8722e63 100644 > --- a/drivers/thermal/of-thermal.c > +++ b/drivers/thermal/of-thermal.c > @@ -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,7 @@ 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; > + tzd->ops->set_trips = of_thermal_set_trips; > tzd->ops->set_emul_temp = of_thermal_set_emul_temp; > mutex_unlock(&tzd->lock); > > diff --git a/include/linux/thermal.h b/include/linux/thermal.h > index e258359..cb64866 100644 > --- a/include/linux/thermal.h > +++ b/include/linux/thermal.h > @@ -336,12 +336,16 @@ struct thermal_genl_event { > * > * Optional: > * @get_trend: a pointer to a function that reads the sensor temperature trend. > + * @@set_trips: a pointer to a function that sets a temperature window. When > + * this window is left the driver must inform the thermal core via > + * thermal_zone_device_update. Ok. We start to see some documentation and expectation being stated here. Nice. Please respin the comment on thermal core too, so drivers that dont use OF will also be aware of this feature and how to use them. > * @set_emul_temp: a pointer to a function that sets sensor emulated > * temperature. > */ > struct thermal_zone_of_device_ops { > int (*get_temp)(void *, int *); > int (*get_trend)(void *, long *); > + int (*set_trips)(void *, int, int); > int (*set_emul_temp)(void *, int); > int (*set_trip_temp)(void *, int, int); > }; > -- > 1.9.1 >