]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
thermal: core: Introduce thermal_trip_crossed()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 23 May 2024 16:00:14 +0000 (18:00 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 27 May 2024 11:00:00 +0000 (13:00 +0200)
Add a helper function called thermal_trip_crossed() to be invoked by
__thermal_zone_device_update() in order to notify user space, the
thermal debug code and the zone governor about trip crossing.

Subsequently, this will also be used in the case when a trip point
becomes invalid after being crossed on the way up.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/thermal/thermal_core.c

index 54cce4e523bc510a0b25621317f2a56a31c32e97..c119ef920793d38965ce1f2861c328bac2b384ec 100644 (file)
@@ -467,6 +467,21 @@ static void thermal_governor_trip_crossed(struct thermal_governor *governor,
                governor->trip_crossed(tz, trip, crossed_up);
 }
 
+static void thermal_trip_crossed(struct thermal_zone_device *tz,
+                                const struct thermal_trip *trip,
+                                struct thermal_governor *governor,
+                                bool crossed_up)
+{
+       if (crossed_up) {
+               thermal_notify_tz_trip_up(tz, trip);
+               thermal_debug_tz_trip_up(tz, trip);
+       } else {
+               thermal_notify_tz_trip_down(tz, trip);
+               thermal_debug_tz_trip_down(tz, trip);
+       }
+       thermal_governor_trip_crossed(governor, tz, trip, crossed_up);
+}
+
 static int thermal_trip_notify_cmp(void *ascending, const struct list_head *a,
                                   const struct list_head *b)
 {
@@ -506,18 +521,12 @@ void __thermal_zone_device_update(struct thermal_zone_device *tz,
                handle_thermal_trip(tz, td, &way_up_list, &way_down_list);
 
        list_sort(&way_up_list, &way_up_list, thermal_trip_notify_cmp);
-       list_for_each_entry(td, &way_up_list, notify_list_node) {
-               thermal_notify_tz_trip_up(tz, &td->trip);
-               thermal_debug_tz_trip_up(tz, &td->trip);
-               thermal_governor_trip_crossed(governor, tz, &td->trip, true);
-       }
+       list_for_each_entry(td, &way_up_list, notify_list_node)
+               thermal_trip_crossed(tz, &td->trip, governor, true);
 
        list_sort(NULL, &way_down_list, thermal_trip_notify_cmp);
-       list_for_each_entry(td, &way_down_list, notify_list_node) {
-               thermal_notify_tz_trip_down(tz, &td->trip);
-               thermal_debug_tz_trip_down(tz, &td->trip);
-               thermal_governor_trip_crossed(governor, tz, &td->trip, false);
-       }
+       list_for_each_entry(td, &way_down_list, notify_list_node)
+               thermal_trip_crossed(tz, &td->trip, governor, false);
 
        if (governor->manage)
                governor->manage(tz);