Skip to content

Commit

Permalink
thermal: streamline get_trend callbacks
Browse files Browse the repository at this point in the history
The .get_trend callback in struct thermal_zone_device_ops has
the prototype:
        int (*get_trend) (struct thermal_zone_device *, int,
                          enum thermal_trend *);
whereas the .get_trend callback in struct thermal_zone_of_device_ops
has:
        int (*get_trend)(void *, long *);

Streamline both prototypes and add the trip argument to the OF callback
aswell and use enum thermal_trend * instead of an integer pointer.

While the OF prototype may be the better one, this should be decided at
framework level and not on OF level.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: Eduardo Valentin <edubezval@gmail.com>
Cc: linux-pm@vger.kernel.org
Reviewed-by: Keerthy <j-keerthy@ti.com>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
  • Loading branch information
Sascha Hauer authored and Zhang Rui committed Sep 27, 2016
1 parent 826386e commit e78eaf4
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 37 deletions.
16 changes: 1 addition & 15 deletions drivers/thermal/of-thermal.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,25 +202,11 @@ static int of_thermal_get_trend(struct thermal_zone_device *tz, int trip,
enum thermal_trend *trend)
{
struct __thermal_zone *data = tz->devdata;
long dev_trend;
int r;

if (!data->ops->get_trend)
return -EINVAL;

r = data->ops->get_trend(data->sensor_data, &dev_trend);
if (r)
return r;

/* TODO: These intervals might have some thresholds, but in core code */
if (dev_trend > 0)
*trend = THERMAL_TREND_RAISING;
else if (dev_trend < 0)
*trend = THERMAL_TREND_DROPPING;
else
*trend = THERMAL_TREND_STABLE;

return 0;
return data->ops->get_trend(data->sensor_data, trip, trend);
}

static int of_thermal_bind(struct thermal_zone_device *thermal,
Expand Down
6 changes: 3 additions & 3 deletions drivers/thermal/qcom/tsens.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ static int tsens_get_temp(void *data, int *temp)
return tmdev->ops->get_temp(tmdev, s->id, temp);
}

static int tsens_get_trend(void *data, long *temp)
static int tsens_get_trend(void *p, int trip, enum thermal_trend *trend)
{
const struct tsens_sensor *s = data;
const struct tsens_sensor *s = p;
struct tsens_device *tmdev = s->tmdev;

if (tmdev->ops->get_trend)
return tmdev->ops->get_trend(tmdev, s->id, temp);
return tmdev->ops->get_trend(tmdev, s->id, trend);

return -ENOTSUPP;
}
Expand Down
4 changes: 3 additions & 1 deletion drivers/thermal/qcom/tsens.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#define ONE_PT_CALIB2 0x2
#define TWO_PT_CALIB 0x3

#include <linux/thermal.h>

struct tsens_device;

struct tsens_sensor {
Expand Down Expand Up @@ -50,7 +52,7 @@ struct tsens_ops {
void (*disable)(struct tsens_device *);
int (*suspend)(struct tsens_device *);
int (*resume)(struct tsens_device *);
int (*get_trend)(struct tsens_device *, int, long *);
int (*get_trend)(struct tsens_device *, int, enum thermal_trend *);
};

/**
Expand Down
25 changes: 8 additions & 17 deletions drivers/thermal/ti-soc-thermal/ti-thermal-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ static int ti_thermal_get_trip_temp(struct thermal_zone_device *thermal,
return 0;
}

static int __ti_thermal_get_trend(void *p, long *trend)
static int __ti_thermal_get_trend(void *p, int trip, enum thermal_trend *trend)
{
struct ti_thermal_data *data = p;
struct ti_bandgap *bgp;
Expand All @@ -252,22 +252,6 @@ static int __ti_thermal_get_trend(void *p, long *trend)
if (ret)
return ret;

*trend = tr;

return 0;
}

/* Get the temperature trend callback functions for thermal zone */
static int ti_thermal_get_trend(struct thermal_zone_device *thermal,
int trip, enum thermal_trend *trend)
{
int ret;
long tr;

ret = __ti_thermal_get_trend(thermal->devdata, &tr);
if (ret)
return ret;

if (tr > 0)
*trend = THERMAL_TREND_RAISING;
else if (tr < 0)
Expand All @@ -278,6 +262,13 @@ static int ti_thermal_get_trend(struct thermal_zone_device *thermal,
return 0;
}

/* Get the temperature trend callback functions for thermal zone */
static int ti_thermal_get_trend(struct thermal_zone_device *thermal,
int trip, enum thermal_trend *trend)
{
return __ti_thermal_get_trend(thermal->devdata, trip, trend);
}

/* Get critical temperature callback functions for thermal zone */
static int ti_thermal_get_crit_temp(struct thermal_zone_device *thermal,
int *temp)
Expand Down
2 changes: 1 addition & 1 deletion include/linux/thermal.h
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ struct thermal_genl_event {
*/
struct thermal_zone_of_device_ops {
int (*get_temp)(void *, int *);
int (*get_trend)(void *, long *);
int (*get_trend)(void *, int, enum thermal_trend *);
int (*set_trips)(void *, int, int);
int (*set_emul_temp)(void *, int);
int (*set_trip_temp)(void *, int, int);
Expand Down

0 comments on commit e78eaf4

Please sign in to comment.