Messages in this thread | | | Subject | Re: [PATCH v7 3/3] thermal: tegra: add get_trend ops | From | Daniel Lezcano <> | Date | Mon, 18 Feb 2019 11:27:34 +0100 |
| |
On 03/01/2019 11:12, Wei Ni wrote: > Add support for get_trend ops that allows soctherm > sensors to be used with the step-wise governor. > > Signed-off-by: Wei Ni <wni@nvidia.com> > --- > drivers/thermal/tegra/soctherm.c | 34 ++++++++++++++++++++++++++++++++++ > 1 file changed, 34 insertions(+) > > diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c > index fd2703c0cfc5..864205af104b 100644 > --- a/drivers/thermal/tegra/soctherm.c > +++ b/drivers/thermal/tegra/soctherm.c > @@ -488,9 +488,43 @@ static int tegra_thermctl_set_trip_temp(void *data, int trip, int temp) > return 0; > } > > +static int tegra_thermctl_get_trend(void *data, int trip, > + enum thermal_trend *trend) > +{ > + struct tegra_thermctl_zone *zone = data; > + struct thermal_zone_device *tz = zone->tz; > + int trip_temp, temp, last_temp, ret; > + > + if (!tz) > + return -EINVAL; > + > + ret = tz->ops->get_trip_temp(zone->tz, trip, &trip_temp); > + if (ret) > + return ret; > + > + mutex_lock(&tz->lock);
No need to use the mutex here.
Why not ?
temp = READ_ONCE(tz->temperature); last_temp = READ_ONCE(tz->last_temperature);
> + temp = tz->temperature; > + last_temp = tz->last_temperature; > + mutex_unlock(&tz->lock); > + > + if (temp > trip_temp) { > + if (temp >= last_temp) > + *trend = THERMAL_TREND_RAISING; > + else > + *trend = THERMAL_TREND_STABLE; > + } else if (temp < trip_temp) { > + *trend = THERMAL_TREND_DROPPING; > + } else { > + *trend = THERMAL_TREND_STABLE; > + } > + > + return 0; > +} > + > static const struct thermal_zone_of_device_ops tegra_of_thermal_ops = { > .get_temp = tegra_thermctl_get_temp, > .set_trip_temp = tegra_thermctl_set_trip_temp, > + .get_trend = tegra_thermctl_get_trend, > }; > > static int get_hot_temp(struct thermal_zone_device *tz, int *trip, int *temp) >
-- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog
| |