]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
thermal: trip: Split thermal_zone_device_set_mode()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 18 Jul 2024 19:00:35 +0000 (21:00 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 23 Jul 2024 12:18:15 +0000 (14:18 +0200)
Pull a wrapper around thermal zone .change_mode() callback out of
thermal_zone_device_set_mode() because it will be used elsewhere
subsequently.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/2206793.irdbgypaU6@rjwysocki.net
drivers/thermal/thermal_core.c

index f6e700e48aadb8c0f0ab13e449a30823ce815a13..48bf267d090d5f209a40c5461aaeb6a67362ebbc 100644 (file)
@@ -272,6 +272,22 @@ static int __init thermal_register_governors(void)
        return ret;
 }
 
+static int __thermal_zone_device_set_mode(struct thermal_zone_device *tz,
+                                         enum thermal_device_mode mode)
+{
+       if (tz->ops.change_mode) {
+               int ret;
+
+               ret = tz->ops.change_mode(tz, mode);
+               if (ret)
+                       return ret;
+       }
+
+       tz->mode = mode;
+
+       return 0;
+}
+
 /*
  * Zone update section: main control loop applied to each zone while monitoring
  * in polling mode. The monitoring is done using a workqueue.
@@ -540,7 +556,7 @@ monitor:
 static int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
                                        enum thermal_device_mode mode)
 {
-       int ret = 0;
+       int ret;
 
        mutex_lock(&tz->lock);
 
@@ -548,14 +564,15 @@ static int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
        if (mode == tz->mode) {
                mutex_unlock(&tz->lock);
 
-               return ret;
+               return 0;
        }
 
-       if (tz->ops.change_mode)
-               ret = tz->ops.change_mode(tz, mode);
+       ret = __thermal_zone_device_set_mode(tz, mode);
+       if (ret) {
+               mutex_unlock(&tz->lock);
 
-       if (!ret)
-               tz->mode = mode;
+               return ret;
+       }
 
        __thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
 
@@ -566,7 +583,7 @@ static int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
        else
                thermal_notify_tz_disable(tz);
 
-       return ret;
+       return 0;
 }
 
 int thermal_zone_device_enable(struct thermal_zone_device *tz)