summaryrefslogtreecommitdiff
path: root/drivers/thermal/thermal_helpers.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2023-01-23 18:52:53 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2023-01-23 18:52:53 +0100
commita2c81dc59d41e92362ab7d41d0c15471ea50637d (patch)
tree1141751d023d11a7ed3494f998662944e7c6265e /drivers/thermal/thermal_helpers.c
parent6c54b7bc8a31ce0f7cc7f8deef05067df414f1d8 (diff)
parent976cb655c940bd76c76c7925cc2740357e2f6803 (diff)
Merge back thermal control material for 6.3.
Diffstat (limited to 'drivers/thermal/thermal_helpers.c')
-rw-r--r--drivers/thermal/thermal_helpers.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/thermal/thermal_helpers.c b/drivers/thermal/thermal_helpers.c
index 56aa2e88f34f..8977d5ddc23c 100644
--- a/drivers/thermal/thermal_helpers.c
+++ b/drivers/thermal/thermal_helpers.c
@@ -83,7 +83,7 @@ int __thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp)
int ret = -EINVAL;
int count;
int crit_temp = INT_MAX;
- enum thermal_trip_type type;
+ struct thermal_trip trip;
lockdep_assert_held(&tz->lock);
@@ -91,10 +91,9 @@ int __thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp)
if (IS_ENABLED(CONFIG_THERMAL_EMULATION) && tz->emul_temperature) {
for (count = 0; count < tz->num_trips; count++) {
- ret = tz->ops->get_trip_type(tz, count, &type);
- if (!ret && type == THERMAL_TRIP_CRITICAL) {
- ret = tz->ops->get_trip_temp(tz, count,
- &crit_temp);
+ ret = __thermal_zone_get_trip(tz, count, &trip);
+ if (!ret && trip.type == THERMAL_TRIP_CRITICAL) {
+ crit_temp = trip.temperature;
break;
}
}
@@ -164,29 +163,30 @@ EXPORT_SYMBOL_GPL(thermal_zone_get_temp);
*/
void __thermal_zone_set_trips(struct thermal_zone_device *tz)
{
- int low = -INT_MAX;
- int high = INT_MAX;
- int trip_temp, hysteresis;
+ struct thermal_trip trip;
+ int low = -INT_MAX, high = INT_MAX;
int i, ret;
lockdep_assert_held(&tz->lock);
- if (!tz->ops->set_trips || !tz->ops->get_trip_hyst)
+ if (!tz->ops->set_trips)
return;
for (i = 0; i < tz->num_trips; i++) {
int trip_low;
- tz->ops->get_trip_temp(tz, i, &trip_temp);
- tz->ops->get_trip_hyst(tz, i, &hysteresis);
+ ret = __thermal_zone_get_trip(tz, i , &trip);
+ if (ret)
+ return;
- trip_low = trip_temp - hysteresis;
+ trip_low = trip.temperature - trip.hysteresis;
if (trip_low < tz->temperature && trip_low > low)
low = trip_low;
- if (trip_temp > tz->temperature && trip_temp < high)
- high = trip_temp;
+ if (trip.temperature > tz->temperature &&
+ trip.temperature < high)
+ high = trip.temperature;
}
/* No need to change trip points */