thermal: core: Rework and rename __for_each_thermal_trip()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 7 Aug 2023 18:11:07 +0000 (20:11 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 17 Aug 2023 09:25:22 +0000 (11:25 +0200)
Rework the currently unused __for_each_thermal_trip() to pass original
pointers to struct thermal_trip objects to the callback, so it can be
used for updating trip data (e.g. temperatures), rename it to
for_each_thermal_trip() and make it available to modular drivers.

Suggested-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/thermal/thermal_core.h
drivers/thermal/thermal_trip.c
include/linux/thermal.h

index 17c1bbe..04513f9 100644 (file)
@@ -54,10 +54,6 @@ int for_each_thermal_cooling_device(int (*cb)(struct thermal_cooling_device *,
 int for_each_thermal_governor(int (*cb)(struct thermal_governor *, void *),
                              void *thermal_governor);
 
-int __for_each_thermal_trip(struct thermal_zone_device *,
-                           int (*cb)(struct thermal_trip *, void *),
-                           void *);
-
 struct thermal_zone_device *thermal_zone_get_by_id(int id);
 
 struct thermal_attr {
index 907f3a4..53115cf 100644 (file)
@@ -9,28 +9,26 @@
  */
 #include "thermal_core.h"
 
-int __for_each_thermal_trip(struct thermal_zone_device *tz,
-                           int (*cb)(struct thermal_trip *, void *),
-                           void *data)
+int for_each_thermal_trip(struct thermal_zone_device *tz,
+                         int (*cb)(struct thermal_trip *, void *),
+                         void *data)
 {
        int i, ret;
-       struct thermal_trip trip;
 
        lockdep_assert_held(&tz->lock);
 
-       for (i = 0; i < tz->num_trips; i++) {
-
-               ret = __thermal_zone_get_trip(tz, i, &trip);
-               if (ret)
-                       return ret;
+       if (!tz->trips)
+               return -ENODATA;
 
-               ret = cb(&trip, data);
+       for (i = 0; i < tz->num_trips; i++) {
+               ret = cb(&tz->trips[i], data);
                if (ret)
                        return ret;
        }
 
        return 0;
 }
+EXPORT_SYMBOL_GPL(for_each_thermal_trip);
 
 int thermal_zone_get_num_trips(struct thermal_zone_device *tz)
 {
index f1b43d8..f1d7364 100644 (file)
@@ -289,6 +289,9 @@ int thermal_zone_get_trip(struct thermal_zone_device *tz, int trip_id,
 int thermal_zone_set_trip(struct thermal_zone_device *tz, int trip_id,
                          const struct thermal_trip *trip);
 
+int for_each_thermal_trip(struct thermal_zone_device *tz,
+                         int (*cb)(struct thermal_trip *, void *),
+                         void *data);
 int thermal_zone_get_num_trips(struct thermal_zone_device *tz);
 
 int thermal_zone_get_crit_temp(struct thermal_zone_device *tz, int *temp);