Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e78eaf45 authored by Sascha Hauer's avatar Sascha Hauer Committed by Zhang Rui
Browse files

thermal: streamline get_trend callbacks



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: default avatarSascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: default avatarCaesar 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: default avatarKeerthy <j-keerthy@ti.com>
Signed-off-by: default avatarEduardo Valentin <edubezval@gmail.com>
Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
parent 826386e7
Loading
Loading
Loading
Loading
+1 −15
Original line number Diff line number Diff line
@@ -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,
+3 −3
Original line number Diff line number Diff line
@@ -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;
}
+3 −1
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
#define ONE_PT_CALIB2		0x2
#define TWO_PT_CALIB		0x3

#include <linux/thermal.h>

struct tsens_device;

struct tsens_sensor {
@@ -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 *);
};

/**
+8 −17
Original line number Diff line number Diff line
@@ -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;
@@ -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)
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -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);