thermal: gov_power_allocator: Refactor check_power_actors()
authorLukasz Luba <lukasz.luba@arm.com>
Wed, 20 Dec 2023 23:17:46 +0000 (23:17 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 29 Dec 2023 17:01:00 +0000 (18:01 +0100)
In preparation for a subsequent change, rearrange check_power_actors().

No intentional functional impact.

Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/thermal/gov_power_allocator.c

index 785fff14223d8d3f3daf623a4e2033425a0f8ec4..d9175d9f5e3fd610bccb655f5c2c17fd89a290df 100644 (file)
@@ -581,8 +581,9 @@ static void allow_maximum_power(struct thermal_zone_device *tz, bool update)
  * power actor API. The warning should help to investigate the issue, which
  * could be e.g. lack of Energy Model for a given device.
  *
- * Return: 0 on success, -EINVAL if any cooling device does not implement
- * the power actor API.
+ * If all of the cooling devices currently attached to @tz implement the power
+ * actor API, return the number of them (which may be 0, because some cooling
+ * devices may be attached later). Otherwise, return -EINVAL.
  */
 static int check_power_actors(struct thermal_zone_device *tz,
                              struct power_allocator_params *params)
@@ -597,8 +598,9 @@ static int check_power_actors(struct thermal_zone_device *tz,
                if (!cdev_is_power_actor(instance->cdev)) {
                        dev_warn(&tz->device, "power_allocator: %s is not a power actor\n",
                                 instance->cdev->type);
-                       ret = -EINVAL;
+                       return -EINVAL;
                }
+               ret++;
        }
 
        return ret;
@@ -631,7 +633,7 @@ static int power_allocator_bind(struct thermal_zone_device *tz)
        }
 
        ret = check_power_actors(tz, params);
-       if (ret) {
+       if (ret < 0) {
                dev_warn(&tz->device, "power_allocator: binding failed\n");
                kfree(params);
                return ret;